zoukankan      html  css  js  c++  java
  • struts2DMI(动态方法调用)

    struts2动态方法调用共有三种方式:

    1、通过action元素的method属性指定访问该action时运行的方法

    <package name="action" extends="struts-default" namespace="/user">
         
          <action name="login" class="cn.orlion.action.LoginAction" method="login">
                <result name="success">/index.jsp</result>
                <result name="error">/login.jsp</result>
          </action>
       
       </package>

    [

    在struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。
      (1)name - 配置包时必须指定name属性,如果其他包要继承该包,必须通过该属性进行引用,name属性值不能有相同 。
      (2)namespace - 包的namespace属性用于定义该包的命名空间。该属性可以不配置,对本例而言,如果不指定该属性,默认的命名空间为""(空字符串)。

    例:当把namespace设成/user时,访问的时候必须在action前边加上/user,即http://localhost:8080/Struts2Demo/login.action => http://localhost:8080/Struts2Demo/user/login.action才能访问到该action。

      (3)extends - 通常每个包都应该继承struts-default包, struts-default包是由struts内置的,它定义了struts2内部的众多拦截器和Result类型。

    ]

    如果不指定method属性则当访问/user/login.action时会默认执行cn.orlion.action.LoginAction中execute方法。

    2、感叹号方式(官方不建议使用此方法)

    先要在struts.xml文件中开启:<constant name="struts.enable.DynamicMethodInvocation" value="true" />

    <package name="user" namespace="/user" extends="struts-default">
             <action name="user" class="cn.orlion.user.UserAction">
                 <result>
                     /login.jsp
                 </result>
             </action>
         </package>

    访问http://localhost:8080/Struts2Demo/user/user!login就能访问到

    3、通配符

    <package name="actions" namespace="/actions" extends="struts-default">
             <action name="student*" class="cn.orlion.actions.StudentsAction" method="{1}">
                 <result>
                     /login.jsp
                 </result>
             </action>
             <action name="*-*" class="cn.orlion.actions.{1}Action" method="{2}">
                 <result>
                     /login.jsp
                 </result>
             </action>
         </package>

    如上配置所示,当访问http://localhost:8080/Struts2Demo/actions/studentlogin的时候就会匹配到student*,从而去执行StudentsAction中的login方法

    当访问http://localhost:8080/Struts2Demo/actions/Teachers-login的时候就会匹配到*-*,从而去执行TeachersAction中的login方法

    当访问http://localhost:8080/Struts2Demo/actions/Students-reg的时候就会匹配到*-*,从而去执行StudentsAction中的reg方法

    注意,jsp文件中路径最好使用绝对路径以避免命名空间问题!

  • 相关阅读:
    【题解】 [yLOI2019] 梅深不见冬
    【题解】[CSP-S2019] Emiya 家今天的饭
    【题解】Acwing400. 太鼓达人
    【题解】[ZJOI2007]最大半连通子图
    【题解】Acwing395. 冗余路径
    【题解】CF487E Tourists
    “𣎴” 这个字存Mysql Incorrect string value: 'xF0xA3x8ExB4' for column 'msg' at row 1
    logminer分析异机db的归档日志(外部文件)
    logminer存储在外部文件(external file)
    logminer分析在线redo log
  • 原文地址:https://www.cnblogs.com/orlion/p/5011431.html
Copyright © 2011-2022 走看看