天天看點

Struts架構之 執行流程 struts.xml 配置詳細

伺服器啟動:

         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類的建立,再執行攔截器; 最後攔截器執行完,再執行業務方法

問題1:struts.xml配置檔案沒有提示

解決a:

         找到struts-2.0.dtd檔案,  拷貝到某個目錄:d:/dtd /..  (不要用中文目錄)

         讓myeclipse關聯到上面dtd檔案,

                   →  windows àpreferences   →  搜尋xml catalog

                   配置:

                            location:    上面配置的dtd目錄

                            key:     -//apache software foundation//dtd struts configuration 2.0//en

解決b:

         讓機器連接配接網際網路,工具會自動下載下傳dtd檔案,緩存到myeclipse中!

Struts架構之 執行流程 struts.xml 配置詳細
Struts架構之 執行流程 struts.xml 配置詳細