JavaWeb,使用servlet/jsp时页面跳转的两种方式:转发和重定向

4、HttpServlet的Response、转发、重定向、页面跳转到方式 1 HttpServletResponse概述 服务器端发送给客户端的数据。 我们在创建Servlet时会覆盖service()⽅法,或doGet()/doPost(),这些⽅法都有两个参数,代表 请求的request和代表响应response。 service⽅法中的response的类型是ServletResponse,⽽doGet/doPost⽅法的response的类型 是HttpServletResponse,HttpServletResponse是ServletResponse的⼦接⼝,功能和⽅ 阅读详情

一、两种跳转获得对象的方式

1️⃣获得转发对象getRequestDispatcher()
httpServletRequest.getRequestDispatcherServletContext.getRequestDispatcher();
2️⃣获得重定向对象sendRedirect()
httpServletResponse.sendRedirect();

二、区别

  1. RequestDispatcher.forward(转发)只能将请求转发给同一个Web应用中的组件;而HttpServletResponse.sendRedirect(重定向)不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。如果传递给HttpServletResponse.sendRedirect(重定向)方法的相对URL以“/”开头,它是相对于整个Web站点的根目录;如果创建RequestDispatcher对象时指定的相对URL以“/”开头,它是相对于当前Web应用程序的根目录。

  2. 调用RequestDispatcher.forward(转发)的请求过程结束后,浏览器地址栏保持初始的URL地址不变;而调用HttpServletResponse.sendRedirect(重定向)的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL。

  3. HttpServletResponse.sendRedirect(重定向)对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求。
    理解:假设去办理某个执照:
    【重定向】你先去了A局。A局的人说:“这个事情不归我们管,你得去B局”。然后,你就从A局退了出来,自己又去了B局。
    RequestDispatcher.forward (转发)在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。
    理解:
    【转发】你先去了A局,A局看了以后,知道这个事情实际应该B局来管,但是他没有把你退回来,而是让你等一会儿,自己到后面办公室联系了B的人,让他们办好后,送了过来。你只知道事情办好了,却不知道实际办理的是另一个局的人。

  4. RequestDispatcher.forward (转发)的调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程。转发2次跳转之间传输的信息不会丢失。
    而HttpServletResponse.sendRedirect (重定向)调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。重定向2次跳转之间传输的信息会丢失(request范围)。
    对于同一个Web应用程序的内部资源之间的跳转,特别是跳转之前要对请求进行一些前期预处理,并要使用HttpServletRequest.setAttribute传递预处理结果,那就应该使用RequestDispatcher.forward(转发)。不同Web应用程序之间的重定向,特别是要重定向到另外一个Web站点上的资源的情况,都应该使用HttpServletResponse.sendRedirect(重定向)。

  5. 无论是转发,还是重定向,在调用它们之前,都不能有内容已经被实际输出到了客户端。如果缓冲区中已经有了一些内容,这些内容将被从缓冲区中清除。

三、转发和重定向的选择

  1. 重定向的速度比转发慢,因为浏览器还得发出一个新的请求,所以如果在使用转发和重定向都无所谓的时候建议使用转发。
  2. 因为转发只能访问当前Web的应用程序,所以不同Web应用程序之间的访问,特别是要访问到另外一个Web站点上的资源的情况,此时就只能使用重定向了。

注意:
重定向有一个应用场景:避免在用户重新加载页面时两次调用相同的动作。当提交产品表单的时候,执行保存的方法将会被调用,并执行相应的动作。这在一个真实的应用程序中,很有可能将表单中的所有产品信息加入到数据库中。但是如果在提交表单后,重新加载页面,执行保存的方法就很有可能再次被调用,同样的产品信息就将可能再次被添加。为了避免这种情况,提交表单后,可以将用户重定向到一个不同的页面,如此,该网页任意重新加载都没有副作用;
但是,使用重定向的一个不便之处是,无法将值轻松地传递给目标页面。而采用转发,则可以简单地将属性添加到Model,使得目标视图可以轻松访问。由于重定向经过客户端,所以Model中的一切都会在重定向时丢失。但幸运的是,在Spring3.1版本以后,可以通过Flash属性,解决重定向时传值丢失的问题。
要使用Flash属性,必须在Spring MVC的配置文件中添加一个。然后,还必须在方法上添加一个新的参数类型:org.springframework.web.servlet.mvc.support.RedirectAttributes。

