一、前言

      在最近使用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}"

三、小结

      通过这次深度的认识,对其中的一些玄机有了了解,就是代表了后面的操作。学习要深度的理解,理解了才能更加熟练。