Java后台框架篇--Struts2.0之结果视图类型
2017-09-29 18:52
441 查看
实际上在Struts2框架中,一个完整的结果视图配置文件应该是:
1、dispatcher方式。
这种方式是struts2中默认的转发类型,即内部请求转发,类似于forward的方式。用于指定使用JSP作为视图的结果类型。
2、redirect方式。
用于直接跳转到其他URL的结果类型。
1)这种结果类型与dispatcher结果类相对,dispatcher结果类型是将请求forword(转发)到指定的JSP资源;而redirect结果类型,则意味着将请求redirect(重定向)到指定的视图资源。
2)dispatcher与redirect的差别就是重定向和转发的差别:重定向会丢失所以的参数、请求属性--当然也就丢失了Action的出来结果。
3)使用redirect结果类型的效果是,系统将调用HttpServletResponse的sendRedirect(String)方法来重定向指定视图资源,这种重定向的效果就是重新产生一个请求,因此所有的请求参数、请求属性、Action实例和Action中封装的属性全部丢失。地址栏的URL会发生改变。
4)配置一个redirect类型结果,可以指定如下两个参数。
location:改参数指定Action处理完用户请求后跳转的地址。
parse:改参数指定是否允许在location参数值中使用表达式,改参数默认为true。与前面的类似,通常无需指定parse属性值。
5)使用这个类型也可以指定跳到一个Action,只是需要添加.action后缀,已达到redirectAct
1086d
ion结果类型效果。
3、redirectAction。
1)这种方式可以简单的理解成转向到另一个Action。这种配置往往在下面的情况下需要用到:例如,当管理员添加完一个用户后,系统自动跳转到用户列表的界面。
2)这种结果类型与redirect类型非常相似,一样是重新生成一个全新的请求。但与redirect结果类型区别在于:redirectAction使用ActionMapperFactory提供的ActionMapper来重定向请求。
3)配置一个redirect类型的结果,可以指定如下两个参数。(针对不在同一个配置文件中)
actionName:该参数指定重定向的Action名。
namespace:该参数需要指定需要重定向的Action所在命名空间。
该action必须和redirectAction处在同一个package下面。那么如果不在同一个包下,则需进行如下配置:
4)使用redirectAction结果类型时,系统将重新生成一个请求,只是改请求的URL不是一个具体的视图资源,而是另一个Action。因此前一个Action处理结果、请求参数、请求属性会全部丢失。
4、chain。
这个视图类型也用了跳转到另一个Action,与前面的不同的是,他的请求参数和属性都可以保留,比如,系统中的删除功能,回到之前查询的action,要保存页码回到之前删除记录的当前页,用chain就可以做到,几乎几乎就是前面两种的增强版。推荐开发中直接忽略redirect和redirectAction类型,直接用这个chain就好了。但很奇怪,在MyEclipse8.6下会报错,这个可能就比较坑爹了,令人郁闷!但并不影响运行结果。可能是Myeclipse8.6的Bug吧。
5、plainText。
这种方式一般来说使用的比较少,可能用到的情况:原样输出源代码。配置如下:
这时,index.jsp的源代码则会以文本方式显示在浏览器中。
6、freeMarker、Velocity。
用于指定使用FreeMarker、Velocity模板作为视图结果类型。
7、HttpHeader。
用来控制特殊的Http行为。
8、Stream。
向浏览器发送InputSream对象,通常用来处理文件下载。
9、xslt。
用于与XML/XSLT整合的结果类型。
以上这么多,对于普通的项目来说,一般开发中直接用chain类型就好了,其他的本人认为几乎就是鸡肋。。。。
1、dispatcher方式。
这种方式是struts2中默认的转发类型,即内部请求转发,类似于forward的方式。用于指定使用JSP作为视图的结果类型。
2、redirect方式。
用于直接跳转到其他URL的结果类型。
1)这种结果类型与dispatcher结果类相对,dispatcher结果类型是将请求forword(转发)到指定的JSP资源;而redirect结果类型,则意味着将请求redirect(重定向)到指定的视图资源。
2)dispatcher与redirect的差别就是重定向和转发的差别:重定向会丢失所以的参数、请求属性--当然也就丢失了Action的出来结果。
3)使用redirect结果类型的效果是,系统将调用HttpServletResponse的sendRedirect(String)方法来重定向指定视图资源,这种重定向的效果就是重新产生一个请求,因此所有的请求参数、请求属性、Action实例和Action中封装的属性全部丢失。地址栏的URL会发生改变。
4)配置一个redirect类型结果,可以指定如下两个参数。
location:改参数指定Action处理完用户请求后跳转的地址。
parse:改参数指定是否允许在location参数值中使用表达式,改参数默认为true。与前面的类似,通常无需指定parse属性值。
5)使用这个类型也可以指定跳到一个Action,只是需要添加.action后缀,已达到redirectAct
1086d
ion结果类型效果。
<action name="redirect"> <result type="redirect">/add.jsp</result> </action> <action name="redirect"> <result type="redirect">addUser.action</result> </action> |
1)这种方式可以简单的理解成转向到另一个Action。这种配置往往在下面的情况下需要用到:例如,当管理员添加完一个用户后,系统自动跳转到用户列表的界面。
2)这种结果类型与redirect类型非常相似,一样是重新生成一个全新的请求。但与redirect结果类型区别在于:redirectAction使用ActionMapperFactory提供的ActionMapper来重定向请求。
3)配置一个redirect类型的结果,可以指定如下两个参数。(针对不在同一个配置文件中)
actionName:该参数指定重定向的Action名。
namespace:该参数需要指定需要重定向的Action所在命名空间。
<action name="redirectAction"> <result type="redirectAction">listAction</result> </action> |
<result type="redirectAction"> <param name="actionName">XXX</param> <param name="namespace">YYY</param> </result> |
4、chain。
这个视图类型也用了跳转到另一个Action,与前面的不同的是,他的请求参数和属性都可以保留,比如,系统中的删除功能,回到之前查询的action,要保存页码回到之前删除记录的当前页,用chain就可以做到,几乎几乎就是前面两种的增强版。推荐开发中直接忽略redirect和redirectAction类型,直接用这个chain就好了。但很奇怪,在MyEclipse8.6下会报错,这个可能就比较坑爹了,令人郁闷!但并不影响运行结果。可能是Myeclipse8.6的Bug吧。
5、plainText。
这种方式一般来说使用的比较少,可能用到的情况:原样输出源代码。配置如下:
<action name="abc" > <result type="plainText"> <param name="location">/index.jsp</param> <param name="charSet">UTF-8</param> </result> </action> |
6、freeMarker、Velocity。
用于指定使用FreeMarker、Velocity模板作为视图结果类型。
<result name="success"type="freemarker">foo.ftl</result> |
用来控制特殊的Http行为。
<result name="success"type="httpheader"> <paramname="status">204</param> <paramname="headers.a">a custom header value</param> <paramname="headers.b">another custom header value</param> </result> <result name="proxyRequired"type="httpheader"> <paramname="error">305</param> <paramname="errorMessage">this action must be accessed through aprozy</param> </result> |
向浏览器发送InputSream对象,通常用来处理文件下载。
<result name="success"type="stream"> <paramname="contentType">image/jpeg</param> <paramname="inputName">imageStream</param> <paramname="contentDisposition">attachment;filename="document.pdf"</param> <paramname="bufferSize">1024</param> </result> |
用于与XML/XSLT整合的结果类型。
以上这么多,对于普通的项目来说,一般开发中直接用chain类型就好了,其他的本人认为几乎就是鸡肋。。。。
相关文章推荐
- Java后台框架篇--Struts2.0之牛刀小试
- Java后台框架篇--Struts2.0与Action
- Java后台框架篇--Struts2.0之Action的参数接收
- Java后台框架篇--Struts2.0简单使用
- Java后台框架篇--Struts2.0与OGNL表达式
- Java后台框架篇--Struts2.0之总结
- Java后台框架篇--Struts2.0UI组件标签
- Java后台框架篇--Struts2.0标签库
- Java后台框架篇--Struts2.0核心与工作原理
- Java后台框架篇--Struts2.0控制器组件
- Java后台框架篇--Struts2.0与验证框架
- Java后台框架篇--EL表达式为什么可以取到struts值栈中的值
- Java后台架构篇--Struts2.0体系结构图以及详解
- struts.xml中的结果类型与视图
- Java后台框架篇--Struts之简介
- 5、struts.xml中的结果类型与视图
- struts.xml中的结果类型与视图
- Java后台框架篇--Struts与SSH
- Struts2.x学习五(struts.xml中的结果类型与视图)
- Java后台框架篇--Spring依赖注入和控制反转