Struts中配置通配符

原理:当有addUser.action请求时,如果不能在当前应用中找到完全相同的addUser名字的Action时,通配符配置这时就起作用了,按通配原则,它便和上面的name=User”相配成功,这里不难明了此时代指的内容是add,再来看method恰恰是引用第一个的内容,所以它的method此时的完整名为addUser,它刚好和com.asmUserAction中的addUser方法相对,所以它会去addUser方法,再来看下面的result配置所指代的页面,它也用到了{1},所以它的完整页面是/addUser.jsp。其实如果我们有良好的编程命名习惯,所有的Action我们都只需要进行一次配置。*举例:规定所有的Action类都用XXXAction来命名,类中所有的CRUD方法都用add/del/update/query。Jsp页面也用add/del/update/query_XXX.jsp这样的形式。即配置文件可以写成如下形式: <action name=_class=“com.asm.{2}Action”method=“{1}”>
  1. <font style="color:teal;"><</font><font style="color:rgb(63, 127, 127);">result </font><font style="color:rgb(127, 0, 127);">name</font>=<font style="color:rgb(42, 0, 255);">"success"</font><font style="color:teal;">></font>{1}_{2}.jsp<font style="color:teal;"></</font><font style="color:rgb(63, 127, 127);">result</font><font style="color:teal;">></font>
</action>

Name中第一个代表CRUD操作的名字,第二个代表类的名字。

工程 LinkSSH 中的代码

  1. <!-- User模块 -->
  2. <!-- user_*访问请求的通配,method={1}指请求中第一个通配符 -->
  3. <action name="user_*" class="loginAction" method="{1}">
  4. <result name="loginOK" type="redirect">/index.jsp</result>
  5. </action>
  6. <!-- Customer模块 -->
  7. <action name="customer_*" class="customerAction" method="{1}">
  8. <result name="success">/jsp/success.jsp</result>
  9. <result name="list">/jsp/customer/list.jsp</result>
  10. <result name="edit">/jsp/customer/edit.jsp</result>
  11. <interceptor-ref name="userInterceptor" />
  12. <interceptor-ref name="defaultStack" />
  13. </action>
  14. <!-- 联系人模块 -->
  15. <action name="linkman_*" class="linkManAction" method="{1}">
  16. <result name="success">/jsp/success.jsp</result>
  17. <result name="list">/jsp/linkman/list.jsp</result>
  18. <result name="edit">/jsp/linkman/edit.jsp</result>
  19. <interceptor-ref name="userInterceptor" />
  20. <interceptor-ref name="defaultStack" />
  21. </action>
  22. <!-- 使用通配符合并上面的两个模块 -->
  23. <!-- 补充说明{0}是代表name中所有的*组合。 -->
  24. <action name="*_*" class="{1}Action" method="{2}">
  25. <result name="success">/jsp/success.jsp</result>
  26. <result name="list">/jsp/{1}/list.jsp</result>
  27. <result name="edit">/jsp/{1}/edit.jsp</result>
  28. <interceptor-ref name="userInterceptor" />
  29. <interceptor-ref name="defaultStack" />
  30. </action>