1. 程式人生 > >Struts.xml配置檔案詳解

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
URI

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元素:


  1. 作用:配置邏輯結果檢視。一個動作可以對應多個邏輯檢視
  2. 屬性:
    • name:邏輯檢視名稱,和動作類方法的返回值對應。預設是success
    • type:轉向實際檢視的方式。預設是dispatcher,轉發,目標是一個頁面。

type的取值:從struts-defualt.xml中找
1). dispathcer:目標是一個頁面,請求轉發
2). redirect:目標是一個頁面,請求重定向
3). chain :目標是另外一個動作,請求轉發
4). redirectAction:目標是另外一個動作,請求重定向

5.2 result中的引數設定

  1. 下面兩種的寫法本質上是一樣的:
<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>
  1. 轉發的目標動作不在同一個包下,而且有著不同的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>