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 ...