实际上在Struts2框架中,一个完整的结果视图配置文件应该是:

<action name="Action名称" class="Action类路径" method="方法名">
<result name="逻辑视图名称" type="结果类型">
<param name="参数名称">参数值</param>
</result>
</action>
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后缀,已达到redirectAction结果类型效果。
<action name="redirect">
    <result type="redirect">/add.jsp</result>
</action>

<action name="redirect">
    <result type="redirect">addUser.action</result>
</action>
3、redirectAction。
1)这种方式可以简单的理解成转向到另一个Action。这种配置往往在下面的情况下需要用到:例如,当管理员添加完一个用户后,系统自动跳转到用户列表的界面。
2)这种结果类型与redirect类型非常相似,一样是重新生成一个全新的请求。但与redirect结果类型区别在于:redirectAction使用ActionMapperFactory提供的ActionMapper来重定向请求。
3)配置一个redirect类型的结果,可以指定如下两个参数。(针对不在同一个配置文件中)
    actionName:该参数指定重定向的Action名。
    namespace:该参数需要指定需要重定向的Action所在命名空间。
<action name="redirectAction">
   <result type="redirectAction">listAction</result>
</action>
该action必须和redirectAction处在同一个package下面。那么如果不在同一个包下,则需进行如下配置:
<result type="redirectAction">
   <param name="actionName">XXX</param>
   <param name="namespace">YYY</param>
</result>
4)使用redirectAction结果类型时,系统将重新生成一个请求,只是改请求的URL不是一个具体的视图资源,而是另一个Action。因此前一个Action处理结果、请求参数、请求属性会全部丢失。
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>
这时,index.jsp的源代码则会以文本方式显示在浏览器中。
6、freeMarker、Velocity。
用于指定使用FreeMarker、Velocity模板作为视图结果类型。
<result name="success"type="freemarker">foo.ftl</result> 
7、HttpHeader。
用来控制特殊的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>  
8、Stream。
向浏览器发送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>  
9、xslt。
用于与XML/XSLT整合的结果类型。

以上这么多,对于普通的项目来说,一般开发中直接用chain类型就好了,其他的本人认为几乎就是鸡肋。。。。

struts2中的结果视图类型的更多相关文章

  1. struts2 中的 result 返回类型是 json 的配置问题

    struts2 中的 result 返回类型是 json 的配置问题 1.引入包(本文中的包全部引自struts-2.1.8.1\lib): struts2-json-plugin-2.1.8.1.j ...

  2. Struts2中Action各种转发类型

    Struts2:Action中result的各种转发类型: 内部请求转发dispatcher(默认值) redirect.redirectAction.plainText1.redirect是重定向到 ...

  3. struts2中配置全局日期类型转换器

    1.编写一个类,继承StrutsTypeConverter,实现其中的convertFromString和convertToString方法,该类如下: package me.edu.utils; i ...

  4. Struts2中的校验框架

    Struts2提供的客户端校验 尽管这种支持比较弱,但采用Struts2中的客户端校验时需要注意以下几点 1..将<s:form validate="true">的va ...

  5. Struts2中的页面跳转

    内容源自:Struts2中的页面跳转 一.全局页面的设置如果<package>包中的一些action都返回success,并且返回的页面都是同一个JSP页面,这样就可以配置全局的结果页面. ...

  6. 04. struts2中Result配置的各种视图转发类型

    概述 <action name="helloworld" class="com.liuyong666.action.HelloWorldAction"&g ...

  7. struts2逻辑视图类型汇总与解释(转)

    在struts2框架中,当action处理完之后,就应该向用户返回结果信息,该任务被分为两部分:结果类型和结果本身. 结果类型提供了返回给用户信息类型的实现细节.结果类型通常在Struts2中就已预定 ...

  8. 【Struts2学习笔记(1)】Struts2中Action名称的搜索顺序和多个Action共享一个视图--全局result配置

    一.Action名称的搜索顺序 1.获得请求路径的URI,比如url是:http://server/struts2/path1/path2/path3/test.action 2.首先寻找namesp ...

  9. struts2中,Action通过什么方式获得用户从页面输入的数据,又是通过什么方式把其自身的数据传给视图的?

    struts2中,Action通过什么方式获得用户从页面输入的数据,又是通过什么方式把其自身的数据传给视图的? 解答: 1)可以直接通过与表单元素相同名称的数据成员(需要存在符合命名规范set和get ...

随机推荐

  1. web服务的三大主流架构

    1.远程过程调用 2.服务导向架构 3.表述性状态转移 今天在自学Spring架构时貌似发现 rest的表现.与RPC方式的最大差别,SOA方式更加关注如何去连接服务而不是去特定某个实现的细节.而re ...

  2. PHP面向对象知识点

    public private protected __construct() __destruct() __set() __get() extends(继承) :: (重载) abstract cla ...

  3. less和scss

    一.less基础语法 1.声明变量:@变量名:变量值:      使用变量:@变量名; 2.混合(Mixins) 1)无参混合 声明: .class{} 调用:在选择器中,使用.class;直接调用 ...

  4. 集美大学网络1413第十五次作业成绩(团队十) -- 项目复审与事后分析(Beta版本)

    题目 团队作业10--项目复审与事后分析(Beta版本) 团队作业10成绩 --团队作业10-1 Beta事后诸葛亮  团队/分值 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色 ...

  5. 201521123104《Java程序设计》第7周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码如下: pu ...

  6. 201521123055 《Java程序设计》第5周学习总结

    1. 本章学习总结 2. 书面作业 Q1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 1. ...

  7. JAVA2015086第十一周作业

    本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了 ...

  8. 201521123114 《Java程序设计》第10周学习总结

    1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 1. 创建线程方式: 定义Thread的子类 定义实现Runnable接口的类,实现run() 2. 调用s ...

  9. 201521123122 《java程序设计》第十三周学习总结

    ## 201521123122 <java程序设计>第十三周实验总结 ## 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1 ...

  10. 201521123068《Java程序设计》第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...