1.2 struts.xml
struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等。还可以使用<constant name="" value=""></constant>配置struts.properties中的属性
1.2.1 跳转类型
chain:Action链式处理的结果类型,也就是将结果转发到这个action中。
chart:整合JFreeChart的结果类型
dispatcher:用于整合JSP的结果类型
freemarker:用于整合freemarker结果类型。
httpheader:用于控制特殊的HTTP行为的结果类型。
jasper:用于JasperReports整合的结果类型
jsf:用于整合JSF后的结果类型
redirect:实际上dispatcher和redirect的区别就是在于转发和重定向的区别。
redirectAction:用于直接redirect action。
stream:用于向浏览器返回一个Inputstream(用于文件下载)
tiles:用于整合Tiles后的结果类型。
velocity:用于整合Velocity的结果类型。
xslt:用于整合XML LT的结果类型。
plaintext:用于显示某个页面的源代码。
1.2.2 示例1
<?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>
<constant name="struts.custom.i18n.resources"
value="ApplicationResources,Constant">
</constant>
<constant name="struts.devMode" value="false" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.objectFactory" value="spring" />
<include file="struts/struts-manage.xml" />
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="userLoginInterceptor"
class="***.interceptors.UserLoginInterceptor">
</interceptor>
<interceptor-stack name="userLoginStack">
<interceptor-ref name="userLoginInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 全局跳转 ,继承于这个包的包将都会有一个默认的全局跳转页面-->
<global-results>
<result name="login">/commons/error/login.jsp</result>
<result>/commons/success.jsp</result>
<result name="error">/commons/error/actionerror.jsp</result>
<result name="input">/commons/error/actionerror.jsp</result>
<result name="certerror">
/commons/error/certerror.jsp
</result>
<result name="exception">/commons/error/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="exception" exception="***.common.exception.BusinessException">
</exception-mapping>
<exception-mapping result="exception" exception="***.common.exception.DataException">
</exception-mapping>
<exception-mapping result="exception" exception="***.common.util.lucenesearch.exceptions.LunceneSearchException">
</exception-mapping>
<exception-mapping result="exception" exception="java.lang.RuntimeException">
</exception-mapping>
<exception-mapping result="exception" exception="java.lang.Exception">
</exception-mapping>
</global-exception-mappings>
</package>
<!-- 管理模块继承的package,管理模块可以和其他模块分开定义全局跳转及异常等 -->
<package name="books-manage" extends="default">
<interceptors>
<interceptor name="userManageLogin"
class="***.interceptors.UserManageInterceptor" />
<!-- 自定义拦截器堆栈 -->
<interceptor-stack name="adminStack">
<interceptor-ref name="userManageLogin" />
<!-- 引用默认的拦截器堆栈,如果不用defaultStack,则表单值将会被页面跳转后返回-->
<interceptor-ref name="defaultStack" />
</interceptor-stack>
<interceptor name="bookManageTopNavigatorInterceptor"
class="***.interceptors.BookManageTopNavigatorInterceptor" />
<interceptor-stack name="bookManageTopNavigatorStack">
<interceptor-ref name="bookManageTopNavigatorInterceptor" />
<interceptor-ref name="adminStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="adminStack" />
<global-results>
<result name="login">/login.jsp</result>
</global-results>
</package>
</struts>