Struts2的工做原理及工做流程

轉發文章:https://blog.csdn.net/lihang_1994/article/details/72625585web

一 工做原理
在Struts2框架中的處理大概分爲如下幾個步驟 
1 客戶端初始化一個指向Servlet容器(例如Tomcat)的請求 
2 這個請求通過一系列的過濾器(Filter)(這些過濾器中有一個叫作ActionContextCleanUp的可選過濾器,這個過濾器對於Struts2和其餘框架的集成頗有幫助,例如:SiteMesh Plugin) 
3 接着FilterDispatcher被調用,FilterDispatcher詢問ActionMapper來決定這個請是否須要調用某個Action 
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 
二 工做流程
一、客戶端瀏覽器發出HTTP請求.
二、根據web.xml配置,該請求被FilterDispatcher接收
三、根據struts.xml配置,找到須要調用的Action類和方法, 並經過IoC方式,將值注入給Aciton
四、Action調用業務邏輯組件處理業務邏輯,這一步包含表單驗證。
五、Action執行完畢,根據struts.xml中的配置找到對應的返回結果result,並跳轉到相應頁面
六、返回HTTP響應到客戶端瀏覽器
 
看到網友的對Struts2的原理總結,我本身也總結以便後續的面試,如下是個人疑問
一、客服端發起一個請求,經過HTTP協議指向Tomcat容器,tomcat拿到請求她幹了什麼?
二、咱們web.xml配置
  <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
 <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
咱們從web配置文件中能夠看到org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,這個Filter這個類有什麼用?
這個 /* 是攔截全部的請求,他攔截了請求作了什麼處理? <url-pattern>/*</url-pattern>
3.咱們struts.xml配置
 
<struts>
 <package name="default" namespace="/" extends="struts-default">
        
        <action name="hello">
            <result>
                /Hello.jsp
            </result>
        </action>
        
    </package>
 
</struts>
誰負責根據struts.xml配置,找到須要調用的Action類和方法呢?
 
 
4。最後根據struts.xml中的配置找到對應的返回結果result,在返回HTTP響應到客戶端瀏覽器面試

結束語 我覺的要說清楚Struts原理,不光死記硬背資料上的寫的原理,還要帶着這些問題去作總結。
————————————————
版權聲明:本文爲CSDN博主「lihang_1994」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/lihang_1994/article/details/72625585apache

相關文章
相關標籤/搜索