官术网_书友最值得收藏!

1.2.3 FilterDispatcher和Action概述

Action可以稱之為Struts 2的核心技術。每一個URL都可以被一個特殊的Action所映射。該Action是開發人員根據Web項目特定需求進行開發所實現的。

Action中通過一個無參的execute方法來執行控制轉向,并且返回一個String類型變量或者Result對象。當然也可以在Struts.xml文件中進行特殊指定方法名,這樣就可以不用execute作為方法名,而是用開發人員自己指定的方法名。

(1)如果返回的是一個String類型變量,相應導航的目標視圖是在Struts.xml配置文件中定義,配置文件把這個變量值和定義的目標視圖名相匹配,這樣系統就能正確導航到目標視圖。

(2)如果返回的是Result對象,因為Struts 2本身支持返回結果是Result對象的映射導航,可是像JSP這種視圖中顯示的數據都是Java中的基本類型,這就涉及到類型轉化概念,在Struts 2中設計者也考慮到這一點,因此也提供了類型轉化的機制,在稍后章節會具體介紹。

在Web項目中,如果HTTP請求被servlet容器接收,然后導航到定義的目標視圖時,有可能在之前會在Web項目中定義個一個過濾器(Filter)對它進行處理。在Struts 2中是由一個叫FilterDispatcher的類來執行該過濾器的HTTP請求處理功能。

FilterDispatcher也是Struts 2的一個核心技術,它提供了處理HTTP請求用來訪問Web項目框架的訪問方法。假設我們啟動了某個Web項目,很多可設置的元素都已經在該Web項目框架中定義,例如Spring可管理的JavaBean配置、Action的映射定義等。在此時FilterDispatcher會執行下列這些操作。

●讀取靜態數據信息:比如某些文件或者JavaScript代碼等。

●決定需要轉發或導航的Action配置。舉例說明,從HTTP請求中發出的目標視圖的導航定義,一般在Struts.xml配置文件中都配置了Action名字,系統會根據Action配置去配置文件中尋找這個Action名字的Action。也就是說通過FilterDispatcher去搜尋后綴名為"Action"的所有Action映射。

●創建Action的Context:從HTTP請求中發出的數據信息都是存儲在request或session中,而Struts 2則封裝了這些HTTP的對象,創建Context對象作為存儲數據之處,并且通過Context的一些內置方法可以得到HTTP請求存儲在request或session中的數據。

●創建Action代理:Action代理是一個附加的邏輯處理。它實際上包含了Web項目所有的配置和Context信息,用來處理HTTP請求并包含請求處理完畢后哪些要返回的Result對象。

●內存清理和性能優化:為了確保在Web項目啟動運行后,內存不會溢出,以至出現運行越來越慢的情況,FilterDispatcher會自動執行清理動作,主要清理Context對象,保證系統中沒有冗余對象或垃圾對象。

主站蜘蛛池模板: 板桥市| 鹤岗市| 兴仁县| 东丽区| 繁昌县| 龙南县| 竹山县| 泗洪县| 界首市| 屯门区| 清流县| 澄城县| 平度市| 永安市| 桐柏县| 永德县| 潜山县| 余江县| 凭祥市| 双柏县| 北海市| 湟源县| 彭水| 扎赉特旗| 凤台县| 汉寿县| 固原市| 瑞安市| 隆化县| 抚顺县| 忻城县| 石楼县| 肥东县| 襄樊市| 凤山市| 报价| 高台县| 凭祥市| 个旧市| 于都县| 五华县|