从HTTP协议分析转发和重定向的区别

来源:互联网 发布:js中的内置对象 编辑:程序博客网 时间:2024/03/29 00:03

 

【文章标题】从HTTP协议分析转发和重定向的区别

【文章作者】曾健生

【作者邮箱】zengjiansheng1@126.com

【作者QQ190678908

【作者MSNzengjiansheng1@hotmail.com

【作者博客】blog.csdn.net/newjueqi

 

 

*******************************************************************************

 

本文主要是通过截取HTTP包的数据,分析java Web开发中的转发和重定向的区别。

 

第一步,编写一个简单的ServletURLhttp://pc-200908141013:8080/Demo/servlet/SendURL,代码如下:

 

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

           throws ServletException, IOException {

       //转发

       req.getRequestDispatcher("/Test.html").forward( req, resp );

      

       //重定向

       //resp.sendRedirect("/Demo/Test.html");

   

}

 

第二步:运行Tomcat,在浏览器中输入http://pc-200908141013:8080/Demo/servlet/SendURL,用HttpWatch截取HTTP的信息,得到转发的HTTP信息如下图:

                                                                             1

 

第三步:把servlet中转发的代码注释,把重定向的代码的注释去掉,再次访问,用HttpWatch截取HTTP的信息,截获了两次HTTP的信息,如下两张图:

 

 

                                                                                    2

 

 

                                                                                    3

 

由图1,图2,图3可知,

 

     转发是直接是返回http://pc-200908141013:8080/Demo/Test.html的内容。

 

重定向是有两次响应数据的,第一次返回的是302状态码,要求浏览器访问Location头的http://pc-200908141013:8080/Demo/Test.html的链接地址,第二次返回的是http://pc-200908141013:8080/Demo/Test.html的内容。

 

 

 

原创粉丝点击