官术网_书友最值得收藏!

5.3 Struts2的配置文件

Struts2框架主要有兩個核心配置文件:struts.properties和struts.xml。struts.xml與Struts1版本中的struts-config.xml非常類似,主要負責管理應用中的Action映射,以及該Action包含的Result定義等,而struts.properties文件則定義了Struts2框架的全局屬性。所有的配置文件說明見表5.1。圖5.2展示了幾個配置文件所在位置和相互關系。

表5.1 Struts2的配置文件

圖5.2 配置文件關系圖

5.3.1 全局配置文件—struts.properties

struts.properties文件是一個標準的Properties文件,該文件包含了一系列的key-value對象,每個key就是一個Struts2屬性,該key對應的value就是一個Struts2屬性值。struts.properties文件通常放在Web應用的WEB-INF/classes路徑下,實際上,只要將該文件放在Web應用的CLASSPATH路徑下,Struts2框架就可以加載該文件。以下是一部分配置片段:

struts.enable.DynamicMethodInvocation=false"
struts.devMode=false

還有一種方法是在struts.xml中以<constant name="" value=""></constant>的形式配置這些靜態屬性,效果與在struts.properties配置的效果是一樣的。采取這種方式的項目中可以不包含struts.properties文件而只有struts.xml。

<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />

表5.2列出了struts.properties配置參數詳細情況。

表5.2 struts.properties配置參數

5.3.2 核心配置文件—struts.xml

struts.xml文件主要負責管理應用中的action映射,以及該action包含的result定義等。在struts.properties配置中有一項struts.configuration.files,從這里可以看出struts.xml這個文件名不一定是固定的,可以配置為其他文件名。struts.xml內容主要包括Action、Interceptor、Packages、Namespace等。后面的章節將詳細介紹如何配置這些元素。

在struts.xml中可以使用<include>標簽把內容分到幾個文件中去。這里非常像JSP中的<jsp:include>動作標簽,可以把其他文件的內容導入進來,被導入的每個配置文件必須和struts.xml文件有一樣的格式。<include>標簽的格式如下所示:

<!--引入其他文件-->
<include file="example.xml"/>
<include file="struts-tiles.xml" />
<include file="struts-xslt.xml" />

5.3.3 struts.xml的默認實現

struts-default.xml這個文件被包含在struts2-core.jar中,從文件名已經可以看出這個文件的作用是struts.xml的默認配置,它將自動被加載然后導入到struts.xml中去。實例5-1是struts-default.xml的部分片段。

【實例5-1】struts-default.xml片段

01     <struts>
02          <bean class="com.opensymphony.xwork2.ObjectFactory"
03     name="xwork" />
04          <bean type="com.opensymphony.xwork2.ObjectFactory"
05     name="struts"
06                class="org.apache.struts2.impl.StrutsObjectFactory" />
07          ......
08          <package name="struts-default" abstract="true">
09                <result-types>
10                     <result-type name="chain"
11
12          class="com.opensymphony.xwork2.ActionChainResult" />
13                     <result-type name="dispatcher"
14          class="org.apache.struts2.dispatcher.ServletDispatcherResult"
15                          default="true" />
16                     <result-type name="freemarker"
17          class="org.apache.struts2.views.freemarker.FreemarkerResult"
18     />
19                     <result-type name="httpheader"
20          class="org.apache.struts2.dispatcher.ServletActionRedirectRes
21     ult" />
22                     <result-type name="stream"
23
24          class="org.apache.struts2.dispatcher.StreamResult" />
25                     <result-type name="velocity"
26          class="org.apache.struts2.dispatcher.VelocityResult" />
27                     <result-type name="xslt"
28
29          class="org.apache.struts2.views.xslt.XSLTResult" />
30                     <result-type name="plainText"
31          class="org.apache.struts2.dispatcher.PlainTextResult" />
32                </result-types>
33                <interceptors>
34                     <interceptor name="alias"
35          class="com.opensymphony.xwork2.interceptor.AliasInterceptor"
36     />
37                     <interceptor name="chain"
38          class="com.opensymphony.xwork2.interceptor.ChainingInterceptor"
39     />
40                </interceptors>
41          </package>
42     </struts>

【代碼剖析】在struts-default.xml中定義了很多默認的Bean和Interceptor棧,可以在程序中直接使用。

5.3.4 Velocity模板規則文件

如果在程序中使用了Velocity(一個基于Java的模板引擎,可以替代JSP作為顯示頁面)可以把文件velocity.properties放到classpath中去,系統將自動加載。同時還要配置struts-default.vm文件,如實例5-2和實例5-3所示。

【實例5-2】屬性文件:velocity.properties

01     # Velocity 資源定義.
02     velocimacro.library = action-default.vm, tigris-macros.vm, myapp.vm

【實例5-3】配置文件:struts-default.vm

01     #macro(bean $bean_name $name)
02         #set ($name = $action.bean($bean_name))
03     #end
04     #macro(includeservlet $name)
05        $action.include($name, $req, $res)
06     #end
07     #macro(url $name)
08         #set ($name = $action.bean("org.apache.struts.util.URLBean"))
09         $name.setRequest($req)
10         $name.setResponse($res)
11     #end
12     #macro(property $object $property)
13     $!{ognl.findValue($property, $object)}
14     #end
主站蜘蛛池模板: 行唐县| 台中县| 翼城县| 安陆市| 卢氏县| 古田县| 右玉县| 长白| 宜君县| 山西省| 茌平县| 庆安县| 平泉县| 西宁市| 浦北县| 宁城县| 金溪县| 彭水| 吴川市| 涿州市| 射洪县| 宁海县| 敦煌市| 塔河县| 宜春市| 昭通市| 出国| 泰和县| 重庆市| 兴城市| 大悟县| 余干县| 长泰县| 西充县| 麦盖提县| 博客| 大荔县| 沧源| 沙田区| 陇川县| 榆林市|