概述
一、概念
应用可能有很多个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"/>
- <!-- 示例一: 不同的Action类中,同样功能的方法通配。如下:通配到了不同action中的add方法 -->
- <action name="*_add" class="com.tianci.struts2_xxxx.{1}"
- method="add">
- <result name="add">
- /struts2_xxxx/{1}.jsp
- </result>
- </action>
- <!-- 示例二:同一个Action类中,不同功能的方法通配。 -->
- <!-- 都能匹配上,则在最前面的优先覆盖掉后面的。如:本例中测试,accAction_add.action 时。匹配到的结果是:add方法。 -->
- <action name="OrderAction_*" class="com.tianci.struts2_xxxx.accAction"
- method="{1}">
- <result name="add">
- /struts2_xxxx/Add.jsp
- </result>
- <result name="delete">
- /struts2_xxxx/Delete.jsp
- </result>
- </action>
- <!-- 示例三:不同Action类中,不同功能的方法的通配。 -->
- <!-- 示例中可以通配到这些方法:/struts2_wildcard/CustomerAction_add.action; /struts2_xxxx/CustomerAction_delete.action;
- /struts2_xxxx/accAction_add.action; /struts2_xxxx/accAction_delete.action; -->
- <action name="*_*" class="com.tianci.struts2_xxxx.{1}"
- method="{2}">
- <result name="add">
- /struts2_xxxx/{1}.jsp
- </result>
- <result name="delete">
- /struts2_xxxx/Delete.jsp
- </result>
- </action>
- <!-- 动态方法调用 语法形式:action名字+!+调用的Action方法名-->
- <!--示例:如在本地访问时,项目名为:struts2;namespace名为:struts2_wildcard
- 则访问 accAction中add方法的url为"http://localhost:8080/struts2/struts2_xxxx/accAction!add" -->
- <action name="OrderAction" class="com.tianci.struts2_xxxx.accAction">
- <result name="add">
- /struts2_xxxx/Add.jsp
- </result>
- </action>
最后
以上就是强健马里奥为你收集整理的struts中3种情况通配符的使用方法 及 动态方法调用的全部内容,希望文章能够帮你解决struts中3种情况通配符的使用方法 及 动态方法调用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复