如下所示:

@RequestMapping(value="saveProduct",method=RequestMethod.POST)
public String saveProduct(ProductForm productForm,RedirectAttributes re){
     //执行产品保存的业务逻辑等
     //传递参数
     re.addFlashAttribute("message","The product is saved successfully");
    //执行重定向
     return "redirect:/……";
}
javaweb转发与重定向(倒计时跳转和显示现实时间) 阅读详情

相关推荐

求问:servlet页面跳转到jsp失败,显示空白页?

求问:jsp中,为什么servlet页面跳转到jsp失败,显示空白页?不会报错,就是页面空白,地址显示为servlet,无法跳转。。。。求大神解答~ 以下是部分源代码: servlet: package myservlet; import java.io.IOException; import java.io.PrintWriter; import java.sql.Prepared...

qq_40843299的博客 5669

Java-重定向(redirect)

重定向是一个客户端行为,用户请求到达服务器之后,服务器返回响应,HTTP状态码置为302,并将转发的页面保存在响应头中的Location属性中,告诉客户端应该向这个地址发出请求,然后客户端再次发出请求。在整个过程中客户端发送了最少两次请求,因为请求是不同的,因此request和response对象在重定向前后是不同的,两个对象中的attribute在重定向前后也都是不同的。A找B借钱,B说我没有,你去找C借去吧,A收到B的消息,然后去找C借钱。重定向可以访问当前Web应用之外的资源。

m0_67403188的博客 3024

JavaWeb中“重定向”和“请求转发”的路径问题

1 “重定向”和“请求转发”   一般我们在写 JavaWeb 中,总会用到“重定向”和“请求转发”,可能我们不会追究这两个方式实在哪里被处理的,我们在写路径是的 “/” 在不同的处理方式中有什么不同。   接下来就针对这两个问题来说一下。这里先假设配置的项目名称为 shop 。 1.1 重定向 1.1.1 写法   在 JavaWeb 中,“重定向”的写法是: response.sendR...

Kaiter的博客 1684

java重定向到某个页面

Java中重定向到某个页面 在Java web开发中,我们经常需要将用户重定向到特定的页面,例如登录成功后跳转到首页,或是提交表单后跳转到结果页面等。重定向是通过服务器端发送一个特定的响应码和目标页面的URL来实现的,这样客户端浏览器就会自动跳转到指定的页面。 重定向原理 在HTTP协议中,服务器通过发送302状态码和Lo...

weixin_40818841的博客 834

JavaWeb - 使用重定向和定时跳转实现页面跳转案例

在上述示例中,用户在登录成功后将被重定向到"https://www.example.com/home"页面,并同时启动一个定时任务,在5秒后将请求重定向到"https://www.example.com/anotherPage"页面。当用户访问该路径时,服务器会启动一个定时任务,在5秒后将请求重定向到"https://www.example.com"。在JavaWeb中,我们可以使用重定向和定时跳转来实现这一功能。现在我们来看一个综合应用的示例,该示例将结合重定向和定时跳转来实现页面跳转。

class_class957的博客 956

k3s快速搭建k8s集群环境

k8s 搭建方式有多种,如果你是内网环境,希望占用服务器资源少或是边缘系统(如ARM系统),强烈推荐您使用 k3s进行安装 目录k3s 简介k3s架构中文官方文档三台服务器快速搭建k8s集群安装说明步骤1 修改主机名,保持唯一步骤2 安装docker步骤3 安装master节点步骤4 安装worker节点加入集群步骤5 查看集群步骤6 部署 k8s仪表盘 dashboard k3s 简介 轻量级 Kubernetes。安装简单,内存只有一半,所有的二进制都不到 100MB K3s 是一个完全符合 Ku.

gzt19881123的专栏 2445

JavaWeb开发,使用servlet/jsp时页面跳转的两种方式:转发和重定向

