A.1 struts.xml的配置
A.1.1 概述
前面已經分散學習了Struts2的各部分知識,相應的配置也分散到相關部分去學習了,這里再把這些配置的知識梳理和總結一下,以利于大家更好的掌握。
Struts2的配置文件主要是struts.xml文件,以前還有一個struts.properties文件,現在struts.properties文件的內容基本上都可以在struts.xml文件進行配置,也就不再重要了。
A.1.2 DOCTYPE和根元素
struts.xml文件必須包含如下的DOCTYPE的定義,如果是struts-2.0的dtd,示例代碼如下:
java代碼:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
如果是struts-2.1的dtd,示例代碼如下:
java代碼:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
- "http://struts.apache.org/dtds/struts-2.1.dtd">
struts.xml文件的根元素是<struts>,它的dtd定義是:
java代碼:
- <!ELEMENT struts ((package|include|bean|constant)*, unknown-handler-stack?)>
unknown-handler-stack:這個是2.1的dtd加入的,用來配置當找不到某些資源的時候進行處理的處理器的棧。
A.1.3 package元素
用來邏輯上組織Struts的配置,這個元素的dtd定義如下:
java代碼:
- <!ELEMENT package (result-types?, interceptors?, default-interceptor-ref?, default-action-ref?, default-class-ref?, global-results?, global-exception-mappings?, action*)>

簡單的配置示例:
java代碼:
- <package name="hello" namespace="/javass" extends="struts-default">
A.1.4 action元素
action元素用來配置一個動作,這個元素的dtd定義如下:
java代碼:
- <!ELEMENT action (param|result|interceptor-ref|exception-mapping)*>

