Struts2兩個重要組成部分

 

struts2核心就是核心控制器和業務控制器。

核心控制器StrutsPrepareAndExecuteFilter

<span style="color:#000000"><code>StrutsPrepareAndExecuteFilter作爲一個filter運行在web應用中,負責攔截所有用戶請求,該filter 會過濾用戶請求,然 

後將請求都交給struts2框架處理。攔截器會默認攔截擴展名爲.action的請求,什麼後綴名都不寫也可以。例如  

hello.action或者hello都會進行攔截。xxx.jsp就不會進行攔截,直接放行。 
</code></span>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(1)啓動Tomcat,tomcat加載web.xml文件。同時加載和初始化核心過濾器,查看struts2源碼,發現核心過濾器的初始化方法中會加載struts.xml等struts2配置文件。

(2)當用戶請求到達時,核心過濾器攔截用戶請求,將請求交給struts2框架來處理,即去匹配struts.xml的內容。 
struts2框架獲取用戶請求後,根據請求的名字來決定調用哪個業務邏輯組件,實例化相應的類。例如,對於login請求,調用名爲login的Action處理。

(3)struts2的所有Action都被定義在struts.xml文件中,Action有name和class屬性,name決定了該Action處理哪個用戶請求,class決定了該Action的實現類。

(4)Struts2用戶處理用戶請求的Action實例,並不是用戶實現的業務控制器,而是Action代理,他會回調用戶的處理方法,因爲用戶實現的業務控制器沒有與Servlet API有任何關係,所以根本沒辦法進行獲取參數等請求處理,而struts2定義了一系列攔截器,會對請求參數解析,傳入到Action中,回調execute方法。

我們每次請求都會實例化相應的類,所以不會出現線程不安全的情況。而Servlet爲單例,會出現線程不安全。

業務控制器:

<span style="color:#000000"><code>業務控制器就是用戶實現的Action類,Action類中通常包含一個execute方法,該方法返回一個字符串,字符串與struts.xml中的result的name相對應,跳轉到不同頁面。  
</code></span>
  • 1
  • 2

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章