struts2学习之---配置处理结果
来源:互联网 发布:mysql pdf 微盘 编辑:程序博客网 时间:2024/05/16 03:21
Action处理完用户请求之后,将返回一个普通字符串,整个普通字符串就是一个逻辑视图名。Struts2通过配置逻辑视图名和物理视图名之间的映射关系,一旦系统受到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处理结束后,直接将请求重定向(是重定向,不是转发)到另一个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 + "逻辑视图名转入"); } } ) } }
- struts2学习之---配置处理结果
- Struts2学习之处理结果
- 配置处理结果---struts2学习笔记
- struts2学习之---配置struts2的异常处理
- Struts2中配置处理结果及异常处理
- struts2自主学习之动态方法调用,使用method属性,配置Result,结果类型
- struts2处理结果类型
- struts2 处理结果类型
- struts2:处理结果类型
- struts2 处理结果
- struts2--全局结果集和异常处理配置
- struts2配置结果页面路径以节省配置--shopxx学习
- struts2系列学习笔记(6)---------------Action的结果处理
- struts2系列学习笔记(7)---------------其它形式的结果处理
- Struts2学习之package配置
- struts2学习之---配置Action
- struts2结果处理方式(结果跳转方式)
- Struts2学习笔记(5)-处理结果及结果类型详解
- ionic之 ActionSheetController
- zxing使用笔记
- export与module.export的区别和用法
- Spring MVC 4.1.0配置Jackson
- HAProxy安装配置详解
- struts2学习之---配置处理结果
- PCB中过孔和通孔焊盘的区别
- 华为OJ——整数与IP地址间的转换
- Eclipse报错Java compiler level does not match the version of the installed Java project facet.解决办法
- Android Studio 快捷键
- asyncio文档学习——消息循环EventLoop例子2
- 进程和线层之间的关系
- Angular的过滤器和自定义过滤器
- Git版本恢复命令reset(转载)