1. 结果页面存在两种方式
* 全局结果页面(有很多时候我们会跳转到同一页面,所以我们可以配置一个全局结果页面,不管什么情况都会跳转到这个页面)
> 条件:如果<package>包中的一些action都返回success,并且返回的页面都是同一个JSP页面,这样就可以配置全局的结果页面。
> 全局结果页面针对的当前的包中的所有的Action,但是如果局部还有结果页面,会优先局部的。使用的标签是
<global-results>
<result>/demo3/suc.jsp</result>
</global-results>
如果返回的是success,则我们统一跳转到同一页面。在package标签中写如上的global-results标签。这样就不用在action表现中写局部页面跳转了
* 局部结果页面(我们在action标签中写的result标签,属于局部结果页面跳转)
<result>/demo3/suc.jsp</result>
2. 结果页面的类型
* 结果页面使用<result>标签进行配置,包含两个属性
> name -- 逻辑视图的名称
> type -- 跳转的类型,值一些,需要掌握一些常用的类型。常见的结果类型去struts-default.xml中查找。
* dispatcher -- 转发.type的默认值.Action--->JSP
* redirect -- 重定向. Action--->JSP(这样request域就无效了)
* chain -- 多个action之间跳转.从一个Action转发到另一个Action. Action---Action
* redirectAction -- 多个action之间跳转.从一个Action重定向到另一个Action. Action---Action
* stream -- 文件下载时候使用的
举例说明多个Action之间的跳转:
书写Demo3Action类,在该类中书写了两个方法,我们演示一下从自己的action中的save跳转到自己action中的del方法:
package com.huida.action; import com.opensymphony.xwork2.ActionSupport; public class Demo3Action extends ActionSupport{ //现在想要实现从自己Action中的save跳到自己Action中的del //Demo3Action save--->Demo3Action del public String save(){ System.out.println("save"); return SUCCESS; } public String del(){ System.out.println("delete"); return SUCCESS; } }
对action进行配置:
<struts> <package name="default" namespace="/" extends="struts-default"> <action name="demo3Action_*" class="com.huida.action.Demo3Action" method="{1}"><!-- 通配符的方式 --> <result name="success" type="redirectAction">/demo3Action_del</result><!-- 从demo1Action中跳转到suc.jsp页面,默认的方式为请求转发的方式。如果在result标签中设定转发类型为重定向redirect,那么在request域中就不能通过put获取到值 --> </action> </package> </struts>
使用通配符的方式进行函数的访问。启动浏览器,在搜索栏中输入:http://localhost:8080/struts2_day02/demo3Action_save进行访问,访问结束后会跳转到 demo3Action中的del方法中。在控制台会输出如下,表示对save和del方法的访问: