struts2執行原理(執行流程)

來源:互聯網
上載者:User

標籤:style   blog   http   io   使用   java   ar   strong   檔案   



一個請求在Struts2架構中的處理大概分為以下幾個步驟:

1 用戶端發送請求;
2 這個請求經過一系列的過濾器(Filter)(這些過濾器中有一個叫做ActionContextCleanUp的可選過濾器,這個過濾器對於Struts2和其他架構的整合很有協助,例如:SiteMesh Plugin)
3 接著FilterDispatcher被調用,FilterDispatcher詢問ActionMapper來決定這個請是否需要調用某個Action。FilterDispatcher的功能如下:

        (1)執行Actions
        (2)清除ActionContext
        (3)維護靜態內容

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

4 如果ActionMapper決定需要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy
5 ActionProxy通過Configuration Manager詢問架構的設定檔,找到需要調用的Action類
6 ActionProxy建立一個ActionInvocation的執行個體。
7 ActionInvocation執行個體使用命名模式來調用,在調用Action的過程前後,涉及到相關攔截器(Intercepter)的調用。
8 一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果通常是(但不總是,也可 能是另外的一個Action鏈)一個需要被表示的JSP或者FreeMarker的模版。在表示的過程中可以使用Struts2 架構中繼承的標籤。在這個過程中需要涉及到ActionMapper


攔截器與過濾器:

 

1、攔截器是基於java反射機制的,而過濾器是基於函數回調的。2、過濾器依賴於servlet容器,而攔截器不依賴於servlet容器。
3、攔截器只能對Action請求起作用,而過濾器則可以對幾乎所有請求起作用。
4、攔截器可以訪問Action上下文、值棧裡的對象,而過濾器不能。
5、在Action的生命週期中,攔截器可以多次調用,而過濾器只能在容器初始化時被調用一次。

 

在上述過程中所有的對象(Action,Results,Interceptors,等)都是通過ObjectFactory來建立的。

Struts2的目標很簡單--使Web開發變得更加容易。為了達成這一目標,Struts2中提供了很多新特性,比如智能的預設設定、annotation的使用以及"慣例重於配置"原則的應用,而這一切都大大減少了XML配置。Struts2中的Action都是POJO,這一方面增強了Action本身的可測試性,另一方面也減小了架構內部的耦合度,而HTML表單中的輸入項都被轉換成了恰當的類型以供action使用。開發人員還可以通過攔截器(可以自訂攔截器或者使用Struts2提供的攔截器)來對請求進行預先處理和後處理,這樣一來,處理請求就變得更加模組化,從而進一步減小耦合度。模組化是一個通用的主題--可以通過外掛程式機制來對架構進行擴充;開發人員可以使用自訂的實現來替換掉架構的關鍵類,從而獲得架構本身所不具備的功能;可以用標籤來渲染多種主題(包括自訂的主題);Action執行完畢以後,可以有多種結果類型--包括渲染JSP頁面,Velocity和Freemarker模板,但並不僅限於這些。

struts2執行原理(執行流程)(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.