Struts.xml配置檔案詳解
1、package 元素:
1.1 作用:方便分模組化開發
1.2 屬性:
name:必須有。唯一。標識一個包, 好有一定的含義。
extends:繼承。一般要求必須繼承struts-default的包。不繼承該包,將無法使用struts2提供的一些核心功能。struts-default包在struts-default.xml中有配置,載入自己的struts.xml檔案之前,框架就已經載入了struts-default.xml配置檔案,所以我們可以使用。
abstract:是否是抽象包。讓別人繼承用的。沒有任何action子元素的包就可以宣告為抽象包。
namespace:名稱空間。預設值是""
namespace和的name共同組成了使用者訪問的URI.
如下:URI=/user/hello.action
1.3 關於namesapce的搜尋順序問題
2、action 元素:
action:定義一個動作
name :動作名稱。對應著使用者的請求名稱,預設的字尾是action或沒有後綴
class:框架要例項化的動作類名稱,全名稱。預設值是:com.opensymphony.xwork2.ActionSupport。在struts-
default.xml中有定義。
method:執行的動作類的動作方法。預設值是execute
3、Struts2中的常用常量
default.properties中有
覆蓋這些常量時,用後面的配置檔案覆蓋即可
struts.xml中<constant/>
來覆蓋
常量的名稱 | 取值 | 說明 |
---|---|---|
struts.devMode | true/false | 開啟開發模式。配置檔案修改後會自動載入;出錯時能打印出更加詳細的錯誤說明。真正執行時要改為false |
struts.i18n.reload | true/false | properties檔案修改後會不會被自動載入 |
struts.configuration.xml.reload | true/false | xml配置檔案修改後會不會被自動載入 |
struts.action.extension | action | struts2框架處理URI字尾。預設是action或者沒有。可以配置多個值,用逗號進行分割 |
struts.i18n.encoding | UTF-8 | Struts2中使用的預設編碼 |
struts.multipart.maxSize | 2097152:2M | Struts2中進行檔案上傳時的檔案大小限制 |
struts.objectFactory.spring.autoWire | name | 與Spring框架進行整合用的 |
struts.objectFactory | spring | 與Spring框架進行整合用的 |
struts.serve.static.browserCache | true | 是否允許瀏覽器進行快取靜態資源 |
struts.enable.DynamicMethodInvocation | true/false | 是否允許動態方法呼叫。 |
struts.ui.theme | xhtml | Struts2UI標籤庫使用的預設樣式主題 |
struts.ui.templateDir | template | 樣式模板存在了什麼資料夾中。 |
4、多個struts配置檔案
user.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="user" extends="struts-default">
<action name="user" class="com.sd.action.User">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
struts.xml
<!-- 覆蓋預設的引數配置 -->
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<include file="user.xml"></include>
5、結果檢視
5.1 result元素:
- 作用:配置邏輯結果檢視。一個動作可以對應多個邏輯檢視
- 屬性:
- name:邏輯檢視名稱,和動作類方法的返回值對應。預設是success
- type:轉向實際檢視的方式。預設是dispatcher,轉發,目標是一個頁面。
type的取值:從struts-defualt.xml中找
1). dispathcer:目標是一個頁面,請求轉發
2). redirect:目標是一個頁面,請求重定向
3). chain :目標是另外一個動作,請求轉發
4). redirectAction:目標是另外一個動作,請求重定向
5.2 result中的引數設定
- 下面兩種的寫法本質上是一樣的:
<action name="demo4">
<result name="success" type = "dispatcher">/success.jsp</result>
</action>
<action name="demo4">
<result name="success" type = "dispatcher">
<param name="location">/success.jsp</param>
</result>
</action>
- 轉發的目標動作不在同一個包下,而且有著不同的namespace
<package name="p1" extends="struts-default">
<action name="demo3" class="com.itheima.action.Demo3Action">
<!-- 一個動作轉向另外一個動作 -->
<result name="success" type="chain">
<!-- 轉發到不同名稱空間下的動作 -->
<param name="namespace">/p2</param>
<param name="actionName">demo4</param>
</result>
</action>
</package>
<package name="p2" extends="struts-default" namespace="/p2">
<action name="demo4">
<result name="success" type="dispatcher">
<!-- param設定引數:呼叫dispatcher對應的類的setLocation("/success.jsp") -->
<param name="location">/success.jsp</param>
</result>
</action>
</package>