区别: 1、RequestDispatcher.forward (转发)只能将请求转发给同一个Web应用中的组件;而HttpServletResponse.sendRedirect (重定向)不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。如果传递给HttpServletResponse.sendRedirec...

weixin_33955681的博客 887

记一次wireshark抓取QQ好友IP和火绒抓取微信IP

事情是这样的,,上个周,手机离奇的被盗,但没有关机,为了找回手机,粗学了一手QQ抓ip的手段。 这里我就直接做个演示,解析关键的点。 三种思路i. wireshark 抓取手机在线IPii 火绒抓取 微信在线接听IPiii 火绒抓取 微信在线不接听IP i. wireshark 抓取手机在线IP wireshark抓好友QQ的ip要求和对方打语音的时候要手机在线。 这里说一下,打语音和视频是直接能和对方建立连接,如果发文件,是直接发给腾讯的,抓不到包。 1.打开wireshark,通过电脑Tim给对方打语音

qq_29437513的博客 1万+

JavaWeb中实现页面跳转的方法

JavaWeb中实现页面跳转的方法 在src中新建Servlet文件,重写doPost()、doGet()方法,可以使用请求转发、重定向或者使用out内置对象编写HTML代码,从而实现页面跳转 一、请求转发 //通过请求转发的方式实现页面跳转 RequestDispather rd = request.getRequestDispatcher("check.jsp"); rd.forward(request,response); 二、重定向 //通过重定向的方式实现页面跳转 response.sendR

淼的博客 3万+

焦距与视差的关系及其对深度估计的影响

焦距在立体视觉中的作用至关重要,它直接影响视差的大小,从而影响深度估计的精度。焦距越长,视差差异越大,物体的深度估计就越精确。这一关系使得焦距长的相机在一些需要高精度深度估计的应用场景中更加优越。了解焦距与视差的关系,对于优化相机配置和提升深度估计精度具有重要意义。在实践中,选择合适的焦距对于获得精确的深度信息至关重要,特别是在自动驾驶、虚拟现实、三维重建等领域,精确的深度估计能够提供更好的用户体验和技术支持。

计算机科学与技术专业学生的成长之路 1671

U2Net网络实战:从原理到代码实现(附背景去除应用)

本文深入解析了U2Net网络的原理与代码实现,重点剖析了其独特的嵌套U型结构(RSU模块)和显著图融合机制。通过实战演示,指导读者如何加载预训练模型并应用于精准的图像背景去除任务,为电商、摄影等领域提供高效的自动化抠图解决方案。

nn3456的博客 491

javaweb重定向——登录页面跳转到首页

文章目录一、项目结构二、login.html三、ServletLogin.java四、loginError.jsp五、home.html六、部署和运行1、测试用例一(用户名错误)2、测试用例二(密码错误)3、测试用例二(账号信息正确) 一、项目结构 login.html用户信息错误,进行请求转发,跳转到loginError.html。 用户信息正确,进行重定向,跳转到home.html。 二、l...

龟的小号的博客 3万+

【无人机路径规划】基于强化学习实现多无人机路径规划附matlab代码

1 简介 本文提出一种基于强化学习实现多无人机路径规划。​ 2 部分代码 % This is used to measure the path length, service rate and risk explosure for each UAVs %% parameters function [PL,ServiceRate,Risk]=measure global N2; % divide [0,1]*[0,1] map into N2*N2 grid when calcul

qq_59747472的博客 6905

Servlet | 深度剖析转发和重定向

Servlet | 深度剖析转发和重定向

m0_61933976的博客 2257

第二篇:APS智能排产实战:OR-Tools与coptpy从入门到案例

专注于具体的技术实现,包括 OR-Tools 和 coptpy 的详细使用指南、建模技巧、日志解读,以及一个完整的两阶段生产排程案例。适合准备动手开发 APS 系统的工程师和研究者。

算法工程师 454

RK3566/RK3568 Android 11添加系统服务

【代码】RK3566/RK3568 Android 11添加系统服务。

qq_23921815的博客 641

【Javaweb】使用Servlet实现登录页面并跳转

