RequestDispatcher请求转发方法
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请求转发方法相关推荐
- JAVA记录-Servlet RequestDispatcher请求转发
RequestDispatcher接口提供将请求转发送到另一个资源的功能,它可能是html,servlet或jsp等. 此接口也可用于包括另一资源的内容.它是servlet协作的一种方式. 在Requ ...
- 详解请求转发和重定向
** 详解请求转发和重定向 **servlet请求转发与重定向的区别: request.setAttribute("test","hello"); reques ...
- Servlet 请求转发(forword)与重定向(sendredirect)的区别
servlet请求转发与重定向的区别: request.setAttribute("test","hello"); request.getRequestDisp ...
- servlet中请求转发(forword)与重定向(sendredirect)的区别
servlet请求转发与重定向的区别: request.setAttribute("test","hello"); request.getRequestDisp ...
- 请求重定向与请求转发的比较(HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法)...
尽管HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很 ...
- ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段...
原文地址:ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段 ServletRequest 基本概念 ...
- Servlet学习笔记(四)之请求转发与重定向(RequestDispatcher与sendRedirect)
ServletContext可以实现请求转发(ServletContext请求转发相关内容见之前博客:http://blog.csdn.net/megustas_jjc/article/details ...
- RequestDispatcher对象的应用-请求转发
一.介绍 在Servlet中,如果当前Web资源不想处理请求时,可以通过forward()方法将当前请求传递给其它的Web资源进行处理,这种方式称为请求转发. 从图中可以看出,当客户端访问Servle ...
- Servlet 使用getRequestDispatcher进行请求转发页面未跳转 后台也未报错的问题的解决方法
问题描述: 在Servlet中使用getRequestDispatcher进行请求转发的时候,前端页面空白未出现报错,后台也没有报错. 原因分析: getRequestDispatcher的路径没有问 ...
- WEB项目请求转发时一直在 等待localhost响应 不报错的解决方法
SSH框架中的hibernate让我重新认识了释放资源的重要性... 开始运行项目能进行请求转发,但是发送几次请求(我是请求了八次之后就炸了?)之后就一直 等待 localhos响应 原因无疑是你没 ...
最新文章
- ios应用的分发和上传
- hbase的集群搭建
- TCP报文发送的那些事
- 基础知识—表达式与语句-语句
- 提前为小米11让路?小米10高配版官网已缺货
- c#ref和out的相同点_C#中ref和out的使用小结
- cmd 下通过NTML代理访问Maven 库
- 技术人 | 如何做一个明白状况的研发主管?
- redis可视化工具desktop manager
- ROS 设置环境变量
- 地震波形自动分类及识别(构想)
- Qt学习:常用数学函数
- 数据挖掘(2.4)--数据归约和变换
- 电脑计算机怎么没有桌面显示,登陆qq后电脑桌面没有显示怎么做
- 『Python』Excel文件的读取以及DataFrame的相关操作 (2)
- HDU 5594(ZYB's Prime-网络流)
- Python Socket 网络通信详解
- 人工神经网络图像识别,神经网络如何识别图像
- 【数据可视化应用】绘制QQ图(附Python和R语言代码)
- 华为2288H V5服务器RAID配置
热门文章
- 最新fl studio20.8中文电音编曲宿主制作软件
- 高校邦HTML5,高校邦视频自动播放器
- matlab绘制图形hold on_Matlab绘图示例
- TAOCP-READING-1.3'-1
- iOS模拟器发送通知和UI测试
- c#html转换pdf,[C#] 网页Html转PDF档(一行程式码解决)
- 手把手带你玩转Spark机器学习-Spark的安装及使用
- 基本磁盘转换为动态磁盘后快速启动关机变重启,记录一次研究过程
- 长度游程编码的JAVA源代码,java游程编码
- plc secs通讯协议_一种SECS/GEM通讯方法与流程