在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