请求转发和重定向

一、

1.请求转发:

java 复制代码
request.getRequestDispatcher(URL地址).forward(request, response)

【请求转发是一种服务器行为,只能转发本项目内的资源,唯独外部的可以请求到WEB-INF内的文件】

  • 服务器内部行为,客户端不知道页面的实际路径。
  • 请求和响应对象在服务器内部传递,地址栏不变。
  • 可以共享请求数据,如请求参数和属性。

【请求转发的流程图】

2.重定向:

java 复制代码
response.sendRedirect(URL地址)

【重定向是一种服务器指导的客户端行为,客户端发起第一个请求,请求被服务器接收,服务器会返回给客户一个新的地址,客户端接收到新的地址后会根据新地址去发起新的请求

重定向可以跳转到任意网站内的资源,但是访问不到web-INF内的文件】

  • 客户端行为,服务器告诉客户端去访问另一个URL。
  • 地址栏会变成新的URL。
  • 新的请求会丢失原有请求的数据,需要通过URL参数或会话传递。

【重定向的流程图】

二. 重定向和请求转发的区别

1、重定向是两次request请求,转发是一次request请求

2、重定向之后地址栏上的地址会发生变化,变化成第二次请求的地址,转发之后地址栏上的地址不会变化,还是第一次请求的地址(参见流程图)

3、转发是服务器行为,重定向是客户端行为。重定向时浏览器上的网址改变 ,转发是浏览器上的网址不变

4、重定向时的网址可以是任何网址,转发的网址必须是本站点的网址(注意WEB-INF的特殊情况)

相关推荐
笑口常开xpr1 天前
惊!printf 不往屏幕输?都是 fd 在搞鬼!爆肝拆解 Linux 文件描述符 + 重定向底层,学会直接在终端横着走
linux·文件·重定向
Ice__Cai16 天前
Flask 之 Request 对象详解:全面掌握请求数据处理
后端·python·flask·request·python web框架
天若有情6731 个月前
【python】Python爬虫入门教程:使用requests库
开发语言·爬虫·python·网络爬虫·request
wsdhla4 个月前
form表单提交前设置请求头request header及文件下载
html·form·request·send·header·submit
Jogging-Snail4 个月前
从零开始掌握Linux数据流:管道与重定向完全指南
linux·运维·管道·重定向·linux 数据流·管道原理
Yant2245 个月前
Django REST Framework 请求封装源码解析与实现流程
django·sqlite·drf·request·源码解析
Minner-Scrapy6 个月前
Web3.py 入门笔记
python·web3·web3.py·eth·request
老友@6 个月前
在 Spring Boot 中使用异步线程时的 HttpServletRequest 复用问题
java·spring boot·后端·tomcat·多线程·request·异步线程
码农研究僧6 个月前
UniApp 中封装 HTTP 请求与 Token 管理(附Demo)
vue3·uniapp·js·token·request
问道飞鱼7 个月前
【知识科普】HTTP相关内容说明
websocket·http·请求转发·请求重定向