struts2工作流程

2021-07-11 16:36:20 字數 2371 閱讀 8998

圖2.1 struts2.0體系架構圖

針對上節體系架構圖,下面分步說明執行流程

ø  客戶端初始化乙個指向

servlet

容器(例如

tomcat

)的請求;

ø  這個請求經過一系列的過濾器(

filter

)(這些過濾器中有乙個叫做

actioncontextcleanup

的可選過濾器,這個過濾器對於

struts2

和其他框架的整合很有幫助,例如:

sitemesh plugin);

注:從struts2.1.3

後就不需要配置

actioncontextcleanup

過濾器了,該過濾器的作用是清空值棧等,但

struts

會留下自己

session

和attribute等

ø  接著

呼叫struts

的strutsprepareandexecutefilter

過濾器,strutsprepareandexecutefilter

詢問來決定這個請求是否需要呼叫某個

action;

備註:早期

struts

用filterdispatcher

過濾器,現在普遍都用

strutsprepareandexecutefilter

。就名字而言,

prepare

與execute

前者表示準備

說指filterinit

方法即配置匯入;後者表示進行過濾指

dofilter方法即

request

請求**給對應

action

去處理

ø  如果

決定需要呼叫某個

action

,strutsprepareandexecutefilter

把請求的處理交給

actionproxy;

ø  actionproxy

通過configuration manager

詢問框架的配置檔案,找到需要呼叫的

action類;

ø  actionproxy

建立乙個

actioninvocation

的例項。

ø  actioninvocation

例項使用命名模式來呼叫,在呼叫

action

的過程前後,涉及到相關***(

intercepter

)的呼叫。

ø  一旦action

執行完畢,

actioninvocation

負責根據

struts.xml

中的配置找到對應的返回結果。返回結果通常是(但不總是,也可能是另外的乙個

action

鏈)乙個需要被表示的

jsp或者

freemarker

的模版。在表示的過程中可以使用

struts2

框架中繼承的標籤。在這個過程中需要涉及到。

官方文件:

參考:參考:

一篇基本總結《struts技術內幕》的部落格:

(1)  客戶端(client)向action髮用乙個請求(request)

(2)  container通過web.xml對映請求,並獲得控制器(controller)的名字

(3)  容器(container)呼叫控制器(strutsprepareandexecutefilter或filterdispatcher)。在struts2.1以前呼叫filterdispatcher,struts2.1以後呼叫strutsprepareandexecutefilter

(5)  控制器(controller)呼叫actionproxy

(6)  actionproxy讀取struts.xml檔案獲取action和interceptor stack的資訊。

(7)  actionproxy把request請求傳遞給actioninvocation

(8)  actioninvocation依次呼叫action和interceptor

(9)  根據action的配置資訊,產生result

(10) result資訊返回給actioninvocation

(11) 產生乙個httpservletresponse響應

(12) 產生的響應行為傳送給客服端。

struts2工作流程

1 客戶端傳送請求 2 請求先通過actioncontextcleanup filterdispatcher 6 actionproxy建立乙個actioninvocation的例項 7 actioninvocation呼叫真正的action,當然這涉及到相關 的呼叫 8 action執行完畢,ac...

struts2工作流程

1.客戶端發出乙個httpservletrequest請求,這個請求經過一系列的過濾器filter 如actioncontextcleanup等 這些過濾器最終會呼叫filterdispatcher類 現在是strutsprepareexcutefilter 的serviceaction方法,fil...

struts2的工作流程

struts2並不是乙個陌生的web框架,它是以webwork的設計思想為核心,吸收struts1的優點,可以說 struts2是struts1和webwork結合的產物。struts2 的工作原理圖 乙個請求在struts2框架中的處理分為以下幾個步驟 1.客戶端發出乙個指向servlet容器的請...