请求重定向(forward)和请求转发(redirect)的区别详解(看这一篇就够了)

news2024/11/24 5:54:11

在Java中进行页面跳转的方式有两种:重定向和请求转发,但是两者的内部实现是完全不一样的,主要区别分为以下5种:

  1. 定义不同
  2. 请求方式不同
  3. 数据共享不同
  4. 最终 URL 地址不同
  5. 代码实现不同

1,定义不同

请求重定向(forward)

请求重定向指的是客户端(浏览器)向服务器发送一个请求时,服务器会给客户端返回一个临时响应头,响应头里面记录着客户端需要再次发起请求的URL地址,此时客户端会再次将请求发送给这个新的地址上,这个就叫做请求重定向!例如:小明(客户端)找妈妈(服务器1)要一个礼物,妈妈给了小明钱(响应头中的URL)让小明自己去超市(服务器2)买。

 请求转发(redirect)

请求转发指的是客户端(浏览器)向服务器发送一个请求时,服务器会自动帮客户端将请求转发到目标地址,再将目标地址的响应结果返回给客户端,这一整个过程都是发生在服务器的内部;作为客户端不需要关心服务器内部具体执行过程,只需要接收响应即可!例如:小明(客户端)找妈妈(服务器)要一个礼物,妈妈去超市(目标地址)给小明买了一个礼物给了小明。

2,请求方式不同

请求重定向(forward)

请求重定向是客户端的行为,客户端需要访问两次服务器(这两次的服务器不是同一个服务器),访问详情如下:

 

 请求转发(redirect)

请求转发是服务器的行为,客户端不关心服务器如何工作,只需要接收响应即可,访问详情如下:

3,数据共享不同

请求重定向(forward)

请求重定向是服务器内部实现的,自动帮客户端定位到新的目标地址,在整个交互过程中使用的都是同一份Request请求对象和同一份Response响应对象,所以整个请求过程中,数据都是共享的。

请求转发(redirect)

请求转发客户端需要访问两次不同的服务器,发送了两次请求,每次发送请求给指定服务器的时候都是使用的是不同的Request请求对象和Response响应对象,所以整个请求过程中,数据是不共享的。

4,最终URL地址不同

请求重定向(forward)

请求重定向服务器自动帮助客户端发送请求给新的目标服务器,客户端只需要接收响应结果即可,所以整个访问过程中的URL地址都是不会发生变化的。

请求转发(redirect)

请求转发客户端发送了两次请求,所以第二次访问新的目标地址的时候,相对于第一次的URL地址是不同的。

5,代码实现不同

请求重定向(forward)

@RequestMapping("/rt")
public void redirect(HttpServletRequest request, HttpServletResponse response) throws IOException {
    response.sendRedirect("/index.html");
}

请求转发(redirect)

@RequestMapping("/fw")
public void forward(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.getRequestDispatcher("/index.html").forward(request, response);
}

请求转发和请求重定向的核心区别就是,请求转发需要访问两次服务器(即需要发送两次请求),而请求重定向客户端只需要发送一次请求,服务器内部会帮我们自动跳转到目标服务器,客户端不需要关心执行过程!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/490833.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五面阿里Java岗,从小公司到阿里的面经总结

​​​​​​​ 面试 笔试常见的问题 面试常见的问题下面给的面试题基本都有。 1 手写代码:手写代码一般会考单例、排序、线程、消费者生产者 排序。 2 写SQL很常考察group by、内连接和外连接 2.面试1-5面总结 1)让你自我介绍 2)做两道算法…

【软考高级】2022年系统分析师综合知识

1.( )是从系统的应用领域而不是从系统用户的特定需要中得出的,它们可以是新的功能性需求,或者是对已有功能性需求的约束,或者是陈述特定的计算必须遵守的要求。 A.功能性需求 B. 用户需求 C.产品需求 D.领域需求 2.对于安全关键系…

红黑树理论详解与Java实现

