看了网上很多回答,基本都讲的比较长和详细,但是该问题一般在面试中问的比较多,
先总结如下:
-
基本的区别是:请求转发是在服务器内部转发,重定向约等于于从外部访问服务器
-
请求转发因为是从服务器内部转发,所以请求转发能够访问WEB-INF文件夹下的资源
这点重定向无法办到
-
请求转发能够从request作用域中获取数据,而重定向不能,但是它们的共同点是都能从
serveletContext 和 session 中获取数据
-
也是最容易搞混的,路径问题:
1)重定向认为的"/"指的是tomcat的根路径
2)请求转发认为的"/"指的是当前应用的根路径
举个例子:Tomcat下面有个项目csdn,文件路径为D:/tomcat/webapps/csdn
此时重定向认为的根路径"/",就是webapps/
而请求转发认为的根路径是:csdn/
简单总结为:
请求转发和重定向:
-
一个服务器内部转发,一个在服务器外部访问
-
一个能访问WEB-INF, 一个不能
-
一个能取request作用域中的数据,另一个不能
-
请求转发认为的根路径是应用根路径,重定向认为的根路径是服务器根路劲
以上是对下面回答的补充与扩展:
https://blog.youkuaiyun.com/qq_34111779/article/details/78164027