结果页面存在两种方式
全局结果页面
- 条件:如果
<package>
包中的一些action都返回success,并且返回的页面都是同一个JSP页面,这样就可以配置全局的结果类型- 全局结果页面针对的当前的包中的所有的Action,但是如果局部还有结果页面,会优先局部的,使用的标签是:
<global-results>
<result name="success">/demo3/suc.jsp</result>
</global-results>
<package name="demo1" extends="struts-default" namespace="/">
<global-results>
<result>/demo1/suc.jsp</result>
</global-results>
<action name="demo1Action" class="com.zst.demo1.Demo1Action" >
<!-- <result name="success">/demo1/suc.jsp</result>-->
</action>
<!--原生的方式-->
<action name="demo2Action" class="com.zst.demo1.Demo2Action" >
<!-- <result name="success" >/demo1/suc.jsp</result>-->
</action>
</package>
局部结果页面
<result>/demo3/suc.jsp</result>
结果页面的类型
结果页面使用
<result>
标签进行配置,包含两个属性
- name------逻辑视图的名称
- type------跳转的类型,值一些,需要掌握一些常用的类型。常见的结果页面类型去struts-default.xml中查找
** dispatcher----转发,type的默认值.Action—>JSP
** redirect----重定向,Action---->JSP
** chain----多个action之间跳转,从一个Action转发到另一个Action。Action—>Action
** redirectAction—过个action之间跳转,从一个Action重定向到另一个Action。Action—> Action
** stream----文件下载时候使用的
<!--转发-->
<global-results>
<result name="success" type="dispatcher">/demo1/suc.jsp</result>
</global-results>
<!--转发*(一次请求)可以获取request中的值-->
<!--重定向-->
<global-results>
<result name="success" type="redirect">/demo1/suc.jsp</result>
</global-results>
<!--重定向是两次请求,第二次请求时会创建一个新的request对象-->
重定向到Action
<!--通配符的方式-->
<action name="demo3Action_*" class="com.zst.demo1.Demo3Action" method="{1}">
<!--写重定向的方法名 -->
<result name="success" type="redirectAction">demo3Action_update</result>
</action>
从Demo3Action中的save方法重定向到update方法
public class Demo3Action extends ActionSupport{
public String save(){
System.out.println("save,,,");
return SUCCESS;
}
public String update(){
System.out.println("update,,,");
return NONE;
}
}