struts2的result的类型配置简介

时间:2022-07-27 20:15:31

一.在strut2的action处理完成后,就应该向用户返回结果信息result

  根据以下代码作为实例分析:

    

<package name="Hello" extends="struts-default">
<global-results>
<result name="error">error.jsp</result>
</global-results> <action name="hello" class="com.qgx.action.Student">
<result name="success" type="dispatcher">success.jsp</result>
<result name="r" type="redirect">success.jsp</result>
<result name="c" type="chain">hello2</result>
<result name="ra" type="redirectAction">hello2</result>
</action> <action name="hello2" class="com.qgx.action.Student2">
<result name="success">success.jsp</result>
</action> </package>

  1.dispatcher(为默认的type )

    org.apache.struts2.dispatcher.ServletDispatcherResult类的方法

    为result的默认类型,用来呈现jsp的页面

    请求转发,底层调用RequestDispatcher的forward()或include()方法,dispatcher是 type属性的默认值,通常用于转向一个JSP。localtion指定JSP的位置,parse如果为

false表示location的值不会被当作 OGNL解析,默认为true。

    为服务器端调转,浏览器的地址栏url不会发生变化,请求的内容在转发前后是共享的,可以带参数过去

  2.redirect(重定向)

    org.apache.struts2.dispatcher.ServletRedirectResult

将用户重定向到一个已配置好的URL

    底层调用response.sendRedirect("")方法

    重定向为客户端跳转,会改变URL地址,请求的内容在跳转前后不共享,也就是不带参数跳转

  3.chain(链式)

    com.opensymphony.xwork2.ActionChainResult
将action和另外一个action链接起来

    将action的带着原来的状态请求转发到新的action,两个action共享一个ActionContext,actionName指定转向的新的Action的名字。

    method指定转向哪个方法,namespace指定新的Action的名称空间,不写表示与原Action在相同的名称空间;

    skipActions指定一个使用 , 连接的Action的name组成的集合,一般不建议使用这种类型的结果

  4.redirectAction(重定向到Action)

    org.apache.struts2.dispatcher.ServletActionRedirectResult 
    将用户重定向到一个已定义好的action

    重定向到另一个Action,参数与chain用法相同,允许将原Action中的属性指定新名称带入新Action 中,可以在Result标签中添加 <param name=”b”>${a} </param>,

    这表示原Action中的变量a的值被转给b,下一个Action可以在值栈中使用b来操作,注意如果值是中文,需要做一些编码处理,因为Tomcat默认是不支持URL直接传递中文的!

  5.result全局配置,所有Action都可以共享

      <global-result></global-result>

   上述4个为常见的result类型,其他几个了解,不常用

    struts2的result的类型配置简介

  说明 result 的 name 属性:


  SUCCESS 
:Action正确的执行完成,返回相应的视图,success是name属性的默认值。
  NONE :表示Action正确的执行完成,但并不返回任何视图。
  ERROR :表示Action执行失败,返回到错误处理视图。
  INPUT :Action的执行,需要从前端界面获取参数,INPUT就是代表这个参数输入的界面,一般在应用中,会对这些参数进行验证,如果验证没有通过,将自动返回到该视图。
  LOGIN :Action因为用户没有登陆的原因没有正确执行,将返回该登陆视图,要求用户进行登陆验证。