JavaWeb_Servlet_重定向和转发

来源:互联网 发布:论十大关系 知乎 编辑:程序博客网 时间:2024/06/09 12:07
本博文为子墨原创,转载请注明出处!
http://blog.csdn.net/zimo2013/article/details/9082607

1.reponse.sendRedirect() 重定向
    通过这种方式重定向,将会产生两次get请求,并且地址栏信息发生改变,等效设置response的状态代码302以及设置头location中指定的URL,使浏览器重定向网页的内容。
     response.setStatus(302);
    response.setHeader("location", "/Day01/my.html");*/ //地址信息当前于web站点
    等效于  response.sendRedirect("/Day01/my.html");

2.request.getRequestDispatcher().forward(request, response) 转发
    通过这种方式转发,将会使用同一个request和response对象只会有一次get请求(request和response对象只生成一次),地址栏信息不发生变化。利用到缓冲机制,服务器向浏览器发送数据细节:

     服务器先将需要发送的数据写入response缓冲区中去,然后将response中的数据回送给浏览器,那么什么样的数据才能满足发送给浏览器
        (1).service()方法处理完全
        (2).缓冲区数据已满
        (3).缓冲区的数据刷新,out.flush()或response.flushbuffer(),缓冲区中的数据回送给浏览器(service处理完后)。
        使用转发forword,首先将response的缓冲区清空,响应头信息还有效.如果想清空成功,response.isCommitted() == flase,即forword没有刷新过,一旦刷新后,forword将不能成功!out.close()也隐含刷新操作
      特别提示: 在<JSP:FORWORD>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么这种重定向方式将不起作用。

        使用了重定向或者转发后,应该紧接着写上return语句


3.与缓存有关的方法
   isCommitted()
     resetBuffer()
   flushBuffer()

 

原创粉丝点击