我们就一起来简单学习一下Action的4种Result type类型,分为:dispatcher(服务端页面跳转);redirect(客户端页面跳转);chain(动作链跳转);redirectAction(客户端Action跳转),当然还有其他类型,这里我们就以这四种为例为大家介绍一下,其他几种大家有兴趣单独学习。下面我们一起来看一下上面四种的具体实现,首先是我们的配置文件:

<package name="resultFilter" namespace="/resultFilter" extends="struts-default">
        <!-- http://localhost:8080/Struts/resultFilter/default -->
        <action name="default" class="com.edu.action.ResultFilter">
            <result name="success">/default.jsp</result>
        </action>
        
        <!-- http://localhost:8080/Struts/resultFilter/dispatcher 服务端跳转-->
        <action name="dispatcher" class="com.edu.action.ResultFilter" method="Dispatcher">
            <result name="success" type="dispatcher">/dispatcher.jsp</result>
        </action>
        
        <!-- http://localhost:8080/Struts/resultFilter/redirect   客户端跳转 -->
        <action name="redirect" class="com.edu.action.ResultFilter" method="Redirect">
            <result name="success" type="redirect">/redirect.jsp</result>
        </action>
        
        <!-- http://localhost:8080/Struts/resultFilter/chain 动作链跳转-->
        <!-- http://blog.csdn.net/randomnet/article/details/8656759 -->
        <action name="chain" class="com.edu.action.ResultFilter" method="Chain">
            <result name="success" type="chain">chain1</result>
        </action>
        <action name="chain1" class="com.edu.action.ResultFilter" method="Chain">
            <result name="success">/chain.jsp</result>
        </action>
        
        <!-- http://localhost:8080/Struts/resultFilter/redirectAction 客户端跳转-->
        <action name="redirectAction" class="com.edu.action.ResultFilter" method="RedirectAction">
            <result name="success" type="redirectAction">
                <param name="namespace">/redirectAction</param>
                <param name="actionName">default</param>
            </result>
        </action>

<!-- http://localhost:8080/Struts/resultFilter/redirectAction 客户端跳转(单值传参)-->
        <action name="redirectAction" class="com.edu.action.ResultFilter" method="RedirectAction">
            <result name="success" type="redirectAction">
                <param name="namespace">/redirectAction</param>
                <param name="actionName">default?value1=${value1}</param>
            </result>
        </action>

<!-- http://localhost:8080/Struts/resultFilter/redirectAction 客户端跳转(多值传参)-->
        <action name="redirectAction" class="com.edu.action.ResultFilter" method="RedirectAction">
            <result name="success" type="redirectAction">
                <param name="namespace">/redirectAction</param>
                <param name="actionName">default</param>
                <param name="value1">${value1}</param>
                <param name="value2">${value2}</param>
            </result>
        </action>
    </package>
    
    <package name="redirectAction" namespace="/redirectAction" extends="struts-default">
        <action name="default" class="com.edu.action.ResultFilter">
            <result name="success">/redirectAction.jsp</result>
        </action>

</package>

default action我们并没有设置result的type类型,系统默认设置为:dispatcher类型,dispatcher类型和redirect下只能跳转到页面,两者的区别在于,dispatcher类型属于服务端调转,地址栏不更新,redirect属于客户端跳转,地址栏会更新。chain类型属于动态链跳转,故我们在第二个Action中任然可以拿到传递给第一个Action的参数,我们可以在页面上添加<s:debug></s:debug>来查看具体信息。最后一个redirectAction大家一看配置一定已经明白了,这里就不再赘述。下面我们看一下chain动态链跳转,首先看一下我的jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<%@taglib uri="/struts-tags" prefix="s"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>Result类型跳转</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

</head>
  
  <body>
      result的chain跳转类型
      <s:debug></s:debug>
  </body>

</html>

 运行我们的工程,打开debug:

