Struts2之Action對象及相關配置


一、Action對象

  Action對象是Struts2框架中的重要對象,主要用於對HTTP請求進行處理,在Struts2 API中,Action對象是一個接口,位於com.opensymphony.xwork2包中。在Struts2項目開發中,創建Action對象都要直接或間接實現此對象。

  在Action接口中,包含了5個靜態成員變量:

  • 靜態變量SUCCESS,代表Action執行成功的返回值。如果在Action執行成功的情況下,需要返回到成功的頁面,此時就可以將返回值設置為SUCCESS。
  • 靜態變量NONE,代表Action執行成功的返回值,但不需要返回到成功的頁面。主要用於處理不需要返回結果頁面的業務邏輯。
  • 靜態變量ERROR,代表Action執行失敗的返回值。如在一些信息驗證失敗的情況下,可以使Action返回此值。
  • 靜態變量INPUT,代表需要返回到某個輸入信息的頁面的返回值。如在修改某些信息時,加載數據后需要返回到修改頁面,此時就可以將Action對象的返回值設置為INPUT。
  • 靜態變量LOGIN,代表需要用戶登錄的返回值。如在驗證用戶是否登錄時,Action驗證失敗,需要用戶重新登錄,此時就可以將Action對象的返回值設置為LOGIN。

 

二、請求參數的注入

  在Struts2框架中,表單提交的數據會自動注入到與Action對象相對應的屬性。通過Action對象為屬性提供setter方法進行注入。

  基本流程:

    Struts2框架的工作,主要是通過Struts2的過濾器對象攔截HTTP請求,然后將請求分配到指定的Action進行處理。由於在Web項目中配置的是Struts2過濾器,所以當瀏覽器向Web容器發送一個HTTP請求時,      Web容器就要調用Struts2過濾器的doFilter()方法。此時Struts2就接收到了HTTP請求,通過Struts2的內部處理機制,它會判斷這個HTTP請求是否與某個Action對象相匹配。如果找到了與之匹配的Action,就會        調用Action對象的execute()方法,並根據處理結果返回相應的值,然后Struts2就會通過Action的返回值查找返回值所映射的頁面,最后通過一定的視圖回應給瀏覽器。

 

三、動態Action

  動態Action的處理方式,是通過請求Action對象中一個具體的方法來實現的操作,具體方式,是在Action的URL地址后方加上請求的字符串(方法名稱),與Action對象的方法進行匹配,Action對象地址ui請求字符串之間以“!”進行分隔。例如:

1     <body>
2       <a href="userAction!add">添加用戶</a>
3       <a href="userAction!updatee">更新用戶</a>
4 
5     </body>
View Code

 

  可知,Action請求的處理方式並非一定要通過execute()方法進行處理,使用動態Action的處理方式更加方便。所以,在實際開發中個,可以將同模塊的一些請求封裝到一個Action對象中,使用Struts2提供的動態Action對不同請求進行處理。

 

四、Struts2的相關配置

  <1> Struts2的配置文件主要有4個,如下。

Struts2框架的配置文件
名稱 說明
struts-default.xml 位於struts2-core-2.1.14.1.jar文件的org.apache.struts2包中
struts-plugin.xml 位於Struts2提供的各個插件的包中
struts.xml Web應用默認的Struts2配置文件
struts.properties Struts2框架中屬性配置文件
web.xml 在該文件中也可以設置Struts2框架的一些信息

 

 

 

 

 

  <2> Struts2的包配置

1 <struts>
2     <!-- 聲明包-->
3     <package name="user" extends="struts-default" namespace="/user">
4         ......
5     </package>
6 </struts>
View Code
<package>元素所包含的的屬性及說明
名稱 說明
name 聲明包的名稱,以方便在其他地方引用此包,此屬性是必須的
extends 用於聲明繼承的包,也就是它的父包
namespace 指定名稱空間,也就是訪問此包下的Action需要訪問的路徑
abstract 將包聲明為抽象類型(包中不定義action)

 

 

 

 

 

  <3> Struts2中Action的對象相關配置

  Action對象起到一個控制器的作用,Struts2框架通過Action對象處理HTTP請求。  

1 <action name="userAction" class="com.wyao.action.UserAction" method="save">
2     <result>success.jsp</result>
3 </action>
View Code
<action>元素的屬性及說明
屬性 說明
name 用於配置Action對象被請求的URL映射
class 指定Action對象的類名
method 設置請求Action對象時,調用Action對象的哪一個方法
converter 指定Action對象類型轉換器的類

 

 

 

 

 

  調用一個Action對象,默認情況下,它執行的是execute()方法。如果需要請求指定的方法,就可以通過<action>元素的method屬性進行配置,將一個請求交給指定的業務邏輯方法進行處理。使用Action元素的method屬性,其屬性值需要與Action對象中的方法名一致,Struts2框架是通過method屬性值查找與之配置的方法。

  <4> Struts2通配符匹配值

  通配符的配置方式主要針對在非常多的Action的情況下,通過一定的命名約定,使用通配符來配置Action對象,達到簡化。

  常用的通配符有兩個,

    • 通配符“*” : 匹配0或多個字符。
    • 通配符“\” :是一個轉義字符,如需匹配“/”,則使用通配符“ V”。

  在struts.xml中,結果映射使用<result>元素進行映射,如:

1 <action name="register" class="com.shengsiyuan.struts2.RegisterAction">
2             <!-- 結果映射 -->
3             <result>/user/Result.jsp</result>
4             <!-- 結果映射 -->
5             <result name="success">/registerResult.jsp</result>
6             <!-- 結果映射 -->
7             <result name="input" type="dispatcher">/register.jsp</result>
8         </action>
View Code

  <result>元素有兩個屬性,name和type。其中name屬性與Action對象中方法的返回值相對應,如果execute()方法返回值為input,那么,將<result>元素的name屬性配置為input,對應Action對象返回值。type屬性用於設置結果的返回值類型,如請求轉發、重定向等。如果不設置<result>元素的name屬性,那么默認為success。

 

       

 


免責聲明!

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



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