RequestDispatcher requestDispatcher1 = request.getRequestDispatcher("/logout_sso.jsp");
requestDispatcher1.forward(request, response);

RequestDispatcher是一个Web资源的包装器,可以用来把当前request传递到该资源,或者把新的资源包括到当前响应中。RequestDispatcher接口中定义了两个方法:include/forward

由于<jsp:include>只能指定固定的jsp文件名,不能动态指定jsp文件名。我们需要把<jsp:include>翻译为Java code – RequestDispatcher.include();

用法:
<% request.getRequestDispatcher(filename).include(request, response); />

服务器端的重定向可以有两种方式,一是使用HttpServletResponse的sendRedirect()方法,一是使用RequestDispatcher的forward()方法.

HttpServletResponse.sendRedirect()方法将 响应定向到参数location指定的、新的URL。location可以是一个绝对的URL,如 response.sendRedirect("http://java.sun.com")也可以使用相对的URL。如果location以“/”开 头,则容器认为相对于当前Web应用的根,否则,容器将解析为相对于当前请求的URL。这种重定向的方法,将导致客户端浏览器的请求URL跳转。从浏览器 中的地址栏中可以看到新的URL地址,作用类似于上面设置HTTP响应头信息的实现。

RequestDispatcher.forward()方法将 当前的request和response重定向到该RequestDispacher指定的资源。这在实际项目中大量使用,因为完成一个业务操作往往需要 跨越多个步骤,每一步骤完成相应的处理后,转向到下一个步骤。比如,通常业务处理在Servlet中处理,处理的结果转向到一个JSP页面进行显示。这样 看起来类似于Servlet链的功能,但是还有一些区别。一个RequestDispatcher对象可以把请求发送到任意一个服务器资源,而不仅仅是另 外一个Servlet。 include()方法将把Request Dispatcher资源的输出包含到当前输出中。

注意,只有在尚未向客户端输出响应时才可以调用forward()方法,如果页面缓存不为空,在重定向前将自动清除缓存。否则将抛出一个IllegalStateException异常。

RequestDispatcher接口所定义的forward()方法可以将HTTP请求转送给其他Web资源(例如Servlet、JSP或HTML)进行处理,并产生HTTP回应。

调用forward()方法时必须注意下列两点:

1.      在HTTP回应被“确认”(committed)以前才能调用forward()方法(这里的“确认”是指将HTTP回应的内容主体送回用户端),否则将拋出IllegalStateException异常。

2.      调用forward()方法后,原先存放在HttpResponse对象中的内容将会自动被清除.

RequestDispatcher 接口的include()方法与forward()方法非常类似,惟一的不同在于:利用include()方法将HTTP请求转送给其他Servlet 后,被调用的Servlet虽然可以处理这个HTTP请求,但是最后的主导权仍然是在原来的Servlet。换言之,被调用的Servlet如果产生任何 HTTP回应,将会并入原来的HttpResponse对象。

RequestDisPatcher   dispatcher=requset.getRequestDisPatcher("/uservlet2)" 
这句代码就是说将当前servlet的数据转发到uservlet2这个servlet里 
它是服务器端转发 
一般还要把request和response传过去 
完整用法: 
RequestDisPatcher   dispatcher=requset.getRequestDisPatcher(""/uservlet2)"; 
dispatcher.forward(request,   response);

还有一个response.sendRedirect("a.jsp")是不传送数据的浏览器端转发

原文出处:http://blog.csdn.net/a327736051/article/details/49147651

RequestDispatcher请求转发方法相关推荐

  1. JAVA记录-Servlet RequestDispatcher请求转发

    RequestDispatcher接口提供将请求转发送到另一个资源的功能,它可能是html,servlet或jsp等. 此接口也可用于包括另一资源的内容.它是servlet协作的一种方式. 在Requ ...

  2. 详解请求转发和重定向

    ** 详解请求转发和重定向 **servlet请求转发与重定向的区别: request.setAttribute("test","hello"); reques ...

  3. Servlet 请求转发(forword)与重定向(sendredirect)的区别

    servlet请求转发与重定向的区别: request.setAttribute("test","hello"); request.getRequestDisp ...

  4. servlet中请求转发(forword)与重定向(sendredirect)的区别

    servlet请求转发与重定向的区别: request.setAttribute("test","hello"); request.getRequestDisp ...

  5. 请求重定向与请求转发的比较(HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法)...

    尽管HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很 ...

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

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

  7. Servlet学习笔记(四)之请求转发与重定向(RequestDispatcher与sendRedirect)

    ServletContext可以实现请求转发(ServletContext请求转发相关内容见之前博客:http://blog.csdn.net/megustas_jjc/article/details ...

  8. RequestDispatcher对象的应用-请求转发

    一.介绍 在Servlet中,如果当前Web资源不想处理请求时,可以通过forward()方法将当前请求传递给其它的Web资源进行处理,这种方式称为请求转发. 从图中可以看出,当客户端访问Servle ...

  9. Servlet 使用getRequestDispatcher进行请求转发页面未跳转 后台也未报错的问题的解决方法

    问题描述: 在Servlet中使用getRequestDispatcher进行请求转发的时候,前端页面空白未出现报错,后台也没有报错. 原因分析: getRequestDispatcher的路径没有问 ...

  10. WEB项目请求转发时一直在 等待localhost响应 不报错的解决方法

    SSH框架中的hibernate让我重新认识了释放资源的重要性... 开始运行项目能进行请求转发,但是发送几次请求(我是请求了八次之后就炸了?)之后就一直 等待 localhos响应  原因无疑是你没 ...

最新文章

  1. ios应用的分发和上传
  2. hbase的集群搭建
  3. TCP报文发送的那些事
  4. 基础知识—表达式与语句-语句
  5. 提前为小米11让路?小米10高配版官网已缺货
  6. c#ref和out的相同点_C#中ref和out的使用小结
  7. cmd 下通过NTML代理访问Maven 库
  8. 技术人 | 如何做一个明白状况的研发主管?
  9. redis可视化工具desktop manager
  10. ROS 设置环境变量
  11. 地震波形自动分类及识别(构想)
  12. Qt学习:常用数学函数
  13. 数据挖掘(2.4)--数据归约和变换
  14. 电脑计算机怎么没有桌面显示,登陆qq后电脑桌面没有显示怎么做
  15. 『Python』Excel文件的读取以及DataFrame的相关操作 (2)
  16. HDU 5594(ZYB's Prime-网络流)
  17. Python Socket 网络通信详解
  18. 人工神经网络图像识别,神经网络如何识别图像
  19. 【数据可视化应用】绘制QQ图(附Python和R语言代码)
  20. 华为2288H V5服务器RAID配置

热门文章

  1. 最新fl studio20.8中文电音编曲宿主制作软件
  2. 高校邦HTML5,高校邦视频自动播放器
  3. matlab绘制图形hold on_Matlab绘图示例
  4. TAOCP-READING-1.3'-1
  5. iOS模拟器发送通知和UI测试
  6. c#html转换pdf,[C#] 网页Html转PDF档(一行程式码解决)
  7. 手把手带你玩转Spark机器学习-Spark的安装及使用
  8. 基本磁盘转换为动态磁盘后快速启动关机变重启,记录一次研究过程
  9. 长度游程编码的JAVA源代码,java游程编码
  10. plc secs通讯协议_一种SECS/GEM通讯方法与流程