使用Servlet实现登录页面并跳转 具体内容为前端数据获取以及请求转发。 1、新建一个Requeset工程,并且完善工程目录结构。 2、更新WEB-INF文件下的web.xml文件,替换为如下内容。 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-

桺柒郞的小小屋 1万+

rk3576 适配摄像头 (mipi 五摄)

在RK3576上实现五路CSI摄像头方案,核心思路是充分复用其视频输入接口,并通过巧妙的软件配置来实现。

weixin_35723192的博客 178

javaweb请求转发——登录页面跳转

文章目录一、项目结构二、login.html三、ServletLogin.java四、loginError.jsp五、部署和运行1、测试用例一:(用户名错误)2、测试用例二: (用户名正确,密码错误) 一、项目结构 二、login.html &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset...

龟的小号的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

JavaWeb中的监听器和过滤器,页面跳转的两种方式(转发与重定向)

监听器 在JavaWeb中,监听器是一种组件,能够监听项目的启动和停止,用户会话的创建和销毁,以及各种组件的添加、更新和删除。当Java对象发生上面的事件时, 将会通知监听器, 监听器将会调用特定的方法来处理该事件。 监听器应用场景:启动网站后进行初始化、检测用户的数量、清除过期session等。 SSM框架中监听器的配置 在web.xml中加入如下配置: <listener> ...

amber_gloam的博客 4881

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

页面跳转的两种方式(转发和重定向)区别

在java web开发的程序员,在使用servlet/jsp的时候,我们必须要知道实现页面跳转的两种方式的区别和联系:即转发和重定向的区别。 1.转发:RequestDispatcher.forward方法 重定向:HttpServletResponse.sendRedirect 2.RequestDispatcher.forward方法只能将请求转发给同一个WEB应用中的组件;而Http...

lifes_java的博客 691

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JavaWeb+JSP+路径问题+跳转(HTML|Servlet|JSP)|这一篇就够了(超详细)

JavaWeb+JSP+路径问题+跳转(HTML|Servlet|JSP)|这一篇就够了(超详细)

我是程序员Amin,关注我,带你学习有趣的计算机知识 4097

JavaWeb——Servlet——请求转发与响应重定向

JavaWeb——Servlet——请求转发与响应重定向 导语:在实际的软件开发过程中,往往需要多个Servlet来实现不同的功能,就需要对多个Servlet进行组合调用。多个Servlet之间如何进行通信和跳转?而这就需要用到请求转发与响应重定向技术。 原理 多个Servlet或者说JSP之间跳转有两种方式 注:JSP本质上就是Servlet ①:请求转发: request.getRequestDispatcher(" “).forward(request,response) ②:响应重定向 respon

muyuxifeng的博客 764

JavaWeb页面跳转方式&JDBC

目录 页面跳转方式 js中的跳转方式 Java中的跳转 转发 重定向 转发与重定向的区别 JDBC 连接数据库的步骤 案例操演 登录界面 注册界面 后台管理 页面跳转方式 js中的跳转方式 out.print("<script>location.href='home.jsp'</script>"); 在js代码中要写入<script></script> Java中的跳转 Java中的跳转分为两种 1、转发 ...

WZJ278的博客 1972

服务端跳转方式:请求转发和重定向

客户端(浏览器)收到响应后,会自动发起第 2 次请求,访问服务端指定的目标地址,最终由目标地址返回响应。客户端向服务端发送 1 次请求后,服务端(如 Servlet、Spring MVC 控制器)不直接响应,而是在。整个过程客户端无感知,仅发起 1 次请求。:常用 302(临时重定向)、307(临时重定向,保留请求方法)、301(永久重定向,多用于域名变更)。:仅 1 次 HTTP 请求(客户端→服务端,服务端内部转发不产生新请求)。域(请求域)传递数据(如用户表单信息、临时状态),因为始终是同一次请求。

2503_92804185的博客 890
上一篇: String 类原生的字符串处理方法
下一篇: WEB服务器、应用程序服务器、HTTP服务器
JFS_Study
博客等级 码龄6年 363粉丝 359原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JFS_Study

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值