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

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

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

     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:低

https://blog.csdn.net/qq_28804275/article/details/101468409

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值