1. 程式人生 > >設定響應頭和緩衝區

設定響應頭和緩衝區

設定響應頭

  設定響應頭可以使用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()方法