1)FilterDispatcher前端
Struts2的前端控制器,也是Struts2的MVC中的控制器部分。在實際開發中,只須要在web.xml中配置一次便可,以下所示:web
<filter> <filter-name>Struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>Struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
可是必定要注意,若是還有其餘的過濾器,那麼FilterDispatcher的配置一般要出如今最後。apache
2)Action數組
動做類,做爲MVC中的模型部分,既封裝業務數據,也負責處理用戶的請求,execute方法就是默認的動做處理方法。服務器
3)Resultsession
結果,表明Action運行以後要轉向的下一個頁面。Struts2自己支持多種結果類型,如jsp、velocity、freemarker、jasperreports等,在同一個web應用中,各類結果類型還能混用。app
4)Interceptor框架
攔截器是Struts2中一個重要的概念。每個Struts2工程都使用了攔截器,只是使用了Struts2自帶的內建攔截器與默認攔截器配置而已。jsp
Struts2的許多功能都是由攔截器完成的,好比:url
5)ActionContext、值棧與OGNL
Struts2在每一個Action剛開始運行的時候,都會單獨爲它創建一個ActionContext,把全部能訪問的數據,包括請求參數(request的parameter)、請求的屬性(request的Attribute)、會話(session)信息等等,都放到ActionContext中。這樣一來,在之後取值、賦值的時候,就只須要訪問ActionContext就能夠了,因此說ActionContext能夠被認爲是每一個Action擁有的一個獨立的內存數據中心。
對象圖導航語言OGNL是Object-Graph Navigation Language的縮寫,它是一種功能強大的表達式語言(Expression Language,簡稱爲EL)。它經過簡單一致的表達式語法,能夠存取對象的任意屬性,調用對象的方法,遍歷整個對象的結構圖,實現字段類型轉化等功能。
值棧能夠用來容納多個對象,主要用來存放一些臨時對象。當使用OGNL訪問值棧中對象的屬性的時候,指定屬性的引用會引用更靠近值棧棧頂方向對象,晚進棧的對象會覆蓋早進棧的對象。簡單點說,Struts2用值棧爲咱們使用Struts2作了不少引用上的簡化,主要是縮短了OGNL表達式的長度。另外,值棧也能夠做爲一個內存數據中心,來存放一些Struts2標籤臨時定義的數據。
6)Struts2標籤
Struts2的標籤庫功能強大,使用簡單,大大簡化了視圖開發的工做。並且,它與框架的其餘部分也很是天然的結合,如國際化、驗證等等。
7)自動類型轉換
在Action中能夠有多種方式來對應頁面的數據,從而自動獲取頁面的值。可是,從request裏面接收的值都是String類型的,而Action的屬性能夠是各類類型的。這就須要Struts2的類型轉換機制來支持,它節省了咱們大量的手工進行類型轉換的開發時間。
Struts2已經內置了大量的類型轉換方式:
Struts2提供的這些就已經夠用了,還能夠本身實現特殊的類型轉換器,以知足特殊的功能須要。
8)國際化
i18n一般做爲「國際化」的簡稱,其來源是英文單詞 internationalization的首末字符i和n,18爲中間的字符數。
web應用一般應該支持多國語言,能夠根據客戶端請求所來自的國家和語言顯示不一樣語種的用戶界面。這樣,當須要在應用程序中添加對一種新語言的支持時,就無需修改應用程序的代碼了。
Struts2很是天然的實現了國際化,咱們不須要考慮更多的事情,只是按照Struts2的要求,把不一樣語言的信息,放到對應的位置便可。
9)驗證框架
做爲一個成熟、穩定的web應用,不管如何服務器端驗證是少不了的。一般狀況下,咱們不會徹底相信客戶端傳遞過來的數據,應該在真正調用業務邏輯以前對數據進行校驗,若是用戶提交的數據不符合要求,就不會去調用業務邏輯。
Struts2爲咱們提供了一套完整、嚴密,可擴展的驗證框架,保證在Action運行以前會判斷用戶提交的信息是否完整、符合條件。