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