Struts2系列之配置处理结果
1.理解处理结果
1.1:浏览器、控制器和视图资源的顺序图
2.配置结果
2.1:局部结果
将<result.../>作为<action.../>元素的子元素配置,一个<action.../>元素可以有多个<result.../>子元素,表示一个Action可以对应多个结果2.2:Struts2支持的结果类型
Struts2支持多种视图技术,例如JSP、Velocity和FreeMarker等。而结果类型决定了Action处理结束后,下一步将调用哪种视图资源来呈现处理结果2.3:简要介绍其中三种结果类型
2.3.1:palinText结果类型
主要用于显示实际视图资源的源代码:<result type="palinText”>
<!--指定实际的视图资源-->
<param type="location">/WEB-INF/*,jsp</param>
<!--指定使用指定的字符集来处理页面代码-->
<param name="charSet">GBK</param>
</result>
2.3.2:redirect结果类型
将请求redirect(重定向)到指定的视图资源:系统将调用HttpServletResponse的sendRedirect(String)方法来重定向指定视图资源使用redirect类型的结果时,不能重定向到/WEB-INF/路径下任何资源,因为重定向相当于重新发送请求,而Web应用的/WEB-INF/路径下资源是受保护资源
2.3.3:redirectAction结果类型
这种结果类型与redirect类型非常相似,一样是重新生成一个全新的请求。但redirectAction使用ActionMapperFactory提供的ActionMapper来重定向请求
当需要让一个Action处理结束后,直接将请求重定向到另一个Action时,就应该使用这种结果类型
<result type="redirectAction">
<!--指定重定向的actionName-->
<param name="actionName"></param>
<!--指定重定向的Action所在的命名空间-->
<param name="nameSpace"></param>
</result>
比较:redirect通常用于生成一个对具体资源的请求,而redirectAction通常用于生成对另一个Action的请求
2.4:动态结果
是指在指定实际视图资源时使用了表达式语法,通过这种语法可以允许Action处理完用户请求后,动态转入实际的视图资源;也可以使用OGNL表达式,这种用法允许根据Action属性值来2.5:Action属性值决定物理视图资源
配置<result.../>元素时,不仅可以使用${0}表达式来指定视图资源,还可以使用${属性名}的方法来指定视图资源;${属性名}里的属性名就是对应Action是实例里的属性。不仅允许使用这种简单的表达式,而且还可以使用完全的OGNL表达式,即使用这种形式:${属性名.属性名.属性名...}2.6:全局结果
当在<global-result.../>元素中配置<result.../>元素时,该<result.../>元素配置了一个全局结果,全局结果将对所有的Action有效
2.7:使用PreRestultListener
PreResultListener是一个监听器接口,它可以在Action完成控制处理之后,系统转入实际的物理视图之间被回调。
Struts2应用可由Action、拦截器添加PreResultListener监听器,添加PreResultListener监听器通过ActionInvocation的addPreResultListener()方法完成。一旦为Action添加了PreResultListener监听器,该监听器就可以在应用转入实际物理视图之前回调该监听器的beforeResult()方法:一旦为拦截器添加了PreResultListener监听器,该监听器会对该拦截器所拦截的所有Action都起作用