文章目录 基本定义五大性质红黑树和2-3-4树的关系红黑树和2-3-4树各结点对应关系添加结点到红黑树注意事项添加的所有情况 添加导致不平衡叔父节点不是红色节点(祖父节点为红色)添加不平衡LL/RR添加不平衡LR/RL 叔父节点是红色节点(祖父节点为…

知识图谱学习笔记——(四)知识图谱的抽取与构建

一、知识学习 声明:知识学习中本文主体按照浙江大学陈华钧教授的《知识图谱》公开课讲义进行介绍,并个别地方加入了自己的注释和思考,希望大家尊重陈华钧教授的知识产权,在使用时加上出处。感谢陈华钧教授。 (一&…

汇编三、51单片机汇编指令1

1、指令格式 (1)举例:将立即数0x30送入累加器A MOV  A, #0x30 标号 操作码 目标地址,数据源 ;注解 (2)标号,注解可选项,不一定有。 2、指令执行时间和指令存储空间 (1)指令执…

谁是太阳膜界的真正王者?

小编一文教会你如何选择好的太阳膜 随着天气越来越热,有很多车友迫切的想为自己的爱车,贴上隔热膜,特别是新能源车主。 现在的新能源车都有很大的前挡玻璃和全景天窗,提升了爱车的档次和美观度。但是随之而来的隔热和安全也受到了…

文心一言创意图

文章目录 本土优化创意图成语和典故 本土优化 此前文心一格最让人诟病的就是那张“爱国猫”的图像了,十分离谱,让人一猜就是训练集的问题。 但百度作为全村的希望,对文心一言的优化也是肉眼可见的,迅速做了针对本土的优化&#…

5月新书预告

“读书不觉已春深,一寸光阴一寸金。”相信许多小伙伴儿都把这个五一假期安排的满满当当,还有一部分人抱着书本养精蓄锐、精进技能。小编也没闲着,为大家收集了几本精品新书。 《现代软件工程》是《持续交付》的作者David Farley的另一本力作&…

Codeforces Round 868 (Div. 2)A.B.C

A. A-characteristic 题目链接: Problem - A - Codeforces 题面: 题意: 有一个数组a,里面只存在1和-1,现在可以选择任意两个位置,但是不能重合,如果两个位置的数乘积为1,那么特点…

学生台灯什么牌子好对眼睛好?专业护眼灯的学生台灯分享

据报告统计,2022年我国儿童青少年总体近视率为52.7%,其中6岁儿童为14.3%,小学生为35.6%,初中生为71.1%,高中生为80.5%,这些数据让人不寒而栗! 专家表示,导致儿童青少年近视的因素&am…

Shell脚本2

自定义局部变量 :定义在一个脚本文件中的变量 只能在这个脚本文件中使用的变量,局部变量 语法: var_namevalue 变量定义规则 变量名称可以有字母,数字和下划线组成, 但是不能以数字开头 等号两侧不能有空格 在bash环境中, 变量的默认类型都是字符串…

thinkphp+vue+html基于web的旅游景点酒店线路管理系统6722q

数据库分析 整个系统所包括的信息有景点信息、用户信息、酒店信息、旅行社信息、留言信息等。可将这些信息抽象为下列系统所需要的数据项和数据结构: 1.景点管理(编号,景点名称,景点等级,天气情况,位置,住宿&#xff0…

真无线耳机哪款性价比高?高性价比无线耳机排行榜

近几年,蓝牙耳机凭借使用便捷而受到广大用户的欢迎,逐渐取代有线耳机成为人们生活中必不可少的存在。下面,我来给大家推荐几款性价比高的蓝牙耳机,一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 参考价:299 蓝牙版本…

初识C++之特殊类设计与类型转换

目录 一、特殊类设计 1. 设计一个对象不能被拷贝的类 2. 设计一个只能在堆上创建对象的类 2.1 禁止构造函数 2.2 禁止析构函数 3. 设计一个只能在栈上创建对象的类 4. 设计一个不能被继承的类 5. 设计一个只能创建出一个对象的类(单例模式) 5.1…

开源世界的尴尬时刻

作者按:开源世界里全都是一片祥和、欣欣向荣吗?全都是热情开放、无私奉献吗?那当然不是。本文罗列几起尴尬世界,目的是让大家对开源世界有一个更全面更具体的认识,让大家对底层开源人的生活的心态有一个更切实际的了解…

ORBBEC(奥比中光)AstraPro相机在ROS2下的标定与D2C(标定与配准)

文章目录 1.rgb、depth相机标定矫正1.1.标定rgb相机1.2.标定depth相机1.3.rgb、depth相机一起标定(效果重复了,但是推荐使用)1.4.取得标定结果1.4.1.得到的标定结果的意义 1.5.IR、RGB相机分别应用标定结果1.5.1.openCV应用标定结果1.5.2.ros…

mac m1安装V2rayU

我原先window上使用的是V2rayN。mac系统使用的是V2rayU。 1.首先下载V2rayU 下载地址:https://github.com/yanue/V2rayU/releases 2.将下载的文件拉到application 安装后,点击运行,此时会弹出安全警告,需要在「系统偏好设置-安…

第4章-动态规划

第4章-动态规划 总分:100分 得分:100.0分 10.0 分 1 . 多选题 中等 10分 有关0-1背包问题,用c[i][j]描述子问题:1...i共i个物品,背包容量为j的最优值(装入背包的最大价值),则其子问题为:1...i-1共i-1个物品,背包容量为j-w ix i,以下说法正确的是( AB…

TypeScript教程(N)

弱类型和强类型 编程语言,按照数据类型是否固定可分为 强类型语言 和 弱类型语言。 弱类型语言 弱类型语言:变量、函数参数和函数的返回值,是没有类型的,一个变量可以接收任何类型的数据,一个函数也可以返回任何类型…

大学生所面临的网络安全问题有哪些?

网络安全从本质上来讲就是网络上的信息安全,就是指网络系统中流动和保存的数据,不受到偶然的或者恶意的破坏、泄露、更改,系统连续正常的工作,网络服务不中断。从广义上来说,凡是涉及网络信息的保密性、完整性、可用性…