zoukankan      html  css  js  c++  java
  • 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>




  • 相关阅读:
    http 请求头设置缓存
    手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单
    django如何用邮箱代替用户名登录
    python函数式编程学习之map,reduce,filter,sorted
    python traceback学习(转)
    python logging模块学习(转)
    python pip安装lxml失败(转)
    python下性能提示
    python移植性提示
    python测试与调试提示
  • 原文地址:https://www.cnblogs.com/elgin-seth/p/5293744.html
Copyright © 2011-2022 走看看