Struts 2 執行流程

服務器啓動:

         1. 加載項目web.xml

         2. 創建Struts核心過濾器對象, 執行filter à  init()

                   struts-default.xml,    核心功能的初始化

                   struts-plugin.xml,     struts相關插件

                   struts.xml                 用戶編寫的配置文件

訪問:

         3. 用戶訪問Action, 服務器根據訪問路徑名稱,找對應的aciton配置, 創建action對象

         4. 執行默認攔截器棧中定義的18個攔截器

         5. 執行action的業務處理方法

struts-default.xml, 詳解

 目錄:struts2-core-2.3.4.1.jar/ struts-default.xml

 內容:

         1. bean節點指定struts在運行的時候創建的對象類型

         2.指定struts-default包  【用戶寫的package(struts.xml)一樣要繼承此包 】

                package  struts-default  包中定義了:

                          a.  跳轉的結果類型

                                   dispatcher    轉發,不指定默認爲轉發

                                   redirect       重定向

                                   redirectAction  重定向到action資源

                                   stream        (文件下載的時候用)

                          b. 定義了所有的攔截器

                                     定義了32個攔截器!

                                     爲了攔截器引用方便,可以通過定義棧的方式引用攔截器,

                              此時如果引用了棧,棧中的攔截器都會被引用!

                                   defaultStack

                                            默認的棧,其中定義默認要執行的18個攔截器!

                          c. 默認執行的攔截器棧、默認執行的action

                                   <default-interceptor-ref name="defaultStack"/>

<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
<interceptor name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>
<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

攔截器:

         攔截器功能與過濾器功能類似。

         區別:

                   共同點: 都攔截資源!

                   區別:

                            過濾器,攔截器所有資源都可以;  (/index.jsp/servlet/img/css/js)

                            攔截器,只攔截action請求。

                            攔截器是struts的概念,只能在struts中用。

                            過濾器是servlet的概念,可以在struts項目、servlet項目用。

疑惑: 攔截器什麼時候執行? (訪問/啓動)  先執行action類創建,先執行攔截器?

         》》 1. 用戶訪問時候按順序執行18個攔截器;

         》》 2. 先執行Action類的創建,再執行攔截器; 最後攔截器執行完,再執行業務方法

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