请求转发和请求重定向

目录

1. 定义层面 

2. 请求方层面 

3. 数据共享层面

4. 最终 url 层面

5. 代码实现层面

请求转发

请求重定向


在Java中,跳转网页的方式有两种,一种是请求转发,另一种是请求重定向,而实际上,这两种方式是有着明显区别的。

1. 定义层面 

请求转发是当客户端向服务器发送请求后,由服务器来进行请求的转发,转发给另一个目标地址,再将目标地址返回的结果从服务器返回给客户端。请求转发是发生在服务器程序内部的。 

请求重定向是当客户端向服务器发送请求后,服务器给客户端返回响应,在返回的响应中记录了客户端要重新发起请求的目标地址,客户端收到响应后,会对目标地址重新发起一次请求,这就是请求重定向。

2. 请求方层面 

请求转发是服务器端的行为,服务器代替客户端发送请求给第三方目标地址,并将结果返回给客户端。

请求重定向是客户端的行为,是客户端根据服务器返回的目标地址,重新对目标地址发起请求。

3. 数据共享层面

请求转发是服务器端实现的,在整个过程中,客户端只需要发送一次请求,接收一次响应,在这个过程中,请求的数据和响应的数据服务器都是可以接收到的,也就是共享的。

而请求重定向是客户端接收到第三方目标地址后进行的再一次请求,服务器端是无法接收到的,所以是不共享的。 

4. 最终 url 层面

请求转发是服务器端向第三方目标地址进行请求,然后再将结果返回给客户端,所以对于客户端来说,请求的地址一直都是服务器端的地址。

请求重定向是服务器返回一个第三方目标地址给客户端,客户端再向这个地址发送请求,所以目标 url 是这个第三方目标地址。 

5. 代码实现层面

请求转发

    // 请求转发     @RequestMapping("/fw")public Object fw(){return "forward:/index.html";}// 请求转发@RequestMapping("/fw2")public void fw2(HttpServletResponse response, HttpServletRequest request) throws ServletException, IOException {request.getRequestDispatcher("/index.html").forward(request,response);}

请求重定向

    // 请求重定向        路径会发生变化  ->  http://localhost:8080/index.html@RequestMapping("/rd")public Object rd(){return "redirect:/index.html";}// 请求重定向@RequestMapping("/rd2")public void rd2(HttpServletResponse response) throws IOException {response.sendRedirect("index.html");}

 

 

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

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

相关文章

JavaScript数据结构【进阶】

注:最后有面试挑战,看看自己掌握了吗 文章目录 使用 splice() 添加元素使用 slice() 复制数组元素使用展开运算符复制数组使用展开运算符合并数组使用 indexOf() 检查元素是否存在使用 for 循环遍历数组中的全部元素创建复杂的多维数组将键值对添加到对象…

“深入解析JVM:探秘Java虚拟机的工作原理“

标题:深入解析JVM:探秘Java虚拟机的工作原理 摘要:本文将深入探讨Java虚拟机(JVM)的工作原理,包括类加载、内存管理、垃圾回收、即时编译等关键概念。通过详细解析JVM的各个组成部分,读者将能够…

APP外包开发的H5开发框架

跨平台移动应用开发框架允许开发者使用一套代码在多个操作系统上构建应用程序,从而节省时间和资源。以下是一些常见的跨平台移动应用开发框架以及它们的特点,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司&#xff0…

从源码层面深度剖析Spring循环依赖 | 京东云技术团队

以下举例皆针对单例模式讨论 图解参考 https://www.processon.com/view/link/60e3b0ae0e3e74200e2478ce 1、Spring 如何创建Bean? 对于单例Bean来说,在Spring容器整个生命周期内,有且只有一个对象。 Spring 在创建 Bean 过程中&#xff0…

Vue在页面输出JSON对象,测试接口可复制使用

效果图&#xff1a; 数据处理前&#xff1a; 数据处理后&#xff1a; 代码实现&#xff1a; HTML: <el-table height"600" :data"tableData" border style"width: 100%" tooltip-effect"dark" size"mini"><el-…

前后端分离------后端创建笔记(上)

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论&#xff0c;如有侵权请联系 源码&#xff1a;https://gitee.com/green_vegetables/x-admin-project.git 素材&#xff1a;https://pan.baidu.com/s/…

如何使用 ESP-01S 模块

如何使用 ESP-01S 模块 原始PDF文档 参考&#xff1a; 将 ESP-01 用作 WiFi shield的更好方法 (e-tinkers.com) How do I use ESP8266 ESP-01S WiFi Module with ESP-01S Adapter - Using Arduino / Programming Questions - Arduino Forum ESP-01S WiFi 模块 – 配置布线 -…

