struts2自主學習之DTD文件結構及各配置文件詳解


struts.xml
第一行xml文件說明<?xml-utf-8>
<!doctype> xml文檔說明
struts-2.2.dtd文件看xml文檔說明



struts的DTD文件結構如下:
struts

1、package*

(1)、result-type?
    <1>result-type+
        [1]param*
(2)、interceptors?攔截器
    <1>interceptor+
        [1]param*
    <2>interceptor-stack+
        [1]interceptor-ref*
            {1}param*
(3)、default-interceptor-ref?
    <1>param*
(4)、default-action-ref?
    [1]param*
(5)、default-action-ref?
    [1]param*
(6)、default-class-ref?
    [1]param*
(7)、global-results?
    <result+>
(8)、action*
    [1]param*
    [2]result*
        <1>(#PCDATA|PARAM)*
    [3]interceptor-ref*
        <1>param*
    exception-mapping*
        <1>(#PCDATA|param)*

        
2、include*
3、bean*
4、constant*


凡是出現*符號的表示這個元素可以出現0-N次
在元素後面出現?的元素表示這個元素是可選的元素
如果元素後面出現+,表示這個元素在相應的元素下必須出現1-N  
如果沒有任何符號,表示這個元素是必不可少的struts



Struts-default.xml

內部配置文件
<package name="default" extends="struts-defult">
表示我們自己定義的default這個包需要繼承struts-defult這個包


Struts-default.xml包中內容
在core包中


struts.properties
用戶自定義的文件

是一個屬性定義文件

struts2框架中有大量的屬性值和常量
這些屬性值和常量可以定義在struts.xml文件中,但是最好還是定義在struts.properties
文件中,這樣可以減輕struts.xml文件的壓力。
在struts.properties文件中修改文件中的內容,可以實現對Struts2框架中配置參數的修改
就是我們在struts.properties文件中定義的參數可以將struts2文件默認的配置參數覆蓋


struts.propertise文件內容必須嚴格遵照鍵值對的方式(Key-Value)

    例如:struts.custom.i18n.resources=globalMessage

 struts.propertise常見鍵值對:
struts.i18n.encoding

指定Web應用的默認編碼集。如果需要獲取中文請求參數值,可以將該屬性值設置爲GBK
或者GB2312

struts.custom.i18n.resource
指定Struts2應用所需要加載的國際資源文件。多個文件之間使用英文逗號隔開



(前倆個文件是在設置時經常用到的,一個是設置字符編碼,一個是加載國際化資源文件)

struts.locale
指定Web應用的默認Locale

struts.configuration.files
指定Struts2默認加載的配置文件,多個文件之間用英文逗號隔開,其默認值爲
“struts-default.xml,struts-plugin.xml,struts.xml”

struts.ui.theme
指定視圖標籤默認的視圖主題,其默認值爲xhtml

struts.i18n.reload
設置是否每次HTTP請求到達時,系統都重新加載資源文件,其默認值爲false



struts-plugin.xml

內部配置文件core
插件配置文件
如果需在要Struts2框架中集成其他技術,就需要相應的插件配置文件

在該文件中定義了插件組件的包空間、攔截器和其他配置常量等
在Struts2框架包的lib文件夾下,除了包含Struts2核心包之外,還包括多個插件文件。
這些插件文件是以JAR壓縮包的形式存在,文件包中包含有-plugin



Bean配置

在Struts2框架的配置文件struts.xml文件中,可以將配置內容分爲3大類:
管理元素、用戶請求處理元素和錯誤處理元素。在每種元素中可以包含不同的配置內容。

·管理元素
Bean配置、常量配置、包配置、命名空間配置、包含配置
·用戶請求處理元素
攔截器配置、Action配置、Result配置
·錯誤處理元素
異常配置

Bean配置
struts-default.xml文件中,定義了大量的核心組件,這些核心組件不是直接以硬編碼的形式
寫在代碼中,而是以自己的 依賴注入 容器來配置。

用戶可以編寫自己的組件實現類來擴展或者替換框架的某一部分,使用<bean>元素來描述組件實現類。
Bean配置:struts-default.xml



<bean>元素的相應屬性
class     必選 指定Bean實例的實現類
name      非必選 指定Bean實例的名稱,對於多個相同類型的多個Bean,其name屬性值是不能相同的
type      非必選 指定Bean實例實現的Struts2規範,該規範通常是通過某個藉口來實現的,
        因此該屬性的值通常是一個Struts2接口。
        如果需要將Bean實例作爲Struts2組件使用,則應該指定該屬性值。
scope     非必選 指定Bean實例的作用域,屬性值可以是default、singleton、
        rquest、session、或者thread中的一個
optional 非必選 指定是否是一個可選Bean
static 非必選 指定Bean是否使用靜態方法注入。通常指定type屬性時,該屬性值不能指定爲true


常量配置
在struts.xml文件中,通過<constant>元素配置常量(Constant),可以作爲指定
Struts2屬性的一種方式。而Struts2的常量既可以在struts.xml文件中配置也可以在struts.properties
文件中配置,實際上,在其他一些配置文件中也可以實現。


通常情況下,Struts2框架按照以下順序加載Struts2 常量:
    內部·struts-default.xml    存放在struts2-core-x.x.x.jar文件中。
    內部·struts-plugin.xml    存放在truts2-xxx-x.x.x.jar等Struts2插件的jar文件中
    ·struts.xml     web應用中默認的Struts2配置文件
    ·struts.pr operties     Struts2的屬性配置文件
    ·web.xml     web應用的配置文件

後面定義的常量的值將覆蓋前面文件中定義的值


<constant>元素
name 指定常量名
value 指定常量的屬性名
例如:
在struts.xml文件中,指定字符集編碼爲gb2312,代碼如下:
    <constant name="struts.i18n.encoding" value="gb2312"/>
如果使用struts.properties文件實現上述常量的配置,代碼如下:
    struts.i18n.encoding=gb2312
    struts.custom.i18n.resources=globalMessages
使用web.xml文件同樣可以實現上述常量的配置
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
<param-name>struts.i18n.encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>



包配置
在Struts2 框架中,其核心組件是Action和攔截器
該框架使用包來管理這些組件。在包中可以配置多個Action,多個攔截器或者多個攔截器引用的集合
使用<package>元素配置包時,可以指定4個屬性

name 必選 指定包的名稱,該名稱是該包被其他包引用的key值
extends 非必選 指定該包繼承的其他包
namespace 非必選 指定該包的命名空間
abstract 非必選 指定該包是否是一個抽象包,抽象包不能定義Action

在包中不可以配置常量



命名空間配置
(namespace)

如果一個Action類中有多個業務處理方法,而客戶端請求需要指向不同的方法,這時Struts2以命名空間的
方式來管理這個Action。配置命名空間時,使用屬性名爲namespace
<package name="myPackage" extends="struts-default" namespace="/tmq">
<action name="login" class = "my.test.LoginAction">
<result name= "successs">welcome.jsp</result>
</action>
</package>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章