前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >转发(forward)和重定向(redirect)的区别

转发(forward)和重定向(redirect)的区别

作者头像
happyJared
发布2019-06-14 10:52:43
1K0
发布2019-06-14 10:52:43
举报
文章被收录于专栏:happyJaredhappyJared

转发是服务器行为,重定向是客户端行为。

转发(Forward) 是通过 RequestDispatcher 对象的 forward(HttpServletRequest request,HttpServletResponse response)方法实现的,而 RequestDispatcher 可以通过 HttpServletRequest 的 getRequestDispatcher() 方法获得。例如下面的代码就是跳转到success.jsp 页面。

代码语言:javascript
复制
     request.getRequestDispatcher("success.jsp").forward(request, response);

重定向(Redirect) 是通过服务器返回状态码(301、302)来实现的。客户端发起请求后,服务器会返回一个状态码,服务器一般通过 HttpServletResponse 的 setStatus(int status) 方法设置状态码。当服务器返回301或者302,则浏览器会到新的网址重新请求新的资源。

  • 从地址栏显示来说

forward 是服务器请求资源,服务器直接访问目标地址的 URL,把目标站点响应的内容读取过来,然后把这些内容再发给浏览器,而浏览器不需要关注这些内容是从哪里来的,,所以它的地址栏不会发生变化。redirect 是服务端根据逻辑,响应一个状态码,告诉浏览器重新去请求某一地址,所以地址栏显示的是新的 URL;

  • 从数据共享来说

forward:原页面和目标页面可以共享 request 里面的数据; redirect:不同页面之间不能共享数据;

  • 从运用地方来说

forward:一般用于用户登陆时,根据角色转发到相应的模块; redirect:一般用于用户注销时,返回到重新登录的那个页面;

  • 从效率来说

forward:高 redirect:低

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.06.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档