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文件中路徑最好使用絕對路徑以避免命名空間問題!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM