上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应用的全局属性。