簡單的配置示例:
java代碼:
- <action name="helloworldAction" class="cn.javass.hello.struts2impl.action.HelloWorldAction" method="create">
A.1.5 include元素
include元素用來引入其他相關模塊的struts配置文件。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT include (#PCDATA)>

簡單的配置示例:
java代碼:
- <struts>
- <include file="struts-user.xml"/>
- <include file="struts-dep.xml"/>
- ……
- </struts>
A.1.6 bean元素
bean元素用來配置一個bean,可以是由Struts來創建這個bean,也可以是使用給定bean的靜態方法。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT bean (#PCDATA)>

簡單的配置示例:
java代碼:
- <bean class="com.opensymphony.xwork2.ObjectFactory" name="xwork" />
A.1.7 constant元素
constant元素用來覆蓋在default.properties文件里面配置的常量值。有了constant元素就不必再去配置struts.properties文件了,把struts.properties里面的配置,直接使用constant元素配置到struts.xml里面。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT constant (#PCDATA)>

簡單的配置示例:
java代碼:
- <bean name="um" type=”UserEbi” class="cn.javass.vo.UserModel">
A.1.8 unknown-handler-stack元素
unknown-handler-stack元素用來配置當找不到某些資源的時候進行處理的處理器的棧。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT unknown-handler-stack (unknown-handler-ref*)>
簡單的配置示例:
java代碼:
- <bean type="com.opensymphony.xwork2.UnknownHandler" name="handler1" class="com.opensymphony.xwork2.config.providers.SomeUnknownHandler"/>
- <bean type="com.opensymphony.xwork2.UnknownHandler" name="handler2" class="com.opensymphony.xwork2.config.providers.SomeUnknownHandler"/>
- <unknown-handler-stack>
- <unknown-handler-ref name="handler1" />
- <unknown-handler-ref name="handler2" />
- </unknown-handler-stack>
A.1.9 unknown-handler-ref元素
unknown-handler-ref元素用來參照處理器。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT unknown-handler-ref (#PCDATA)>

簡單的配置示例:
java代碼:
- <bean type="com.opensymphony.xwork2.UnknownHandler" name="handler1" class="com.opensymphony.xwork2.config.providers.SomeUnknownHandler"/>
- <unknown-handler-stack>
- <unknown-handler-ref name="handler1" />
- </unknown-handler-stack>
A.1.10 default-action-ref元素
default-action-ref元素用來配置默認的動作,如果在package里面找不到與當前URL對應的多座,那么就調用這個action。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT default-action-ref (#PCDATA)>

簡單的配置示例:
java代碼:
- <default-action-ref name=”helloAction”/>
A.1.11 default-interceptor-ref元素
default-interceptor-ref元素用來配置默認的攔截器或攔截器棧,如果在action里面沒有明確的定義或引用攔截器或攔截器棧,那么就調用這里配置的攔截器或攔截器棧。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT default-interceptor-ref (#PCDATA)>

簡單的配置示例:
java代碼:
- <default-interceptor-ref name="defaultStack"/>
A.1.12 default-class-ref元素
default-class-ref元素用來配置默認的類,如果沒有為某個Action指定具體的class值時,將自動引用這個默認的類。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT default-class-ref (#PCDATA)>

簡單的配置示例:
java代碼:
- <default-class-ref class="cn.javass.action.DefaultAction"/>
A.1.13 exception-mapping元素
exception-mapping元素用來配置處理動作沒有處理的例外。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT exception-mapping (#PCDATA|param)*>

簡單的配置示例:
java代碼:
- <action name="helloworldAction" class="cn.javass.action.action.HelloWorldAction">
- <exception-mapping result="math-exception" exception="java.lang.ArithmeticException"/>
- <exception-mapping result="math-exception" exception="java.lang.Exception"/>
- <result name="math-exception">/error.jsp</result>
- <result>/s2impl/welcome.jsp</result>
- </action>
A.1.14 global-exception-mapping元素
global-exception-mappings元素用來配置公共的exception-mapping,可以包含1到多個的exception-mapping元素。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT global-exception-mappings (exception-mapping+)>
A.1.15 global-results元素
global-results元素用來配置公共的result,可以包含1到多個的result元素。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT global-results (result+)>
A.1.16 interceptor元素
interceptor元素用來配置攔截器。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT interceptor (param*)>

簡單的配置示例:
java代碼:
- <package name="helloworld" extends="struts-default">
- <interceptors>
- <interceptor name=“myInterceptor” class="cn.javass.action.action.MyInterceptor"/>
- </interceptors>
- ……
- </package>
A.1.17 interceptor-ref元素
interceptor-ref元素用來應用攔截器或攔截器棧。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT interceptor-ref (param*)>
它有如下的屬性:

簡單的配置示例:
java代碼:
- <action name="helloworldAction" class="cn.javass.action.action.HelloWorldAction">
- <result name="toWelcome">/s2impl/welcome.jsp</result>
- <interceptor-ref name=“myInterceptor”/>
- <interceptor-ref name="defaultStack"/>
- </action>
要注意:在Action里面配置了攔截器的引用,會覆蓋掉默認的配置,因此通常需要再手動的引用defaultStack。
A.1.18 interceptor-stack元素
interceptor-stack元素用來配置攔截器棧。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT interceptor-stack (interceptor-ref*)>
它有如下的屬性:

簡單的配置示例:
java代碼:
- <interceptor-stack name="defaultStack">
- <interceptor-ref name="exception"/>
- <interceptor-ref name="alias"/>
- ……
- </interceptor-stack>
A.1.19 interceptors元素
interceptors元素用來包裝多個攔截器。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT interceptors (interceptor|interceptor-stack)+>
簡單的配置示例:
java代碼:
- <interceptors>
- <interceptor name="alias" class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/>
- <interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/>
- ……
- <interceptor-stack name="basicStack">
- <interceptor-ref name="exception"/>
- <interceptor-ref name="servletConfig"/>
- <interceptor-ref name="prepare"/>
- <interceptor-ref name="checkbox"/>
- <interceptor-ref name="multiselect"/>
- <interceptor-ref name="actionMappingParams"/>
- <interceptor-ref name="params">
- <param name="excludeParams">dojo\..*,^struts\..*</param>
- </interceptor-ref>
- <interceptor-ref name="conversionError"/>
- </interceptor-stack>
- ……
- </interceptors>
A.1.20 param元素
param元素用來嵌套在其他元素中,為這些元素設置參數,比如:action、result-type、interceptor等等。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT param (#PCDATA)>

簡單的配置示例:
java代碼:
- <result name="toWelcome" type="dispatcher">
- <param name="location">/s2impl/welcome.jsp</param>
- <param name="parse">true</param>
- </result>
A.1.21 result元素
result元素用來為action指定結果。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT result (#PCDATA|param)*>

簡單的配置示例:
java代碼:
- <result name="toWelcome" type="dispatcher">/welcome.jsp</result>
A.1.22 result-type元素
result-type元素用來注冊結果類型,也就是具體處理結果的類。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT result-type (param*)>

簡單的配置示例:
java代碼:
- <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
A.1.23 result-types元素
result-types元素用來包含一個到多個result-type的定義。這個元素的dtd定義如下:
java代碼:
- <!ELEMENT result-types (result-type+)>
簡單的配置示例:
java代碼:
- <result-types>
- <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
- <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
- ......
- </result-types>
私塾在線網站原創
本文由用戶
suunny 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!