struts知识

来源:互联网 发布:淘宝好的童装店铺 编辑:程序博客网 时间:2024/06/05 19:52

Struts开发步骤

1、创建数据库;

2、写实体对象,在项目中导入sqljar包,并写数据库的连接代码;

3、写数据库的操作接口,写相应的实现方法;

4、写实体的form类,form必须继承ActionForm

5、struts-config.xml中配置form;配置格式如下:

<form-beans>

        <form-bean name="form别名"type="form的路径">

</form-bean>

 </form-beans>

 

6、编写显示页面,注意使用struts的标签,在表单提交时的action为:

<html:form action = “xx.do?operate=action操作的名称” method=“”>

7、写action类,可以把所有的处理action写在一个action中,但是这个处理action必须继承自DispatcherAction;本来是要重写它里面的execuate方法的,现在只需将execuate方法名称改为上面提交的action操作的名称;注意方法后面的参数为:ActionMapping mapping, ActionForm form,

       HttpServletRequest request, HttpServletResponse response

8、filter用来处理struts中的乱码问题,在web.xml中配置;格式如下:

<filter-mapping>

       <filter-name>filter名称</filter-name>

        <url-pattern>/xx.do</url-pattern>

 </filter-mapping>

9、配置struts-config.xml中的action-mapping;格式如下:

<action-mappings>

    <action

    path="/ action操作的名称"parameter="operate" scope="request"type="action的路径"input="/action处理后去的地方"

    name="form别名">

    <forwardname="search"path="/action处理后去的地方"></forward>

    </action>(这里的forward效果跟上面的input作用基本想同,如果用forward的话,在action出来后return时用mapping.findForward(“action处理后去的地方”);如果用input的话return时用mapping.getInputForward();

</action-mappings>

 

Struts的工作工作原理图

1,首先通过ActionServleturl-pattern属性将所有“*.do”的请求拦截。

2,打开ActionServlet的源码可以发现,它的process方法很简单,只是调用RequestProcessorprocess方法,把自己requestresponse传给RequestProcessorprocess方法,从而实现业务委托。而RequestProcessor是哪儿来的呢?打开struts的配置文件,会发现里面的<controller>节点里定义的className就是对RequestProcessor的定义。

3RequestProcessorprocess方法这是会创建ActionMapping对象(根据<actionMapping>下的<action>建立),否则就报404错误,比如请求的是/add.do,那么在创建ActionMapping对象时就会找<action>path”/add”的,如果找到了,就创建ActionMapping对象,找不到就报404

4,创建ActionForm对象,从3里创建的ActionMapping对象取得当前ActionForm的名称,根据type创建一个ActionForm对象(如果存在,就不创建)。

5,通过3中的ActionMapping对象创建Action对象,并调用它的execute方法。

6,通过3中的ActionMapping对象创建ActionForward对象。(实际上就是个Map

 

Struts标签的使用

1、Struts标签库的引入:

²    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>

²    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

²    <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>

2Struts标签库的分类:

²    html标签库:textselectoptionoptionCollection

²    logic标签库:emptyequaliterate

²    bean标签库:writedefinesize

3、Struts标签的通用属性:idnamepropertyscope

Id:自定义标签创建的脚本变量名;

Name:指出作用域范围里的bean名字。

Property:指出Form中的某个属性,可以在其中检索值。如果没有标明,则使用对象本身的值;

Scope:定义了bean在什么范围类使用;

4、使用html标签简化用户查询,根据用户名和籍贯查询,当前页显示

<html:form action=“search.do" method="post">

              用户名:<html:text property=“user.uname" />

                     静态籍贯:<html:select property=user.address">

                  <html:option value="">不限</html:option>

                     <html:option value=“shanxi”>陕西</html:option>

                     <html:option value=“henan”>河南</html:option>

              </html:select>

              动态籍贯:<html:select property=user.address">

              <html:optionsCollection name=addrList" label=aname"                             value=aid" /></html:select>

</html:form>

5、使用loigc:iterate标签在当前页面输出查询结果:

<c:forEach items="${list}" var=user">

      ${user.name}

  …

</c:forEach>相当于:

<logic:iterate id=user" name="list">

</logic:iterate>

6bean:write用于数字和日期的格式化显示:

<logic:iterate id=user" name="list">

   <bean:write name=user" property=salary" format="#,###" />

   <bean:write name=user" property=birthday" format="yyyyMMdd" />

</logic:iterate>

7 bean:define标签没有输出,根据其nameproperty属性取得Bean并重新定义,以其id属性为名,定义变量供JSP脚本使用,并定义pageScopeBean供其他标签使用。<bean:define id="dataList" name="list" type="java.util.List"  scope="request" /> 共找到 <%=dataList.size()%>条记录

8  bean:size标签以其id属性为名,重新定义变量,变量的值为通过nameproperty取得的集合元素的元素个数。<bean:size id="count" name="list" />   共找到 ${count }条记录

       9注意:

1,要使用bean:write格式化数字,数字在actionForm或实体类中必须是数值类型

2,要使用bean:write格式化日期,日期在actionForm或实体类中必须是java.util.Date类型

 

 

 

 

 

原创粉丝点击