设置响应头和缓冲区

设置响应头

  设置响应头可以使用HttpServletResponse对象上的setHeader()、addHeader()。setHeader()用于设置响应头名称与值,addHeader()是在同一个响应头名称上附加值。
  如果响应头的值是整数,使用setIntHeader()、addIntHeader()方法。
  如果响应头的值是日期,则可以使用setDateHeader()、addDateHeader()方法。

  所有的标头设置,必须在响应确认之前,在响应确认之后设置的标头,会被容器忽略。


缓冲区

  容器可以但非必要对响应进行缓冲,通常容器默认都会对响应进行缓冲。 


关于缓冲区的API

  HttpServletResponse有关缓冲的方法有:

    1、getBufferSize()  

    2、setBufferSize()  

    setBufferSize()必须在调用HttpServletResponse的getWriter()或getOutputStream()方法之前调用,这样,所取得的Writer或ServletOutputStream才会套用这个设置。

在调用HttpServletResponse的getWriter()或getOutputStream()方法之后调用setBufferSize(),会抛出IllegalStateException

    3、isCommitted()

    在缓冲区未满之前,设置的响应相关内容都不会真正传至客户端,可以使用isCommitted()看看是否响应已确认。

    4、reset()

    如果想要重置所有响应信息,可以调用reset()方法,这会连同已设置的标头一并清除。

    5、resetBuffer()

    调用resetBuffer()会重置响应内容,但不会清除已设置的标头内容。

    6、flushBuffer()

    flushBuffer()会清除(flush)所有缓冲区中已设置的响应信息至客户端。

    reset()、resetBuffer()必须在响应未确认前调用,如果在响应已确认后调用reset()、resetBuffer()会抛出IllegalStateException。


缓冲区刷新

  HttpServletResponse对象若被容器关闭,则必须清除刷新所有的响应内容。
  响应对象被关闭的时机点有以下几种:
    1、Servlet的service()方法已结束
    2、响应的内容长度超过HttpServletResponse的setContentLength()所设置的长度。
    3、调用了sendRedirect()方法
    4、调用了sendError()方法
    5、调用了AsyncContext的complete()方法

 

猜你喜欢

转载自www.cnblogs.com/Mike_Chang/p/10072725.html