您的位置:首页 > 编程语言 > Java开发

Java Servlet重定向跟转发的不同点

2017-08-09 16:19 155 查看
1.请求转发:HttpServletRequset.getRequsetDispatcher(String path).forward(requset,response);

            (1)服务器内部转发,浏览器Url地址不会改变,对用户透明,整体体现一次请求一次响应。

          (2)请求转发前,会清空缓冲区。

           (3)如果转发的是Servlet或jsp,就会直接把当前的HttpServletRequset对象与HttpServletResponse对象转交给目标Servlet或JSP的Service方法,处理后将响应结果反馈给客户端

            (4)如果转发的是html静态页面,则就读取文档中的内容发送到前端。

           (5)请求转发不会执行转发方法之后的代码。

2.重定向:HttpServletResponse.sendRedirect(String path)

              (1)客户端外部转发,浏览器的Url地址会改变,在Servlet重定向后,会返回302的临时状态码,响应内容为待重定向路径,然后浏览器就会再次发出请求,请求路径为刚才响应内容中的地址,整体俩个请求,俩个响应

            (2)重定向前,也会清空缓冲区

            (3)重定向后,会执行重定向后的代码

      区别总结

              (1)请求转发是服务器完成,重定向是客户端完成。

               (2)请求转发速度快,重定向速度慢。

               (3)请求转发整体一次请求一次响应,重定向整体俩次请求俩次响应。

                (4)请求转发Url不会改变,重定向的Url地址会改变

                (5)请求转发必须在同一台服务器下完成,重定向可以在不同的服务器下完成。

                (6)请求转发之后的代码不执行,重定向之后的代码会执行。

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息