Struts 2.x权威指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3.3 Struts2的配置文件

当Struts 2创建系统的Action代理时,需要使用Struts 2的配置文件。Struts 2的配置文件有两份:

配置Action的struts.xml文件。

配置Struts 2全局属性的struts.properties文件。

struts.xml文件内定义了Struts 2的系列Action,定义Action时,指定该Action的实现类,并定义该Action处理结果与视图资源之间的映射关系。

下面是struts.xml配置文件的示例。

<struts>
    <!-- Struts 2的Action都必须配置在package里 -->
    <package name="default" extends="struts-default">
          <!-- 定义一个login的Action,实现类为org.crazyit.action.LoginAction -->
          <action name="login" class="org.crazyit.action.LoginAction">
                <!-- 配置Action返回input时转入/content/login.jsp页面 -->
                <result name="input">/content/login.jsp</result>
                <!-- 配置Action返回cancel时重定向到名为welcome的Action-->
                <result name="cancel" type="redirectAction">welcome</result>
                <!-- 配置Action返回success时重定向到名为mainMenu的Action -->
                <result type="redirectAction">mainMenu</result>
                <!-- 配置Action返回expired时转发到名为changePassword的Action -->
                <result name="expired" type="chain">changePassword</result>
          </action>
          <!-- 定义logoff的Action,实现类为org.crazyit.action.LogoffAction -->
          <action name="logoff" class="org.crazyit.action.LogoffAction">
                <!-- 配置Action返回success时重定向到名为welcome的Action -->
                <result type="redirectAction">welcome</result>
          </action>
    </package>
</struts>

在上面的struts.xml文件中,定义了两个Action。定义Action时,不仅定义了Action的实现类,而且在定义Action的处理结果时,指定了多个<result.../>,<result.../>元素指定execute方法返回值和视图资源之间的映射关系。对于如下配置片段:

<result name="cancel" type="redirectAction">welcome</result>

表示当execute方法返回cancel字符串时,重定向到welcome的Action。定义result元素时,可以指定两个属性:type和name。其中name指定了execute方法返回的字符串,而type指定了转向的资源类型,此处转向的资源可以是JSP,也可以是FreeMarker等,甚至是另一个Action——这也是Struts 2可以支持多种视图技术的原因。

除此之外,Struts 2还有一个配置Struts 2全局属性的Properties文件:struts.properties。该文件的示例如下:

# 指定Struts 2处于开发状态
struts.devMode = false
# 指定当Struts 2配置文件改变后,Web框架是否重新加载Struts 2配置文件
struts.configuration.xml.reload=true

正如上面看到的,struts.properties文件的形式是系列的key、value对,它指定了Struts 2应用的全局属性。