Struts2通配符映射

1、 一个 Web 应用可能有成百上千个 action 声明 . 可以利用 struts 提供的 通配符映射机制 把多个彼此相似的映射关系简化为一个映射关系
2 、通配符映射规则
若找到多个匹配 , 没有通配符的那个将胜出
若指定的动作不存在 , Struts 将会尝试把这个 URI 与任何一个包含着通配符 * 的动作名及进行匹配 
被通配符匹配到的 URI 字符串的子串可以用 {1}, {2} 来引用 . {1} 匹配第一个子串 , {2} 匹配第二个子串
{0} 匹配整个 URI
Struts 找到的带有通配符的匹配不止一个 , 则按先后顺序进行 匹配
* 可以匹配零个或多个字符 , 但不包括 / 字符 . 如果想把 / 字符包括在内 , 需要使用 ** . 如果需要对某个字符进行转义 , 需要使用 \.

示例1:

包声明:

<package name="app1" namespace="/app1" extends="struts-default">
        <action name="*_add" class="com.elgin.action.UserAction" method="add">
        
           <result >/jsp/user.jsp</result>
        
        </action>
    </package>
上面的包声明可以由正确的命名空间和 _add 组成的 URI 来调用 , 包括 :
/app1/book_add.action
/app1/student_add.action
/app1/_add.action
/app1/whatever_add.action

示例2:

<package name="app2" namespace="/app2" extends="struts-default">
        <action name="Book_add" class="com.elgin.action.Book" method="add">
        
           <result>/jsp/Book.jsp</result>
        
        </action>
        <action name="Student_add" class="com.elgin.action.Student" method="add">
        
           <result>/jsp/Student.jsp</result>
        
        </action>
    </package>
    <!-- 上述配置可改写为如下形式 -->
    <package name="app2" namespace="/app2" extends="struts-default">
        <action name="*_add" class="com.elgin.action.{1}" method="add">
        
           <result >/jsp/{1}.jsp</result>
        
        </action>
    </package>
示例3:

<package name="app3" namespace="/app3" extends="struts-default">
        <action name="Book_add" class="com.elgin.action.Book" method="add">
        
           <result>/jsp/Book.jsp</result>
        
        </action>
        <action name="Book_delete" class="com.elgin.action.Book" method="delete">
        
           <result>/jsp/Book.jsp</result>
        
        </action>
        <action name="Student_add" class="com.elgin.action.Student" method="add">
        
           <result>/jsp/Student.jsp</result>
        
        </action>
        <action name="Student_delete" class="com.elgin.action.Student" method="delete">
        
           <result>/jsp/Student.jsp</result>
        
        </action>
    </package>
    <!-- 上述配置可改写为如下形式 -->
    <package name="app2" namespace="/app2" extends="struts-default">
        <action name="*_*" class="com.elgin.action.{1}" method="{2}">
        
           <result >/jsp/{1}.jsp</result>
        
        </action>
    </package>
示例4:

<!-- 通配符映射 -->
    <package name="user" namespace="/" extends="struts-default">
       
       <action name="UserAction-*" class="com.elgin.action.UserAction" method="{1}">
           <result name="{1}-success">/success.jsp</result>
       </action>
       
    </package>




转载于:https://www.cnblogs.com/elgin-seth/p/5293744.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值