栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

请求转发与重定向区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

请求转发与重定向区别

请求转发与重定向区别

学习spring时又想到了javaweb的小知识
我觉得这个问题我们有必要来搞清楚一下。其实理清关系也不是很难。

转发request:

request.getRequestDispatcher(path).forward(request, response);

用户在浏览器发送请求,然后到Servlet1,Servlet1可能没有达到目标,内部再转到Servlet2,Servlet2处理,处理完之后将结果返回给浏览器。对服务器而言,用户访问两个Servlet,但对于用户而言,则请求一次,响应一次,这个过程叫转发,用户以为请求了一个资源,而服务器内部又请求了一个资源,url不变。

因为只发一次请求,所以request中的数据是可以共享的。

重定向:

response.sendRedirect(path);

浏览器发送请求,到Servlet1,Servlet1把结果显示给浏览器,Servlet1告诉浏览器,你访问的资源还是不够,你可以再去访问另外一个资源,Servlet1有一个302告诉浏览器Servlet2地址,浏览器再发一个请求到Servlet2,Servlet2处理完结果再返回给浏览器。浏览器发送两次请求,得到两次响应,url肯定会有变化

浏览器每次发送请求到服务器,都会执行Servlet中服务的方法,服务方法执行之前,都会创建一个用于接受请求的request,和用于响应数据的response,浏览器发送两次请求到服务器,会创建两个新的request,意味着两个request中的数据不能共享。

区别总结:

1.重定向是浏览器发送请求并受到响应以后再次向一个新地址发请求;转发服务器收到请求后为了完成响应转到另一个资源。

2.重定向中有两次请求对象,不共享数据;转发只产生一次请求对象且在组件间共享数据。

3.重定向后地址栏地址改变;而转发则不会。

4.重定向的新地址可以是任意地址;转发必须是同一个应用内的某个资源。

5.转发是服务端行为,重定向是客户端行为

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/630945.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号