Struts工作流程

2021-06-19 17:03:32 字數 1806 閱讀 1520

struts的工作流程詳解:

1、客戶端向servlet容器(如tomcat)提交乙個請求,即httpservletresponse

2、請求經過一系列過濾器(actioncontextcleanup過濾器、其他過濾器、filterdispatcher)

actioncontextcleanup:已被jvm和web容器廢棄的空物件

filterdispatcher:org.apache.struts2.dispatcher.filterdispatcher是struts2的主要的filter,負責四個方面的功能:

(1)執行actions

(2)清除actioncontext

(3)維護靜態內容

(4)清除request生命週期內的xwork的interceptors

另註:該過濾器應該過濾所有的請求url。一般被設定為/*.

此方法,自定義乙個dispatcher物件。

(3)destory():呼叫dispatcher.cleanup(),依次釋放本地執行緒,銷毀dispatcher物件。

(4)dofilter(servletrequest request, serveltresponse response, filterchain chain):處理乙個action或處

理乙個請求的靜態內容。

(5)findinputstream(string name, string packageprefix):搜尋類路徑下的靜態資源。

(6)findstaticresoruce(string name, httpservletrequest request, httpservletresponse response):搜尋靜

action)

5、actionproxy通過configuration manager詢問框架的配置檔案(struts.xml),找到需呼叫的action類

actionproxy :在xwork和真正的action之間充當** 

6、actionproxy建立乙個actioninvocation的例項

7、 actioninvocation負責呼叫action,在此之前會依次呼叫所有配置的***(如:***1、***2、***3等)

actioninvocation :表示action的執行狀態,儲存***、action例項 

8、action執行完畢,actioninvocation負責根據結果碼字串在struts.xml的配置中找到對應的返回結果

interceptor :可以在請求處理之前或者之後執行的struts 2元件,struts 2絕大多數功能通過***完成

9、***(如***3、***2、***1等)、httpservletresponse被再次執行

10、過濾器(filterdispatcher、other filters、actioncontextcleanup)被再次執行

為什麼需要struts***?

***是動態攔截action呼叫的物件。它提供了一種機制可以使開發者定義在乙個action執行前後執行的**,也可以在乙個action只想前組織其執行。同時也是提供了一種可以提取action中可重用的部分的方式。

***鏈(interceptor chain或interceptor stack,struts2中稱為***棧):將***按一定順序聯結成一條鏈。在訪問被攔截的方法或字段時,***棧中***就會按其之前定義的順序被呼叫。

struts 2將核心功能放到多個***中實現,***可自由選擇和組合,增強了靈活性,有利於系統的解耦。

Struts工作流程

文章分類 招聘求職 乙個使用者的請求是通actionservlet來處理和 的。那麼,actionservlet如何決定把使用者請求 給哪個action物件呢?這就需要一些描述使用者請求路徑和action衍射關係的配置資訊了。在struts中,這些配置對映資訊都儲存在特定的xml檔案struts c...

struts工作流程

在應用伺服器啟動的時候,就會根據struts config.xml配置檔案在記憶體中建立相應的bean。這樣,當使用者訪問例如x.do的時候,首先會將請求交給actionservlet,actionservlet把請求 給requestprocessor,由requestprocessor根據請求的...

Struts的工作流程

當actionservlet接受到乙個客戶請求時,將執行如下流程。流程 2 如果actionform例項不存在,就建立乙個actionform物件,把客戶提交的表單資料儲存到actionform物件中。3 根據配置資訊決定是否需要表單驗證。如果需要驗證,就呼叫actionform的validate ...