我是靠谱客的博主 强健马里奥,最近开发中收集的这篇文章主要介绍struts中3种情况通配符的使用方法 及 动态方法调用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、概念

应用可能有很多个action 声明,可把多个相似的映射关系简化为一个映射关系的机制 (多个Action类----一个action标签)
     通配符映射规则:

一般使用“*” 匹配零个或多个字符,被通配符匹配到的 URI 字符串的子串可以用 {1}, {2} 来引用。 {1} 匹配第一个子串, {2} 匹配第二个子串…以此类推。
若指定的动作不存在, Struts 将会尝试把这个 URI 与任何一个包含着通配符 * 的动作名进行匹配 。
若带有通配符的匹配多个, 以最后一个匹配为准。


二、三种通配符的使用方法(具体看代码示例)

1.不同的Action类中,同样功能的方法通配

2.同一个Action类中,不同功能的方法通配

3.不同Action类中,不同功能的方法的通配

 

三、动态方法调用

动态方法调用: 通过在 url 中指定方法名动态调用 Action 中的方法

语法形式:action名字+!+调用的Action方法名。

Struts 2动态方法默认可用, 则可在 struts.xml 文件中添加 constant 元素禁用该功能:

<constant name="struts.enable.DynamicMethodInvocation" value="false"/>


  1. <!-- 示例一: 不同的Action类中,同样功能的方法通配。如下:通配到了不同action中的add方法 -->  
  2.         <action name="*_add" class="com.tianci.struts2_xxxx.{1}"  
  3.             method="add">  
  4.             <result name="add">  
  5.             /struts2_xxxx/{1}.jsp  
  6.             </result>  
  7.         </action>  
  8.   
  9.   
  10.   
  11.         <!-- 示例二:同一个Action类中,不同功能的方法通配。 -->  
  12.         <!-- 都能匹配上,则在最前面的优先覆盖掉后面的。如:本例中测试,accAction_add.action 时。匹配到的结果是:add方法。 -->  
  13.         <action name="OrderAction_*" class="com.tianci.struts2_xxxx.accAction"  
  14.             method="{1}">  
  15.             <result name="add">  
  16.                 /struts2_xxxx/Add.jsp  
  17.             </result>  
  18.             <result name="delete">  
  19.                 /struts2_xxxx/Delete.jsp  
  20.             </result>  
  21.         </action>  
  22.   
  23.   
  24.         <!-- 示例三:不同Action类中,不同功能的方法的通配。 -->  
  25.         <!-- 示例中可以通配到这些方法:/struts2_wildcard/CustomerAction_add.action; /struts2_xxxx/CustomerAction_delete.action;   
  26.             /struts2_xxxx/accAction_add.action; /struts2_xxxx/accAction_delete.action; -->  
  27.         <action name="*_*" class="com.tianci.struts2_xxxx.{1}"  
  28.             method="{2}">  
  29.             <result name="add">  
  30.                 /struts2_xxxx/{1}.jsp  
  31.             </result>  
  32.             <result name="delete">  
  33.                 /struts2_xxxx/Delete.jsp  
  34.             </result>  
  35.         </action>  
  36.   
  37.   
  38.         <!-- 动态方法调用 语法形式:action名字+!+调用的Action方法名-->  
  39.         <!--示例:如在本地访问时,项目名为:struts2;namespace名为:struts2_wildcard  
  40.         则访问 accAction中add方法的url为"http://localhost:8080/struts2/struts2_xxxx/accAction!add"  -->  
  41.         <action name="OrderAction" class="com.tianci.struts2_xxxx.accAction">  
  42.             <result name="add">  
  43.                 /struts2_xxxx/Add.jsp  
  44.             </result>  
  45.         </action>  

最后

以上就是强健马里奥为你收集整理的struts中3种情况通配符的使用方法 及 动态方法调用的全部内容,希望文章能够帮你解决struts中3种情况通配符的使用方法 及 动态方法调用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部