请求转发和重定向的区别
请求转发是一个请求一次响应
重定向是两次请求两次响应。
一、转发
转发是指当前Servlet将请求转交给其他的Servlet进行再次处理,转发特点:
- 转发时浏览器只发送1次请求
- 转发是在服务器端进行的
- 转发时浏览器的地址栏没有发生改变
- 浏览器感知不到转发的发生
二、重定向
重定向是Servlet发送给浏览器的一个特殊的响应,这个响应告诉浏览器再去请求另一个地址,类似于政府的相关部门,该特殊响应的报文格式如下:
HTTP/1.1 302 Found Location: http://localhost:8080/04_WEB_Servlet/target.html
这个特殊响应的响应状态码是302,还有一个特殊的响应头Location指向的是一个新的地址,当浏览器收到302这个响应状态码以后,就会自动的再次向Location所指向的地址发送请求
重定向的特点:
- 重定向时浏览器一共发送了2次请求
- 重定向是在浏览器端进行的
- 浏览器的地址栏会发生改变
- 浏览器可以感知到重定向的发生
三、页面跳转的时候什么时候用转发,什么时候用重定向?
四、转发带来的问题
如果最后一次转发的是一次提交,那么每一次刷新由于没有跳转的正确的页面都会重新提交,最终导致重复提交
-
删除之后,重定向
-
修改之后,重定向
-
保存之后,重定向
-
重定向:
-
成功
-
失败
-
五、转发和重定向的比较:
比较内容 | 转发 | 重定向 |
浏览器请求次数 | 1 | 2 |
发生的位置 | 服务器 | 浏览器 |
地址栏变化 | 无 | 有 |
浏览器感知 | 无 | 有 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步