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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.