(5)Struts2之Result

1、Result就是Action中某个处理方法执行完毕后返回的一个字符串,用来指示下一个页面是哪个基本配置如下:

<action name="someAction" class="com.consion.demo.SomeAction">
       <result name="success">/page/jsp/welcome.jsp</result>
       <result name="input">/page/jsp/login.jsp</result>
</action>
其中Action返回的字符串对应于result中的name属性值。


2、Result类型有5中预设:

       a、SUCCESS:执行成功

       b、NONE:执行成功,但不需要显示视图给用户。

       c、ERROR: 执行失败,显示错误页面给用户。

       d、INPUT:表示执行Action需要更多的信息,回到INPUT对应的页面。

       e、LOGIN:表示用户没有登录,将返回登录页面。

3、Result中type属性值:

       a、dispatcher(默认)

            如果使用JSP则这种方式是最常用的,它的实现类是是ServletDispatcherResult,这个类对RequestDispatcher进行再包装,并调用该类的forward()方法,这意味着有一个request对象,这样我们就可以拥有这个request对象中的parameter、Head相

            关数据、Attribute以及Cookie。但是如果这个web资源是另一个Action的话,则不能使用这个,需要另一个ResultType:chain.

            完整的配置如下:

<result name="toWelcome" type="dispatcher">
    <param name="location">/demo/page/jsp/welcome.jsp</param>
    <param name="parse">true</param>
</result>
            以上的location是将要跳转到哪个页面,parse是否通过OGNL来引用参数,默认为true。

      b、redirect

            这种方式相当于响应重定向,是一次全新的请求。注意这种方式如果使用get方式将参数传递到另一个页面,则接受需要用request方式(<%=request.getParameter("account")%>)或者EL表达式方式(${param['account']})。如果使用struts2中

            的<s:property value="account"/>则不会获取到该值,因为这种方式是通过struts2的值栈来获取的,但是值栈中没有有这个值,因为没有通过某个Action来为这个属性赋值,而是直接通过跳转到下一个页面这种方式。

<result name="toWelcome" type="redirect">
    <param name="location">/demo/page/jsp/welcome.jsp?account=${message}</param>
    <param name="parse">true</param>
</result>
     c、chain.

           这是一种特殊的ResultType,用来从Action执行完链接到另一个Action的,这个新的Action会带着上一个Action的ActionContext据徐执行的。

<result name="toWelcome" type="chain">
    <param name="actionName">someAction.action</param>
    <param name="namespace">/</param>
 </result>

4、全局的Result。可以配置登录页面,让没有登录的用户直接跳转到登录页面。

<package name="somepackage" extends="struts-default" >
    <global-results>
        <result name="login">/login.jsp</result>

    </global-results>
    <action>
           ........
    </action>

</package>



5、Struts2的异常映射,不用在Action中try-catch

局部异常映射:

<package name="somepackage" extends="struts-default" >
   
    <action ...>
         <exception-mapping result="math-exception" exception="java.lang.ArithmeticException"/>
         <exception-mapping result="math-exception" exception="java.lang.Exception"/>
         <result name="math-exception" >/error.jsp</result >
 ........
    </action>
</package>



全局异常映射:
<package name="somepackage" extends="struts-default" >
    

    <global-results>
        <result name="math-exception">/error.jsp</result>

    </global-results>

    <global-exception-mappings>

         <exception-mapping result="math-exception" exception="java.lang.ArithmeticException"/>
         <exception-mapping result="math-exception" exception="java.lang.Exception"/>

    </global-exception-mappings>


    <action ...>
        ........
    </action>
</package


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值