转发和重定向的区别

小灰灰 2022-02-03 08:27 417阅读 0赞

转发(Forward)和重定向(Redirect)区别

转发是服务器行为,而重定向是客户端(浏览器)行为

转发(Forward)

转发是通过(Forward)是通过RequestDispatcher对象的forward(HttpServletRequest request,HttpServletResponse response)方法实现。RequestDispatcher可以通过HttpServletRequest的getRequestDispatcher()方法获得。

例如:

  1. request.getRequestDispatcher("xxx.jsp").forward(request,response);

重定向(Redirect)

重定向(Redirect)是利用服务器返回的状态码来实现的,客户端浏览器在请求服务器的时候,服务器会返回一个状态码。服务器会通过HttpServletResponse的setStatus(int status)方法设置状态码,如果服务器返回的是301/302,浏览器会重新到新的网址来请求该资源。

细节区别

1. 从地址状态来讲
转发(Forward)是服务器请求资源,服务器直接访问目标地址的URL,获取该URL下的资源将其返回给浏览器进行显示,但是浏览器根本不知道这个资源是从哪里来的,所以url路径将不会发生改变。
重定向(Redirect)是浏览器通过服务器返回的状态字,去新的目标地址中访问该资源,所以浏览器本身是知道该资源的位置,故而URL路径会发生改变,是该资源的路径。

2. 从共享数据来讲
转发(Forward)进行转发和转发到的页面都可以共享该Request中的数据;
重定向(Redirect)不能实现数据的共享。

3. 从应用场景来讲
forward一般用于用户登录时根据角色转发到相应的模块;
redirect一般用于用户注销登录时重定向到主页或者其他网站。

4. 从运行速度来讲
forward效率较高,redirect效率较低。

发表评论

表情:
评论列表 (有 0 条评论,417人围观)

还没有评论,来说两句吧...

相关阅读

    相关 定向转发区别

    本质区别: 转发是服务器行为,而重定向是客户端行为。 重定向的特点: 两次请求,浏览器的地址发生变化,可以访问自己Web之外的资源,传输的数据会丢失。 转发的特