衆所周知,struts.xml是整個Struts2框架的核心!下面提供一個struts.xml文件示範(無任何實際意義,struts版本2.3),方便以後使用!
廢話不多說,直接上代碼,代碼如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!--指定了Struts2.3配置文件的DTD(DTD文件位置:WEB-INF\lib\struts2-core-2.3.31.jar\struts-2.3.dtd)信息 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<!--struts是Struts2配置文件的根元素 -->
<!-- 屬性解釋:order指定加載struts2配置文件的優先順序 -->
<struts order="">
<!--content元素可出現0或者無數次 用於設置一些struts2的常量-->
<constant name="" value=""/>
<!--bean元素可出現0或者無數次 struts2框架內置bean位置(WEB-INF\lib\struts2-core-2.3.31.jar\struts-default.xml)
bean作用:--重新定義struts2框架的核心組件,很少使用!
1.創建Bean的實例(實現了接口的類的實例),將實例作爲Struts框架的核心組件使用
2.Bean包含的靜態方法需要注入一個值(允許不出案件某個類的實例 通常設置static="true")
-->
<!-- 屬性解釋:
type:可選屬性,屬性值通常是一個struts2接口
name:可選屬性,指定了bean實例的名字,若type值相同,name名不能相同
scope:可選屬性,bean實例的作用域 屬性值:default singleton request session 或 thread
static:指定bean是否使用靜態方法注入 指定了type屬性 該屬性不能指定爲true
optional:可選屬性 指定bean是否是一個可選bean-->
<bean type="" name="" class="" scope="" optional="" static=""></bean>
<!-- include元素可出現0或者無數次
作用:包含其他配置文件
屬性解釋:
file:必填屬性 制定了被包含配置文件(是標準的struts2配置文件)的文件名
-->
<include file="" />
<!-- package元素是Struts配置問價的核心,可出現0或者無數次
作用:管理action和攔截器(攔截器 攔截器引用)
每個包是多個action 多個攔截器 多個攔截器引用組成-->
<!-- 屬性解釋:
name:必填屬性 指定該包的名字 此名字是該包被其他包引用的key
extends:可選屬性 指定該包繼承其他包 (繼承內容action定義和攔截器定義)
父包應該在子包前面定義(因爲struts2配置文件從上到下處理,可通過order來指定加載順序)
namespace:可選屬性 該屬性定義該包的命名空間
關於命名空間:考慮到一個web應用中可能會出現相同的action,所以struts2以命名空間
來管理action 同一個命名空間不能有同名action 不同命名空間可以有相同action
若沒有指定namespace則使用默認命名空間""(默認命名空間可處理任何模塊下的action請求);
若指定以後namespace後 action處理類的URL爲命名空間+action名
關於根命名空間(namespace="/")
假設請求爲/login.action
系統先去根命名空間("/")中找login的action,若找到該action處理用戶請求,若找不到就進入
默認命名空間("")中找login的action,若找到該action處理用戶請求,若找不到,提示出錯!
abstract:可選屬性 指定該包是不是抽象包(抽象包不能有action) -->
<package name="包名" extends="" namespace="" abstract="" externalReferenceResolver="" strict-method-invocation="">
<!-- result-types元素可有可無 最多出現一次 -->
<result-types>
<!-- result-type元素必須出現 可出現無數次 -->
<result-type name="" class="" default="false|true">
<!-- param元素可出現0或者無數次 -->
<param name="參數名">參數值</param>
</result-type>
</result-types>
<!-- interceptors元素可有可無,最多出現一次 包含攔截器和攔截器棧-->
<interceptors>
<!-- interveptors元素的interceptor元素和interceptor-stack元素至少出現其中之一 也可以同時出現 -->
<!-- interceptor(攔截器)元素可以出現0或者無數次
攔截器執行時間:Action處理之前,或者Action處理之後
攔截器作用:
權限控制(檢查用戶是否登錄)
跟蹤日誌(記錄每個瀏覽者所請求的每個action)
性能優化(記錄每個action的開始處理時間和結束處理時間)-->
<!-- 屬性解釋:
name:攔截器的名字
class:攔截器的處理類 -->
<interceptor name="" class="">
<!-- param可以出現0或者無數次 -->
<param name="參數名">參數值</param>
</interceptor>
<!-- interceptor-stack(攔截器棧(多個攔截器形成一個攔截器棧,是一個大的攔截器,定義攔截器棧之前,必須先定義攔截器))可以出現0或者無數次 -->
<!-- 屬性解釋:
name:攔截器棧的名字 -->
<interceptor-stack name="">
<!-- interceptor-ref元素必須出現 可出現無數次
作用:定義攔截器棧包含哪個攔截器-->
<!-- 屬性解釋:
name:已經定義好的攔截器的名字 -->
<interceptor-ref name="">
<!-- param可以出現0或者無數次 -->
<param name="參數名">參數值</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- default-class-ref元素可以出現0或者無數次
作用:改變action的默認處理類(action的默認處理類是ActionSupport)-->
<!-- 屬性解釋:
class:action的處理類 -->
<default-class-ref class="">
<!-- param元素可以出現0次或者無數次 -->
<param name="參數名">參數值</param>
</default-class-ref>
<!-- default-interceptor-ref元素可以出現0或者無數次 -->
<default-interceptor-ref name="">
<!-- param元素可以出現0次或者無數次 -->
<param name="參數名">參數值</param>
</default-interceptor-ref>
<!-- default-action-ref元素可以出現0或者無數次
作用:當用戶請求的URL在容器中找不到對應的action時,系統使用默認的action來處理用戶請求 需要和action元素結合使用-->
<!-- 屬性解釋
name:事先定義好的action的名字 -->
<default-action-ref name="">
<!-- param元素可以出現0次或者無數次 -->
<param name="參數名">參數值</param>
</default-action-ref>
<!-- global-results(全局結果)元素可以出現0或者無數次
作用:對所有的action都有效
若全局結果裏包含了和局部結果同名的結果,局部會覆蓋全局(以局部結果爲準)-->
<global-results>
<!-- result元素必須出現 可以出現無數次 -->
<result name="" type="">
<!-- param元素可以出現0次或者多次 -->
<param name="參數名">參數值</param>
</result>
</global-results>
<!-- global-exception-mappings元素可以出現0或者無數次 -->
<global-exception-mappings>
<!-- exception-mapping(全局異常映射,對所有action都有效,當和局部異常一樣時,以局部異常爲準)元素必須出現 可以出現無數次
作用:struts2框架的異常捕捉機制-->
<!--屬性解釋:
exception:此屬性指定該異常映射所設置的異常類型
result:指定action出現該異常時,系統轉入reslut屬性所指向的結果 -->
<exception-mapping result="" exception="">
<!-- param元素可以出現0次或者多次 -->
<param name="參數名">參數值</param>
</exception-mapping>
</global-exception-mappings>
<!-- struts2的核心,配置action的作用就是讓容器知道該Action存在 -->
<!-- 屬性解釋:
name:action的名字
命名規範: 通常由字母和數字組成
若name=""時,可處理列出web應用根路徑下的所有文件請求
class:可選屬性 指定了該action的實現類(若沒有指定,使用系統默認的ActionSupport)
method:可以讓action類調用指定方法,而不是execute方法來處理用戶請求 默認值execute-->
<action name="" class="" converter="" method="">
<!-- param元素可以出現0次或者多次 -->
<param name="參數名">參數值</param>
<!-- result(局部結果)元素可以出現0次或者多次
作用:配置邏輯視圖(普通的字符串)和物理視圖(JSP Velocity FreeMarker等)之間的關係 -->
<!-- 屬性解釋:
name:可選屬性 默認值是success(不寫name屬性,默認爲success)
type:可選屬性 默認值是dispatcher(不寫type屬性,默認爲dispatcher)
type的值(struts2內建支持的結果類型):
chain:action鏈式處理的結果類型
不想轉發到視圖資源,希望另一個action進行下一步處理,將請求轉發到另一個action
dispatcher:與jsp整合的結果類型
將請求轉發(Forward)到指定的視圖資源
freemarker:與FreeMarker整合的結果類型
httpheader:用於控制特殊HTTP行爲的結果類型
redirect:直接跳轉到其他URL的結果類型
將請求Redirect(重定向)到指定視圖資源,丟失所有的請求參數,請求屬性,action的處理結果
redirectAction:直接跳轉到其他action的結果類型
直接將請求重定向到另外一個action,丟失所有的請求參數,請求屬性,action的處理結果
stream:向瀏覽器返回一個InputStream的結果類型(用於文件下載)
velocity:與Velocity整合的結果
xslt:用於與XML/XSLT整合的結果類型
plainText:用於顯示某個頁面的原始代碼的結果類型(不常用)-->
<result name="" type="">
<!-- param元素可以出現0次或者多次 -->
<!-- 屬性解釋:
name:參數的值
location:指定了該邏輯視圖對應的實際的視圖資源
parse:指定是否允許在實際視圖名字中使用OGNL表達式 默認爲可以使用(true)
charSet(type="plainText"時使用):指定字符集,使用特定的字符集來處理頁面
actionName(type="redirectAction"時使用):指定重定向的actionName
nameSpace(type="redirectAction"時使用):指定重定向的Action所在的命名空間
-->
<param name="參數名">參數值</param>
</result>
<!-- interceptor-ref元素可以出現0次或者多次
作用:使用攔截器或者攔截器棧-->
<!-- 屬性解釋:
name:已經定義好的攔截器棧或者攔截器的名字 -->
<interceptor-ref name="" >
<!-- param元素可以出現0次或者多次 -->
<param name="參數名">參數值</param>
</interceptor-ref>
<!-- exception-mapping(局部異常映射)元素可以出現0次或者多次
作用:struts2的異常機制-->
<!--屬性解釋:
exception:此屬性指定該異常映射所設置的異常類型
result:指定action出現該異常時,系統轉入reslut屬性所指向的結果 -->
<exception-mapping result="" exception="" name="">
<!-- param元素可以出現0次或者多次 -->
<param name=""></param>
</exception-mapping>
<!-- allowed-methods元素可以出現0次或者多次 -->
<allowed-methods></allowed-methods>
</action>
</package>
<!-- unknown-handler-stack可以出現0或者無數次
作用:用於配置Struts2的未知處理器(從Struts2.1開始)
未知處理器的起作用的時刻 :用戶請求未知action 指定action的未知方法 action處理結束返回未知result時-->
<unknown-handler-stack>
<!-- unknown-handler-ref可以出現0或者無數次 -->
<!-- 屬性解釋:
name:bean的name(這個Bean定義了一個UnknowHandler) -->
<unknown-handler-ref name="" ></unknown-handler-ref>
</unknown-handler-stack>
</struts>
不足之處,望指點!