接口转发和重定向区别(三)相关推荐

  1. 接口转发和重定向区别(二)

    转发与重定向的区别如下: 转发是服务器行为,重定向是客户端行为 1.转发在服务器端完成的;重定向是在客户端完成的 2.转发的速度快;重定向速度慢 3.转发的是同一次请求;重定向是两次不同请求 4.转发 ...

  2. 接口转发和重定向区别(一)

    1 forword是RequestDispatcher 接口(请求转发) ,而 redirect是HttpServletResponse 接口(请求重定向) 2.response.sendRedire ...

  3. 接口转发和重定向区别(四)

    一.Chain Result: 这个result调用另外的一个action,连接自己的拦截器栈和result. actionName (默认) - 被调用的action的名字 namespace - ...

  4. 创建线程的几种方式?JSP的九大内置对象及作用分别是什么?servlet的生命周期及常用方法?转发和重定向区别?ajax书写方式及内部主要参数都有哪些

    文章目录 1 , 创建线程的几种方式? 问题扩展: 2 ,JSP的九大内置对象及作用分别是什么? (1) 问题分析: (2) 核心答案讲解: 1.request对象 2.response对象 3.se ...

  5. ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段...

    原文地址:ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段 ServletRequest 基本概念 ...

  6. 请求转发和重定向区别

    一.转发和重定向区别详解 作为一名程序员,特别是java web开发的程序员,在使用servlet/jsp的时候,我们必须要知道实现页面跳转的两种方式的区别和联系:即转发和重定向的区别. Reques ...

  7. 请求转发与重定向的区别和执行流程

    请求转发与重定向的区别和执行流程 文章目录 请求转发与重定向的区别和执行流程 1 请求转发与重定向区别 2 现实生活的例子 2.1 重定向 2.2 请求转发 3 重定向-流程图.代码.结果 3.1 流 ...

  8. JavaWeb之【转发与重定向】

    在一个web应用中应该如何完成资源的跳转 第一种方式:转发 代码 // 获取请求转发器对象,并调用请求转发器对象的方法forward完成转发 request.getRequestDispatcher( ...

  9. Servlet相关(request域转发、重定向、刷新头)(session域)

    >请求域的转发(request.getRequestDispatcher(/转发路径).forward(req,resp)) 转给静态的资源: 转给动态的servlet: >请求域设置属性 ...

最新文章

  1. 洛谷 P1958 上学路线-dfs
  2. vertical-align属性详解
  3. 易语言微凉模块oracle,跟着微凉学易语言 【简单子类化】
  4. 《解读NoSQL》——2.6 通过数据库分片获得水平扩展能力
  5. java 53个关键字_java的保留(53个)关键字v11.docx
  6. socket基本使用
  7. 公开课丨苏杰新著来袭,十年之后再谈人人都是产品经理!
  8. VMware Fusion for Apple silicon
  9. 08s01 mysql_mysql报错 code:08S01,msg:SQLSTATE
  10. 文件管理,文件判断,时间戳,通配符类命令
  11. Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比
  12. 《Node.js开发指南》MicroBlog项目的问题汇总
  13. 通过跳绳瘦下来是一种怎么样的体验?
  14. 视频大小与码率计算及像素及分辨率问题
  15. I2C操作笔记——以 AT24C04为例
  16. jmeter+csv+ant接口自动化测试--利用apache-ant执行测试用例并生成HTML格式测试报告(二)
  17. matlab Douglas-Peucker 道格拉斯-普克算法
  18. 四、指针高级应用总结
  19. 个人观点:Cisco和Juniper认证的比较
  20. TCP建立连接和断开连接流程

热门文章

  1. vue-ueditor 后端配置项没有正常加载_揭秘Gannt后端集成问题该如何解决
  2. c语言中的tanh函数,tanh()函数,用于C ++中的复数
  3. python奥运五环_python如何画奥运五环
  4. mysql查询数字比字符串快,与字符串相比,MySQL在where子句中使用数字更快吗?
  5. 我的世界服务器如何修改加载规模,我的世界服务器预加载区域怎么调小
  6. GetWindowRect和GetClientRect的区别详解
  7. Activiti工作流从入门到入土:整合spring
  8. 加密令牌与协议创新时代的到来
  9. 从白盒测试到单元测试基础原理
  10. paper 89:视频图像去模糊常用处理方法