Strust2

来源:互联网 发布:淘宝价格战 编辑:程序博客网 时间:2024/05/04 09:42

在web.xml 中配置

引入struts.xml

        <filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>*.action</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher></filter-mapping><filter-mapping><filter-name>struts2</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping>

Action 搜索顺序  http://localhost:8080/path1/path2/path3/monthSum.action

第一步:判断package是否存在,如  path1/path2/path3/ 

1.存在则再判断该action(monthSum)是否存在,不存在先去默认的namespace的package里寻找。若还没有就报错

2.不存在   则检查上一级路径的path是否存在(直到默认namespace)重复第一步, 最后没有则报错


URL根据  package中的namespace  和 action的 name进行匹配

   Struts2算是挺旧的了,这里就没有深入去学习,只是了解个大概,对它留点印象。


动态方法调用

1.指定method属性       每一个方法都要在xml中配置 繁琐

<package name="default" namespace="/" extends="struts-default"><action name="monthSum" class="com.leaderSearch.monthSum.action.MonthSumAction"><result>/result.jsp</result></action><action name="addAction" method="add" class="com.leaderSearch.monthSum.action.MonthSumAction"><result>/add.jsp</result></action><action name="updateAction" method="update" class="com.leaderSearch.monthSum.action.MonthSumAction"><result>/update.jsp</result></action></package>
访问的URL 如:http://localhost:8080/addAction.action

2.感叹号方式

      可以根据URL来匹配方法名并执行  URL中的add是 monthSumAction中的方法,该方法返回一个String   "monthSumAdd" 在result配置中对应相应的页面返回

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant><package name="monthSum" extends="default"><action name="monthSum" class="com.leaderSearch.monthSum.action.MonthSumAction"><result name="monthSumAdd">/WEB-INF/page/monthSum/monthSumAdd.jsp</result><result name="monthSumEdit">/WEB-INF/page/monthSum/monthSumEdit.jsp</result></action></package>
访问的URL 如:http://localhost:8080/monthSum!add.action

3.通配符方式

* 对应着输入的URL,然后作为参数传递到{1},{2}中区               该方法官方推荐

<package name="monthSum" extends="default"><action name="*_*" method="{2}" class="com.leaderSearch.monthSum.action.{1}"><result name="monthSumAdd">/WEB-INF/page/monthSum/monthSumAdd.jsp</result><result name="monthSumEdit">/WEB-INF/page/monthSum/monthSumEdit.jsp</result></action></package>

访问的URL 如:http://localhost:8080/MonthSumAction_add.action



struts2 中 前台向action中传值时有 三种方式

   如在post方法下 , 有个 input框

1. action属性接收参数 

  name = username    后台 只要有个成员变量名为 userName 就直接将值 传入

2. DomainModel接收参数

后台 有多个对象并且其都有 username属性, 那么   前台的name = 对象名.username

3.ModelDriven 接收参数

action 实现 ModelDriven 接口,并将要传入值的对象作为参数代替泛型,      前台仍可以是   name = username




0 0
原创粉丝点击