struts2学习之---配置处理结果
2017-07-06 09:50
393 查看
Action处理完用户请求之后,将返回一个普通字符串,整个普通字符串就是一个逻辑视图名。Struts2通过配置逻辑视图名和物理视图名之间的映射关系,一旦系统受到Action返回的某个逻辑视图名,系统就会把对应的物理视图呈现给浏览者。
局部结果:将
全局结果:将
配置
name:该属性指定所配置的逻辑视图名。
type:该属性指定结果类型。
struts2默认的结果类型就是dispatcher(用于与JSP整合的结果类型)。
省略了name属性,系统将采用默认的name属性值,默认的name属性值为success。
1.plainText结果类型
这个结果类型不常用,因为它的作用太过于局限,主要用于显示实际视图资源的源代码。
location:指定实际的视图资源。
charSet:指定输出页面时所用的字符集。
2.redirect结果类型
这种结果类型与dispatcher结果类型相对,dispatcher结果类型是将请求forward(转发)到指定的JSP资源;而redirect结果类型,则意味着将请求redirect(重定向)到指定的视图资源。重定向会丢失所有的请求参数、请求属性,当然也会丢失了Action的处理结果。
使用redirect结果类型的效果是,系统将调用HttpServletResponse的sendRedirect(String)方法来重定向指定视图资源,这种重定向的效果就是重新产生一个请求。当Action处理完用户请求后,再次向视图资源发送一次新的请求。
location:该参数指定Action处理完用户请求后跳转的地址。
parse:该参数指定是否允许在location参数中使用表达式,默认是true。
3.redirectAction结果类型
这种结果类型与redirect类型非常相似,一样是重新生成一个全新的请求,区别在于:redirectAction使用ActionMapperFactory提供的ActionMapper来重定向请求。
当需要一个Action处理结束后,直接将请求重定向(是重定向,不是转发)到
4000
另一个Action时,就应该使用这种结果类型。
actionName:该参数指定重定向的Action名。
namespace:该参数指定需要重定向的Action所在的命名空间。
上面的配置中使用过了
这要求在对应的Action类里应该包含target属性,该属性值决定实际的视图资源。
如果一个Action里包含了与全局结果里同名的结果,则Action里的局部Result会覆盖全局Result。当Action处理用户请求结束后,会首先在本Action里的局部结果里搜索逻辑视图对应的结果,只有在Action里的局部结果里找不到逻辑视图对应的结果,才会到全局结果里搜索。
struts2应用可由Action、拦截器添加PreResultListener监听器,添加PreResultListener监听器通过ActionInvocation的addPreResultListener()方法完成。一旦为Action添加了PreResultListener监听器,该监听器就可以在应用转入实际物理视图之前回调监听器的beforeResult()方法;一旦为拦截器添加了PreResultListener监听器,该监听器会对该拦截器的所有Action起作用。
1.配置结果
struts2在struts.xml文件中使用<result.../>元素来配置结果,根据
<result.../>所在位置的不同,分为:
局部结果:将
<result.../>作为
<action.../>元素的子元素配置。
全局结果:将
<result.../>作为
<global-results.../>元素的子元素配置。
配置
<result.../>元素时通常有两个属性:
name:该属性指定所配置的逻辑视图名。
type:该属性指定结果类型。
struts2默认的结果类型就是dispatcher(用于与JSP整合的结果类型)。
省略了name属性,系统将采用默认的name属性值,默认的name属性值为success。
2.struts2支持的结果类型
结果类型决定了Action处理结束后,下一步将调用哪种视图资源来呈现处理结果。struts2的结果类型要求实现com.opensymphony.xwork2.Result,这个结果是所有结果类型的通用接口。1.plainText结果类型
这个结果类型不常用,因为它的作用太过于局限,主要用于显示实际视图资源的源代码。
location:指定实际的视图资源。
charSet:指定输出页面时所用的字符集。
<result type="plainText"> <param name="loaction">/WEB-INF/content/welcome.jsp</param> <param name="charSet">GBK</param> </result>
2.redirect结果类型
这种结果类型与dispatcher结果类型相对,dispatcher结果类型是将请求forward(转发)到指定的JSP资源;而redirect结果类型,则意味着将请求redirect(重定向)到指定的视图资源。重定向会丢失所有的请求参数、请求属性,当然也会丢失了Action的处理结果。
使用redirect结果类型的效果是,系统将调用HttpServletResponse的sendRedirect(String)方法来重定向指定视图资源,这种重定向的效果就是重新产生一个请求。当Action处理完用户请求后,再次向视图资源发送一次新的请求。
location:该参数指定Action处理完用户请求后跳转的地址。
parse:该参数指定是否允许在location参数中使用表达式,默认是true。
3.redirectAction结果类型
这种结果类型与redirect类型非常相似,一样是重新生成一个全新的请求,区别在于:redirectAction使用ActionMapperFactory提供的ActionMapper来重定向请求。
当需要一个Action处理结束后,直接将请求重定向(是重定向,不是转发)到
4000
另一个Action时,就应该使用这种结果类型。
actionName:该参数指定重定向的Action名。
namespace:该参数指定需要重定向的Action所在的命名空间。
3.动态结果
动态结果的含义是指在指定实际视图资源时使用了表达式语法,通过这种语法可以允许Action处理完用户请求后,动态转入实际的视图资源。<action name="crud_*" class="" method="{1}"> <result>/WEB-INF/content/{1}.jsp</result> </action>
4.Action属性值决定物理视图资源
<action name="save" class="" method="save"> <result type="redirect">edit.action?skillName=${currentSkill.name}</result> </action>
上面的配置中使用过了
${currentSkill.name}表达式来指定结果视图资源,要求在对应的Action实例里包含currentSkill属性,且currentSkill属性必须包含name属性,否则表达式的值为null。
<result>/WEB-INF/content/${target}.jsp</result>
这要求在对应的Action类里应该包含target属性,该属性值决定实际的视图资源。
5.全局结果
当在<global-results.../>元素中配置
<result.../>元素时,该
<result.../>元素配置了一个全局结果,全局结果对所有的Action都有效。
如果一个Action里包含了与全局结果里同名的结果,则Action里的局部Result会覆盖全局Result。当Action处理用户请求结束后,会首先在本Action里的局部结果里搜索逻辑视图对应的结果,只有在Action里的局部结果里找不到逻辑视图对应的结果,才会到全局结果里搜索。
6.使用PreResultListener
PreResultListener是一个监听器接口,它可以在Action完成控制处理之后,系统转入实际的物理视图之间被回调。struts2应用可由Action、拦截器添加PreResultListener监听器,添加PreResultListener监听器通过ActionInvocation的addPreResultListener()方法完成。一旦为Action添加了PreResultListener监听器,该监听器就可以在应用转入实际物理视图之前回调监听器的beforeResult()方法;一旦为拦截器添加了PreResultListener监听器,该监听器会对该拦截器的所有Action起作用。
public class LoginAction extends ActionSupport{ private String username; private String password; public String execute() throws Exception{ ActionInvocation invocation = ActionContext.getContext().getActionInvocation(); invocation.addPreResultListener(new PreResultListener{ public void beforeResult(ActionInvocation invocation,String resultCode){ System.out.println("返回的逻辑视图名为:" + resultCode); invocation.getInvocationContext().put("extra",new java.util.Date() + "由" + resultCode + "逻辑视图名转入"); } } ) } }
相关文章推荐
- day27_struts2のPPT学习4——04 配置处理结果.ppt
- 【学习笔记】Struts2之配置处理结果
- 配置处理结果---struts2学习笔记
- 深入 Struts2 的配置 - 处理多个请求-处理请求结果-模型驱动-异常机制
- struts2学习:配置篇值请求处理元素
- struts2系列学习笔记(6)---------------Action的结果处理
- struts2学习:配置篇值请求处理元素
- Struts2学习之处理结果
- [Struts2官方指南的个人学习和翻译] Struts2的配置元素-请求处理元素
- struts2系列学习笔记(7)---------------其它形式的结果处理
- 3.7.3: 配置处理结果---Struts2支持的结果类型
- [原创]java WEB学习笔记69:Struts2 学习之路-- 消息处理与国际化,概述,配置国际资源文件,访问国际化消息,通过超链接切换语言
- struts2自主学习之动态方法调用,使用method属性,配置Result,结果类型
- Struts2笔记――3.配置处理结果
- Struts2中配置处理结果及异常处理
- Struts2学习笔记之struts.xml配置常量和Action处理流程
- Struts2学习笔记之struts.xml配置常量和Action处理流程
- struts2配置结果页面路径以节省配置--shopxx学习
- 一步一步学习struts2(3):Action的配置
- Struts2学习-- 配置常量