boost写日志

单个写日志 #include <boost/log/core.hpp> #include <boost/log/trivial.hpp> #include <boost/log/expressions.hpp> #include <boost/log/utility/setup/file.hpp> #include <boost/log/utility/setup/common_attributes.hpp> #include <…

1037:计算2的幂

【题目描述】 给定非负整数n&#xff0c;求2^n的值&#xff0c;即2的n次方。 【输入】 一个整数n。0<n<31。 【输出】 一个整数&#xff0c;即2的n次方。 【输入样例】 3 【输出样例】 8 【参考答案】&#xff1a; #include<bits/stdc.h> using namespa…

服务管理和计划任务

文章目录 服务管理计划任务 服务管理 systemctl 命令字 服务名 //配置服务与systemctl有关的命令字&#xff1a; 计划任务 一次性计划 at 时间 at now 5 min //当前时间五分钟后执行 at -l //列出计划任务 atrm 任务号 //删除计划任务执行完命令后Ctrld生效 周期性计…

Oracle数据迁移

问题描述&#xff1a; oracle数据库的所有表结构、数据、索引等需要需从测试库迁移到正式库。 解决步骤&#xff1a; oracle数据库迁移&#xff0c;主要通过expdp从测试库所在的源服务器将指定的数据表或数据源导出为一个或多个数据文件&#xff08;.dmp文件&#xff09;&…

黑马项目一完结后阶段面试45题 JavaSE基础部分20题(一)

一、Java数据类型 基本数据类型——四类八种 整数型 byte short int long 浮点型 float double 字符型 char 布尔型 boolean 引用数据类型 String字符串 类&#xff08;对象&#xff09; 接口类型 数组类型 枚举类型 二、面向对象的三大特性 1.封装 把同一类事物…

添加SQLCipher 到项目中

文章目录 一、克隆下载SQLCipher二、手动导入1. 生成sqlite3.c2. 在项目中添加命令3. 添加 Security.framework 三、CocoaPods导入 SQLCipher官方地址 一、克隆下载SQLCipher $ cd ~/Documents/code $ git clone https://github.com/sqlcipher/sqlcipher.git二、手动导入 1.…

二叉树小结

二叉树 树的遍历(如何遍历&#xff0c;如何利用特性问题) 前序遍历&#xff08;中前后&#xff09; 递归 class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res new ArrayList<>();inorder(root, res);return res…

电商系统架构设计系列(八):订单数据越来越多,数据库越来越慢该怎么办?

上篇文章中&#xff0c;我给你留了一个思考题&#xff1a;订单数据越来越多&#xff0c;数据库越来越慢该怎么办&#xff1f; 今天这篇文章&#xff0c;我们来聊一下如何应对数据的持续增长&#xff0c;特别是像订单数据这种会随着时间一直累积的数据。 引言 为什么数据量越大…

shell从入门到精通(19)特殊变量

​ ​参考:Special Parameters (Bash Reference Manual) (gnu.org) 文章目录 $0$*$@$?变量名称作用$0当前脚本的文件名,不一定是全路径,取决于执行时传入的脚本路径$n叫做位置参数,n≥1 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第…

成考本科和国开本科哪个认可度高些 应该选择哪个

成考本科和国开本科都属于成人教育&#xff0c;两种学历都能为您提供知识、技能和学术背景&#xff0c;为您的职业道路打下坚实的基础。选择哪种学历取决于您的学习兴趣、时间安排和职业目标。 成考本科和国开本科谁认可度高 成人高等教育考试(成考)本科和国家开放大学(国开)本…

jenkins容器内CI/CD 项目失败问题

问题&#xff1a; 在jenkins 的docker容器内CI/CD制作vue项目镜像失败 1、docker权限问题 permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs%…

【idea】点击idea启动没反应

RT 点击idea启动的时候没反应&#xff0c;接着百度报错&#xff0c;基本跟他们的也不一样。 首先我是做版本升级。其次&#xff0c;我之前是破解的。如果你也是跟我一样的话&#xff0c;那问题可能就处在破解上了 解决方式 首先&#xff0c;是跟大部分解决思路一样。先找到项…

分清性能测试,负载测试,压力测试这三个的区别

做测试一年多来&#xff0c;虽然平时的工作都能很好的完成&#xff0c;但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺&#xff0c;所以&#xff0c;在工作之余也做了一些测试方面的知识的补充。不足之处&#xff0c;还请大家多多交流&#xff0c;互相学习。 …