struts 通配符


使用通配符,将配置量降到最低,不过,一定要遵守“约定优于配置”的原则。
如:访问/namespace/Studentadd,使用如下的配置:

<action name="Student*" class="com.struts2.action.StudentAction" method="{1}">
    <result>/Student{1}_success.jsp</result>
</action>


先根据路径找到Student*这个Action,即StudentAction。然后再去寻找所{1}代表的方法,即寻找add方法。
即{1}代表是add,*代表的也是add,最后的返回也是Studentadd_success.jsp
所以,如果命名规则定义的很优秀,可以使用以下的配置来进行Action的配置(即开发预定优秀)。

<action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
    <result>/{1}_{2}_success.jsp</result>
</action>


在这里,一定要注意大小写的问题,否则类的匹配可能出现问题。
如果有以下三个Action配置,则首先匹配最精确的配置:

<action name="Student_add" class="com.struts2.action.StudentAction" method="add">
<action name="Student_*" class="com.struts2.action.StudentAction" method="{1}">
<action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">


所以首先匹配第一个Action。













如struts中配有如下几个action,ManagerUserAction中有与之对应的方法
 
<action name="addUser" class="com.netshuai.action.ManagerUserAction" method="add">
    <result name="success">/addUser.jsp</result>
</action>
<action name="delUser" class="com.netshuai.action.ManagerUserAction" method="del">
    <result name="success">/delUser.jsp</result>
</action>
<action name="updateUser" class="com.netshuai.action.ManagerUserAction" method="update">
    <result name="success">/updateUser.jsp</result>
</action>

如果使用通配符,可以省略写成一个action
<action name="*User" class="com.netshuai.action.ManagerUserAction" method="{1}">
    <result name="success">/{1}User.jsp</result>
</action>
其中,*为通配符,{1}为*所替换的内容,如用户访问的是addUser.action,则*就被自动替换为add,{1}处也自动使用add替换。

若开发时使用统一的命名规范,则所有action可使用类似如下的一条替换即可
<action name="*_*" class="com.netshuai.action.{1}Action" method="{2}">
    <result name="success">/{2}_{1}Success.jsp</result>
</action>
如上所示,所有文件都采用统一的命名规范,第一个*为分类名称,第二个*为操作名,{1}和{2}分别代表第一个和第二个*的替换值,所有action实现类都命名为分类名称+Action。
如分类名称为User,操作名为add,则访问的action名为User_add.action,action实现类名为UserAction,返回页面的名为add_UserSuccess.jsp
另:{0}代表显示所有通配符内容,如<result name="success">/{2}_{1}Success.jsp</result>改为<result name="success">/{0}Success.jsp</result>,则返回的名为User_addSuccess.jsp 

猜你喜欢

转载自zhangyulong.iteye.com/blog/1040134