getRequestDispatcher是服务器内部跳转,地址栏信息不变,只能跳转到web应用内的网页。 
sendRedirect是页面重定向,地址栏信息改变,可以跳转到任意网页。 
这两条网上都查得到,但看着比较乱,现提供我测试的结果(仅供参考): 
1.getRequestDispatcher分成两种,可以用request调用,也可以用getServletContext()调用 
   不同的是request.getRequestDispatcher(url)的url可以是相对路径也可以是绝对路径。 
   而this.getServletContext().getRequestDispatcher(url)的url只能是绝对路径。 
 
注:request.getRequestDispatcher(url)之所以可以使用相对路劲,是因为在getRequestDispatcher(url)方法中封装了ServletContext.getRealPath()以获得相应的项目根路径,再通过字符串相加,从而可以获得一个完整的路径
 
 
Java代码  
  1. SecondServlet
  2. request.setAttribute("lover", "tom");
  3. request.getSession().setAttribute("lovered", "joe");
  4. request.getRequestDispatcher("/third?name=jay").forward(request, response);
  5. request.getRequestDispatcher("third?name=jay").forward(request, response);
  6. this.getServletContext().getRequestDispatcher("/third?name=jay").forward(request, response);
  1. ThirdServlet
  2. PrintWriter out = response.getWriter();
  3. String name = request.getParameter("name");
  4. out.println(request.getContextPath()+"<hr/>");
  5. out.println("name="+name+"<hr/>");
  6. out.println("lover="+request.getAttribute("lover")+"<hr/>");
  7. out.println("lovered="+request.getSession().getAttribute("lovered")+"<hr/>");

结果显示,地址栏信息仍为http://localhost:8080/Test/second,这三种方式都可以传值到第二个Servlet。

2.sendRedirect只能用response调用,可以用相对路径(直接用),也可以用相对路径(需加应用路径)

  1. SecondServlet
  2. request.setAttribute("lover", "tom");
  3. request.getSession().setAttribute("lovered", "joe");
  4. response.sendRedirect("third?name=jay");
  5. response.sendRedirect(request.getContextPath()+"/third?name=jay");
  1. ThirdServlet
  2. PrintWriter out = response.getWriter();
  3. String name = request.getParameter("name");
  4. out.println(request.getContextPath()+"<hr/>");
  5. out.println("name="+name+"<hr/>");
  6. out.println("lover="+request.getAttribute("lover")+"<hr/>");
  7. out.println("lovered="+request.getSession().getAttribute("lovered")+"<hr/>");

结果显示,地址栏信息变为http://localhost:8080/Test/third?name=jay,只有request.getAttribute("lover")获取不到值,session范围及url路径后的传值在第二个Servlet都可以获取到值。

  1. response.sendRedirect("http://www.baidu.com");

getRequestDispatcher 和sendRedirect区别及路径问题的更多相关文章

  1. JSP的getRequestDispatcher()与sendRedirect()的区别

    getRequestDispatcher()与sendRedirect()的区别   1.request.getRequestDispatcher()是请求转发,前后页面共享一个request ; r ...

  2. 细谈getRequestDispatcher()与sendRedirect()的区别

    问题?细谈getRequestDispatcher()与sendRedirect()的区别 首先我们要知道: (1)request.getRequestDispatcher()是请求转发,前后页面共享 ...

  3. 织梦CMS(dedecms)栏目属性及系统封面模板、列表模板、文章模板区别和路径设置解答

    问题一:(织梦"栏目管理"的"常规选项"中3个栏目属性分析?) 织梦CMS的栏目属性分成三种, -->最终列表栏目 -->频道封面 -->外部 ...

  4. getRequestDispatcher()与sendRedirect()的区别

    1.request.getRequestDispatcher()是请求转发,前后页面共享一个request ; response.sendRedirect()是重新定向,前后页面不是一个request ...

  5. request.getRequestDispatcher()和response.sendRedirect()区别

    一.request.getRequestDispatcher().forward(request,response): 1.属于转发,也是服务器跳转,相当于方法调用,在执行当前文件的过程中转向执行目标 ...

  6. Javaweb中的请求路径的相关总结

    重定向和转发相对路径和绝对路径问题 ​ 注意:转发和重定向的URLString前有加 / 为绝对路径 反之为相对路径 1.假设通过表单请求指定的Url资源 action="LoginServ ...

  7. HttpServlet RequestDispatcher sendredirect和forward

    Servlet的框架是由两个Java包组成:javax.servlet和javax.servlet.http. 在javax.servlet包中定义了所有的Servlet类都必须实现或扩展的的通用接口 ...

  8. 关于tomcat内路径跳转的一些思考

    初学jsp+servlet时经常碰上的几个错误:404.路径正确但页面没有任何内容.样式和图片丢失. 这几个错误曾经让我在debug时头大,现在总结一下,其实它们都跟路径有关,正是因为没有处理好路径跳 ...

  9. Servlet学习笔记06——什么是转发,路径,状态管理?

    1.include指令 (1)作用: 告诉容器,在将jsp转换成Servlet时,将 某个文件的内容插入到该指令所在的位置. (2)语法: <%@ include file="&quo ...

随机推荐

  1. VMware Workstation的网络连接方式:NAT、桥接和Host Only

    安装完VMware Workstation后会自动生成两个网络连接:VMware Network Adapter VMnet8 和 VMware Network Adapter VMnet1(通常称为 ...

  2. c++初始化函数列表

    以下三种情况下需要使用初始化成员列表: 一,需要初始化的数据成员是对象的情况: 二,需要初始化const修饰的类成员: 三,需要初始化引用成员数据: 原因: C++可以定义引用类型的成员变量,引用类型 ...

  3. 小米电视2S加量不加价,你还会买吗?

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  4. Java静态变量的初始化(static块的本质)

    Java静态变量的初始化(static块的本质) 标签: javaclassstring编译器jdk工作 2010-02-06 07:23 33336人阅读 评论(16) 收藏 举报  分类: Jav ...

  5. 关于AWS的备份策略

    AWS有一个很强大的功能,就是snapshot,翻译过来就是对EBS进行快照.通俗的说,即是对整个硬盘进行完整的镜像备份.如此一来,在其中一台EC2挂掉的时候,我们迅速的另起一台EC2,并将通过快照恢 ...

  6. 19-spring学习-springMVC环境配置

    新建一共环境,添加spring支持,就可以开发springMVC了. 既然是springMVC,就必须为其定义相关配置. 1,springMVC所有配置都需要在applicationContext.x ...

  7. Linux ext2/ext3文件系统详解

    转载: Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表.索引节点是一个结构,它包含了一个文件的长度.创建及修改时间.权限.所属关系.磁盘中的位置等信 ...

  8. 公司交换机arp 绑定操作

    1.首先登入:192.168.1.1 2.sys 3.dis arp | inc 192.168.1.49(查看该ip绑定情况) 4.undo arp 192.168.1.49(不绑定命令)

  9. cat /proc/iomem

    在proc目录下有iomem和ioports文件,其主要描述了系统的io内存和io端口资源分布. 对于外设的访问,最终都是通过读写设备上的寄存器实现的,寄存器不外乎:控制寄存器.状态寄存器和数据寄存器 ...

  10. C#: 数字经纬度和度分秒经纬度间的转换

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...