1. 程式人生 > >Struts2的動態方法,及result跳轉方式,全局結果以及默認的action的配置

Struts2的動態方法,及result跳轉方式,全局結果以及默認的action的配置

name屬性 定向 查找 配置 根據 前端 ima 標簽 ces

Action動態方法的調用

  首先我們需要在struts.xml中去配置一個常量值如下

技術分享圖片

那麽去哪找呢?找到Struts-core.jar並打開

技術分享圖片

method屬性

<action name="login" class="cn.ssh.ch08.UserAction" method="lgoin">
   <result name="success">/success.jsp</result>
   <result name="fail">/fail.jsp</result>
</action>
<action 
name="register" class="cn.ssh.ch08.UserAction" method="register"> <result name="success">/success.jsp</result> <result name="fail">/fail.jsp</result> </action>

  可以看到配置文件中分別定義了兩個action元素,每個action的name屬性都不同,但是類的引用卻是相同的也就是說,如果用戶的請求是login.action,

那麽就會調用類中的login()方法,如果是register.action則會調用register()方法.

註意:Struts2在根據action元素的method屬性查找執行方法時有兩種途徑

  1. 查找與method屬性值完全一致的方法
  2. 查找與doMethod()形式的方法

如login()方法,找不到此方法時會去找doLogin()方法

action中感嘆號的使用

  使用語法:actionName!methodName

技術分享圖片

因此請求只需要這樣寫即可如下

技術分享圖片

而配置文件中就不在需要method屬性了

技術分享圖片

action中通配符的使用

<!-- {1} 相當於占位符,在每個用到{1} 的地方都匹配了前端請求的*User中*號的內容 -->
<action 
name="*User" class="cn.myweb.action.UserAction" method="{1}"> <result name="{1}" >{1}.jsp</result> </action>

比如我的請求是 loginUser.action那麽login就會被填充到 {1}中,也就是跳轉頁面是login.jsp,方法是login,結果是login

此外有了{1}那麽也是可以有{2}的.這裏就不多講了

result跳轉方式的配置

  常用的三種如下:

  1. dispatcher:Action默認的結果類型,采用轉發的形式請求指定的視圖資源,請求中的數據信息不會丟失.
  2. redirect:采用重定向的方式請求指定的視圖資源.數據會丟失
  3. redirectAction:重定向的方式請求一個新的Action,數據會丟失
<action name="register" class="cn.ssh.ch08.UserAction" method="register">
   <result name="success" type="redirectAction">success</result>
   <result name="fail">/fail.jsp</result>
</action>

如上成功之後會去中找名為success的action

設置默認action

技術分享圖片

當出現錯誤請求時則會跳轉到index頁面

設置全局結果

技術分享圖片

 當結果為 error時則跳入錯誤頁面

註意action標簽不能放在global標簽前面

Struts2的動態方法,及result跳轉方式,全局結果以及默認的action的配置