总结:原生servlet请求转发url与请求重定向url的使用区别
- 一·演示前提:
- 1.演示案例的项目架构如图:
- 2.设置web应用的映射根目录:/lmf,当然也可以不设置。
- 二·什么叫请求转发、请求重定向?
- 1.请求转发解释图
- 2. forward(转发)概念解释:
- 3.请求重定向解释图
- 4. redirect(重定向)概念解释:
- 三·请求转发url的使用:
- 1.使用绝对路径url:报异常
- 结论:请求转发完后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 自定义的绝对路径(这样必然报错)
- 2.使用相对路径url:分两种情况
- 2-1 使用斜杠开头的相对路径:
- 结论:
- (1)服务端路径 = IP地址+端口+应用映射根目录
- (2)斜杠在这里会被解释为:服务端路径
- (3)请求转发完后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 以斜杠开头的相对路径
- 2-2 使用非斜杠开头的相对路径
- 结论:
- (1)服务端路径 = IP地址+端口+应用映射根目录
- (2)默认以服务端路径为基础,再拼接上自定义相对路径,生成最终的url
- (3)请求转发完后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 非斜杠开头的相对路径
- 四·请求重定向url的使用:
- 1.使用绝对路径url:
- 结论:请求重定向完后,生成的最终url = 自定义绝对路径
- 2.使用相对路径url:分两种情况
- 2-1 使用斜杠开头的相对路径url
- 结论:
- (1)客户端路径 = IP地址+端口
- (2)斜杠在这里会被解释为:客户端路径
- (3)请求转发完后,生成的最终访问url = IP地址 + 端口 + 以斜杠开头的相对路径(这样的url很可能会报错)
- 2-2 使用非斜杠开头的相对路径url
- 结论:
- (1)服务端路径 = IP地址+端口
- (2)默认以服务端路径为基础,再拼接上自定义相对路径,生成最终的url
- (3)请求重定向后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 非斜杠开头的相对路径
- 五·综上所述:
- 1.请求转发的url不能使用绝对路径,否则报异常
- 2.请求转发的url可以使用相对路径,且无论是不是以斜杠开头,都是以服务端路径为基础,然后进行拼接生成的最终url
- 3.请求重定向url可以使用绝对路径,且绝对路径就是最终url
- 4.请求重定向url可以使用相对路径,但是区别是否以斜杠开头的相对路径。详情参考上文所述。
- 六·请求转发与请求重定向的友情链接:
- 1.请求转发(Forward)和重定向(Redirect)的区别
- 2.解决:为什么“请求重定向“可以防止浏览器通过刷新重复提交表单?而请求转发不行?
一·演示前提:
1.演示案例的项目架构如图:
2.设置web应用的映射根目录:/lmf,当然也可以不设置。
应用映射根目录作用:也称为“应用上下文”,规定访问该应用的任何映射接口都得加上“/lmf”前缀,否则就会报404。
(如果没有设置应用映射根目录,则可以省略)
即,访问一个应用的接口,完整URL格式为:协议://IP地址:端口号/应用映射根目录/具体接口映射的url路径
例如:http://127.0.0.1:8080/lmf/.......
二·什么叫请求转发、请求重定向?
1.请求转发解释图
2. forward(转发)概念解释:
是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,因为这个跳转过程实在服务器实现的,并不是在客户端实现的所以客户端并不知道这个跳转动作,所以它的地址栏还是原来的地址
3.请求重定向解释图
4. redirect(重定向)概念解释:
是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL
三·请求转发url的使用:
1.使用绝对路径url:报异常
(1)找一个浏览器可以直接访问的绝对路径:http://127.0.0.1/8080/lmf/page/view1.jsp
(2)源代码:
(3)测试结果:报错
结论:请求转发完后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 自定义的绝对路径(这样必然报错)
2.使用相对路径url:分两种情况
2-1 使用斜杠开头的相对路径:
源代码:
测试结果:成功访问
结论:
(1)服务端路径 = IP地址+端口+应用映射根目录
(2)斜杠在这里会被解释为:服务端路径
(3)请求转发完后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 以斜杠开头的相对路径
2-2 使用非斜杠开头的相对路径
源码:
测试结果:成功
结论:
(1)服务端路径 = IP地址+端口+应用映射根目录
(2)默认以服务端路径为基础,再拼接上自定义相对路径,生成最终的url
(3)请求转发完后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 非斜杠开头的相对路径
四·请求重定向url的使用:
1.使用绝对路径url:
源码:
测试结果:成功
结论:请求重定向完后,生成的最终url = 自定义绝对路径
2.使用相对路径url:分两种情况
2-1 使用斜杠开头的相对路径url
源码:
测试结果:最终的url由于缺少“应用映射的根目录”,导致404
结论:
(1)客户端路径 = IP地址+端口
(2)斜杠在这里会被解释为:客户端路径
(3)请求转发完后,生成的最终访问url = IP地址 + 端口 + 以斜杠开头的相对路径(这样的url很可能会报错)
2-2 使用非斜杠开头的相对路径url
源码:
测试结果:成功
结论:
(1)服务端路径 = IP地址+端口
(2)默认以服务端路径为基础,再拼接上自定义相对路径,生成最终的url
(3)请求重定向后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 非斜杠开头的相对路径
五·综上所述:
1.请求转发的url不能使用绝对路径,否则报异常
2.请求转发的url可以使用相对路径,且无论是不是以斜杠开头,都是以服务端路径为基础,然后进行拼接生成的最终url
3.请求重定向url可以使用绝对路径,且绝对路径就是最终url
4.请求重定向url可以使用相对路径,但是区别是否以斜杠开头的相对路径。详情参考上文所述。
六·请求转发与请求重定向的友情链接:
1.请求转发(Forward)和重定向(Redirect)的区别
https://www.cnblogs.com/Qian123/p/5345527.html
2.解决:为什么“请求重定向“可以防止浏览器通过刷新重复提交表单?而请求转发不行?
https://blog.csdn.net/weixin_48033662/article/details/117706628