Struts2 通配符

通配符映射: 一个Web 应用可能有成百上千个action 声明. 可以利用struts 提供的通配符映射机制把多个彼此相似的映射关系简化为一个映射关系通配符映射规则
1、若找到多个匹配, 没有通配符的那个将胜出
2、若指定的动作不存在, Struts 将会尝试把这个URI 与任何一个包含着通配符* 的动作名及进行匹配
3、若Struts找到的带有通配符的匹配不止一个,最后一个匹配将胜出被通配符匹配到的URI字符串的子串可以用{1}, {2}来引用. {1}匹配第一个子串, {2}匹配第二个子串… {0}匹配整个URI *可以匹配零个或多个字符,但不包括/字符.如果想把/字符包括在内,需要使用**.如果需要对某个字符进行转义, 需要用\.
示例:
1、不同的action name 不同的action class 相同的action method 不同的result
<!-- <a href="${pageContext.request.contextPath}/pattern/BookAction_add.action">图书</a><br>
<a href="${pageContext.request.contextPath}/pattern/UserAction_add.action">用户</a><br>
-->
<action name="*_add" class="cn.itcast.struts2.pattern.{1}">
<result name="success" type="dispatcher">
<param name="location">/pattern/{1}.jsp</param>
</result>
</action>
-------------------------------------------------- -------------------------------------------------- ----------------
2、相同的action name相同的action class不同的action method相同的result
<!-​​-
<a href="${pageContext.request.contextPath}/pattern/BookAction_add.action">图书添加</a><br>
<a href="${pageContext.request.contextPath}/pattern/BookAction_delete.action">图书删除</a><br>
-->
<action name="BookAction_*" class="cn.itcast.struts2.pattern.BookAction" method="{1}">
<result name="success" type="dispatcher">
<param name="location">/pattern/success.jsp</param>
</result>
</action>
-------------------------------------------------- -------------------------------------------------- ----------------
3、不同的action name 不同的action class 不同的action method 不同的result
<!-​​-
<a href="${pageContext.request.contextPath}/pattern/BookAction_add.action">图书添加</a><br>
<a href="${pageContext.request.contextPath}/pattern/BookAction_delete.action">图书删除</a><br> <br> <br>
<a href="${pageContext.request.contextPath}/pattern/UserAction_add.action">用户添加</a><br>
<a href="${pageContext.request.contextPath}/pattern/UserAction_delete.action">用户删除</a><br>
-->
<action name="*_*" class="cn.itcast.struts2.pattern.{1}" method="{2}">
<result name="success" type="dispatcher">
<param name="location">/pattern/{1}.jsp</param>
</result>
</action>
-------------------------------------------------- -------------------------------------------------- -----------------
4、动态方法调用!形式:相同的action name相同的action class相同的result method由页面中的路径表示
<!-​​- 在动态方法调用中BookAction!add.action 【BookAction表示action中的name !后面的表示action中的method】-->
<!-​​- <a href="${pageContext.request.contextPath}/pattern/BookAction!add.action">图书添加</a><br>-->
<!-- <a href="${pageContext.request.contextPath}/pattern/BookAction!delete.action">图书删除</a><br>--> -->
<action name="BookAction" class="cn.itcast.struts2.pattern.BookAction">
<result name="success" type="dispatcher">
<param name="location">/pattern/success.jsp</param>
</result>
</action>
-------------------------------------------------- -------------------------------------------------- --------------------
5、全局结果当多个action中都使用到了相同result,这时我们应该把result定义为全局结果
<package ....>

<!-​​- 定义全局结果写在package里面-->
<global-results>
<result name="success" type="dispatcher">/pattern/successGlobal.jsp</result>
</global-results>
</package>
注:局部的会覆盖全局Struts2中应用范围内action的实例,每个请求都会创建一个action实例========================== ================================================== ============
6.
<package name="agency" extends="default" namespace="/AgencyRules">
<action name="*" class="com.imksmart.app.eaf.platform.agency.action.AgencyRulesAction" method="{1}">
</action>
</package>
这里的*表示的内容是看{}出现的位置,上例为一个method。 比如URL为/AgencyRules/selectList.action,那么方法就为SelectList。
注意:昨天遇到的错误是:忘了在struts.xml文件中include单独的struts配置文件,导致我配置的action规则不起作用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值