Struts2學習

  1. 概要

是一個基於MVC模式的web應用框架,它本質上相當於一個servlet。在MVC設計模式中,struts作爲控制器(controller)來建立模型與視圖之間的交互。Struts2WebWork爲核心,採用攔截器的機制來處理用戶的請求。


2. Web層框架的前端控制器模式

傳統模式的開發中,一個請求對應一個servlet,這樣會導致出現很多servletStruts2的所有請求先經過一個前端控制器,在前端控制器中實現部分功能,剩下的具體操作提交到具體的Action中。因爲所有請求都可以被過濾器攔截,所有用過濾器是實現前端控制器的最好方法。



3.搭建Struts2框架

 1、首先,要導包


 2、導入Struts2約束

選擇struts-2.3.dtd這個文件,用文本編輯器打開可以看到它的URI,注意Key Type要選擇URI。


   3、書寫Action類

   


     4、書寫src/struts.xml



      5、將struts2核心過濾器配置到web.xml



4. Struts2訪問流程&架構



5. 總結

1、 所有請求,首先要經過核心過濾器StrutsPrepareAndExecuteFilter,然後ActionMapper處理請求,分析請求需要用哪個Action等等,然後返回信息ActionMapping給核心過濾器,ActionMapping裏封裝了這次請求它所需要的資源信息。(該Filter會過濾用戶請求,如果用戶請求以action結尾,該請求就會被轉入struts2框架來處理。)

2、 核心過濾器把ActionMapping轉交給ActionProxy,然後ActionProxy使用ConfigurationManager讀取配置文件,ConfigurationManager把配置信息返回給ActionProxy。

3、 ActionProxy根據根據配置文件的信息和ActionMapping中的信息,就可以知道請求需要調用哪個Action,所以就可以創建Action對象,接着把它交給Action Inovation,同時也把攔截器集合interceptors交給Action Inovation。

4、 Action Inovation負責調度Action以及intercepter。
在調用Action之前,先調度一系列攔截器,這些攔截器能夠解析HttpServletRequest請求,完成封裝參數、參數校驗等一系列功能,減少了Action中的代碼,是AOP思想的一種體現。

5、 Struts2默認設置了20個攔截器,經過攔截器後,執行Action中的代碼。一旦Action執行完畢,Action Invocation負責根據struts.xml中的配置找到對應的返回結果,之後可能經過轉發或重定向。

Struts2配置文件加載順序

1、每次從客戶端發送的請求都要經過struts2的核心過濾器StrustAndExecuteFilter,這個過濾器有兩個功能:預處理和執行。
預處理:加載配置文件,對應的是過濾器的init方法。
執行:執行一組攔截器完成一部分功能,對應的是過濾器的doFilter方法
    首先,查詢過濾器的init方法:定義了一個Dispatcher,進入它的初始化方法




     然後在initDispatcher中,再進入init方法

  

       最後,找到一系列加載配置文件的代碼




後面三個是我們可以修改的,要注意的是,這幾個配置文件是有一定順序的。這幾個配置文件都可以修改struts常量的值,後加載的配置將覆蓋前面加載的配置。








發佈了30 篇原創文章 · 獲贊 19 · 訪問量 6994
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章