一、前言
在最近使用ssh框架做的系统中,在struts2中的配置文件中,总会写类似下面的代码,其中中,结构有点乱,当初只是照着模板敲,没有深度的思考。后面慢慢的开发发现了其中的玄机。
<struts>
<package name="department" namespace="/" extends="struts-default">
<action name="departmentAction_*" method="{1}" class="departmentAction">
<result name="listAction">WEB-INF/jsp/department/list.jsp</result>
<result name="action2action" type="redirectAction" >departmentAction_getAllDepartment.action</result>
<result name="addUI">/WEB-INF/jsp/department/add.jsp</result>
<result name="updateUI">/WEB-INF/jsp/department/update.jsp</result>
</action>
</package>
</struts>
二、到底是什么?
其实用到method={数字}的时候,相应的前面的action是要出现*通配符来搭配的。比如一个小例子:
<action name="user_*" class="UserAction" method="{1}">
在对应的jsp中:
<form action="user_userLogin2" method="post">
那么struts会将user_userLogin2这个action按照user_*的格式解析,把号对应位置的字符串取出来,放到method={}这个中括号里替代数字的位置,1就是指第一个号位置的字符串。这里看不出数字不同的区别,在:
<action name="*_*" class="com.xy.{1}Action" method="{2}">
中就看得明白了,你提交的action都会按格式分解,比如jsp里是User_add,那么就会变成:
class="com.xy.UserAction" method="{add}"
三、小结
通过这次深度的认识,对其中的一些玄机有了了解,就是代表了后面的操作。学习要深度的理解,理解了才能更加熟练。