zoukankan      html  css  js  c++  java
  • struts2中action中的通配符

    struts中一个正常的最普通不过的action是这样子的

    1 <package name="default1" namespace="/gys" extends="struts-default">
    2         <action name="registAction" class="com.b.Regist" method="test">
    3             <result name="regist1">/1/regist1.jsp</result>
    4             <result name="regist2">/1/regist2.jsp</result>            
    5         </action>
    6     </package>    

    使用通配符1

    1 <package name="default1" namespace="/gys" extends="struts-default">
    2         <action name="*Action" class="com.b.Regist" method="test">
    3             <result name="regist1">/1/regist1.jsp</result>
    4             <result name="regist2">/1/regist2.jsp</result>            
    5         </action>
    6  </package>    

    action中的*会和你的请求路径想匹配.符合要求的就进行下一步执行.*表示长度不为0的字符.

    比如:insertAction,updateAction都是符合要求的.

    使用通配符2

    1 <package name="default1" namespace="/gys" extends="struts-default">
    2         <action name="*Action" class="com.b.Regist" method="{1}">
    3             <result name="regist1">/1/regist1.jsp</result>
    4             <result name="regist2">/1/regist2.jsp</result>            
    5         </action>
    6     </package>    

    这里method="{1}"表示通配符的占位符.

    占位符都是从1开始的,不是从零考试的.

    使用通配符3

    1 <package name="default1" namespace="/gys" extends="struts-default">
    2         <action name="*_*Action" class="com.b.{2}" method="{1}">
    3             <result name="regist1">/1/regist1.jsp</result>
    4             <result name="regist2">/1/regist2.jsp</result>            
    5         </action>
    6     </package>    

    这里的{2}表示的就是第二个*了

    使用通配符4

    1 <package name="default1" namespace="/gys" extends="struts-default">
    2         <action name="*_*_*Action" class="com.b.{2}" method="{1}">
    3             <result name="{3}">/1/{3}.jsp</result>
    4             <result name="{3}">/1/{3}.jsp</result>            
    5         </action>
    6     </package>    

    通配符还可以进行内部的占位符的匹配

    使用通配符5

     1 <package name="default1" namespace="/gys" extends="struts-default">
     2         <action name="registAction" class="com.b.Regist" method="test">
     3             <result name="regist1">/1/regist1.jsp</result>
     4             <result name="regist2">/1/regist2.jsp</result>            
     5         </action>
     6         <action name="*Action" class="com.b.RegistT" method="{1}">
     7             <result name="regist1">/1/regist1.jsp</result>        
     8             <result name="regist2">/1/regist2.jsp</result>            
     9         </action>
    10     </package>   

    当精确匹配和模糊匹配都符合请求时,使用精确匹配

    当模糊匹配都符合时,按照顺序,谁第一,就执行那个action.

    默认Action:

    在某些情况下,用户请求非常简单,不需要系统过多的处理,或者这些请求只是一个简单的转发.

    对于只是简单的超链接请求,可以通过name为*的Action实现(最好放在最后).除此之外,struts2还允许在容器中定义一个默认的Action.

    1 <default-action-ref name="errorReq"></default-action-ref>
    2 <action name="errorReq">
    3     <result>/error.jsp</result>
    4 </action>    

    这段代码必须放在package里的第一位,如果放在其他action之后,会报错.

  • 相关阅读:
    FCOS及其和Faster R-CNN的区别
    CornerNet: Detecting Objects as Paired Keypoints
    神经网络不收敛的原因
    交叉熵损失函数
    Placeholder_2:0 is both fed and fetched
    使用Lambda解决_inbound_nodes错误
    Python对Dict排序
    对Faster R-CNN的理解(3)
    Keras运行速度越来越慢的问题
    深度卷积网络(DCNN)和人类识别物体方法的不同
  • 原文地址:https://www.cnblogs.com/guoyansi19900907/p/4486883.html
Copyright © 2011-2022 走看看