1. 程式人生 > 實用技巧 >struts2的框架流程

struts2的框架流程

為什麼80%的碼農都做不了架構師?>>> hot3.png

一、先來說說struts2的背景

struts2可謂是站在巨人的肩膀上超越,它不僅僅是對struts1的升級,而是struts的新一代產品,是在struts1和webwork的技術基礎上進行合併的全新框架。struts2的核心是webwork,採用攔截器的機制來處理使用者的請求,其業務邏輯控制器能和servletApi完全脫離開,所以struts2本質上是webwork的更新,而和struts1的差別很大。

二、下面我們看一下struts官方提供的原理圖

三、下面說一下具體的流程:

1、當客戶端發過來一個request時,這個請求經過一系列的過濾器(比如圖中的ActionContextCleanup,other filters),到達struts2的核心過濾器strutsPrepareAndExecuteFilter,這裡特別注意strutsPrepareAndExecuteFilter是整個struts2的核心;

2、strutsPrepareAndExecuteFilter拿著這個請求去詢問ActionMapper,讓ActionMapper來解析這個請求是否要請求某個Action,然後將解析的結果返回給strutsPrepareAndExecuteFilter,如果不需要請求action,比如某些時候請求的是靜態資源,如果需要請求action,就進行下面的步驟;

3、strutsPrepareAndExecuteFilter把請求交給ActionProxy(Action代理,用來生成需要的action),ActionProxy拿到這個請求後,去詢問ConfigurationManager(配置管理器),然後ConfigurationManager通過去查詢struts的配置檔案(就是struts.xml)來獲取請求的action,接下來將解析完成後的資訊返回給ActionProxy;

4、ActionProxy例項化一個ActionInvocation來生成對應的action,由於struts2是基於Interceptor(攔截器)機制,所以在執行action之前會執行很多Interceptor,struts2將很多功能都封裝到了攔截器中,這也是它強大的地方;

5、通過執行一系列的Interceptor,到達action,執行action後返回檢視,然後再進行攔截器的後處理,最後生成響應response;

struts2的流程就是這樣了,如果有不妥當的地方,歡迎大家踴躍指正。

轉載於:https://my.oschina.net/ayo123/blog/870663