Struts功能詳解——ActionMapping對象


        Struts功能詳解——ActionMapping對象

ActionMapping描述了struts中用戶請求路徑和Action的映射關系,在struts中每個ActionMapping都是通過path屬性和一個特定的用戶請求URL關聯。它負責轉發用戶請求給具體的Action,同時還轉發了其他的一些相關信息,這種請求和處理動作之間的映射關系保存在struts-config.xml這個配置文件中,在web服務器初始化的時候,會加載這個配置文件,struts給每一個Action都創建一個ActionMapping對象,用來提供給Action使用,當ActionServlet轉發請求的時候,ActionMapping對象會被作為參數傳遞給Action的execute()方法。
 
 
 
在一個web應用中,每個資源都必須通過URI來進行引用。 資源包括HTML頁面,JSP頁面,和定制動作。為了給定制動作一個 URI或者說路徑,Struts框架提供了一個 ActionMapping對象。

ActionMaping也是Struts的一個核心對象,通常我們不用手寫ActionMapping類,它只需要在配置文件中配置就行。

ActionMapping如何配置:

ActionMapping在配置文件Strtus-config.xml中配置,配置格式如下:

 

  1. <struts-config>  
  2. <action-mappings>  
  3. <actionpathactionpath="/login"  
  4. type="com.bjpowernode.struts.LoginAction"  
  5. name="loginForm"                  
  6. scope="request"                  
  7. >  
  8. <forwardnameforwardname="success" path="/login_success.jsp" />  
  9. <forwardnameforwardname="error"path="/login_error.jsp"/>                  
  10. </action>  
  11. </action-mappings>  
  12. </struts-config>  

 

其中<action>標簽是為每一個獨立的action配置,配置他們的訪問方式和訪問控制。

<forward>標簽配置action執行完返回以后,需要到達的地方。

其中name scope type分別是actionMapping的一個屬性,它對應着action的需要訪問的位置和數據來源,還有數據范圍。

 

ActionMapping的功能:

ActionMapping的主要功能就是管理Action的信息和管理Action執行完成以后的ActionForward的信息。

它將特定請求映射到特定Action的相關信息存儲ActionMapping中,ActionServelt將ActionMapping傳送到Action類execute()方法,Action將使用ActionMapping的findForward()方法,此方法返回一個指定名稱的ActionForward,這樣Action就完成了本地轉發。若沒有找到具體的ActionForward,就返回一個null.

 

ActionMapping的方法:

publicExceptionConfig findException(Class type) ,查找異常對象

public ActionForwardfindForward(String name) 可在映射中動態添加ActionForward:

public String[]findForwards()找到一個Action可以使用的actionForward列表

public ActionForwardgetInputForward() 得到本action的輸入ActionForard.

ActionMapping繼承於org.apache.struts.config.ActionConfig

 

總之,對於ActionMapping來說,起算是一個web控制層的數據字典,這個數據字典里面存放在ActionActionForward的信息,在程序執行的過程中,查閱這個數據字典,然后達到相應的位置,執行完成以后,再查詢這個數據字典,轉發特定的信息。


免責聲明!

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



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