Java#HttpServletResponse

public void addCookie(Cookie cookie) 

將指定 cookie 添加到響應。可多次調用此方法設置一個以上的 cookie。

cookie 要返回給客戶端的 Cookie  

 

public void addDateHeader(String name, long date) 

用給定名稱和日期值添加響應頭。該日期根據距曆元時間的毫秒數指定。此方法允許響應頭有多個值。

name 要設置的頭的名稱  

date 附加的日期值  

 

public void addHeader(String name, String value) 

用給定名稱和值添加響應頭。此方法允許響應頭有多個值。

name 頭的名稱  

value 附加的頭值

 

public void addIntHeader(String name, int value) 

用給定名稱和整數值添加響應頭。此方法允許響應頭有多個值。

name 頭的名稱  

value 指定的整數值  

 

public boolean containsHeader(String name)

返回一個 boolean 值,指示是否已經設置指定的響應頭。

name 頭名稱  

return 如果已經設置指定的響應頭,則返回 true;否則返回 false  

 

public String encodeRedirectURL(String url) 

對指定 URL 進行編碼,以便在 sendRedirect 方法中使用它,如果不需要編碼,則返回未更改的 URL。此方法的實現包含可以確定Session ID 是否需要在 URL 中編碼的邏輯。因爲進行此確定的規則可能不同於用來確定是否對普通鏈接進行編碼的規則,所以此方法與 encodeURL 方法是分開的。 發送到 HttpServletResponse.sendRedirect 方法的所有 URL 都應該通過此方法運行。否則,URL 重寫不能用於不支持 cookie 的瀏覽器。

url 要編碼的 URL。  

return 如果需要編碼,則返回編碼的 URL;否則返回未更改的 URL。  

 

public void sendError(int sc, String msg) throws java.io.IOException 

使用指定狀態將錯誤響應發送到客戶端。默認情況下,服務器將創建類似 HTML 格式的服務器錯誤頁面的響應,該頁面包含指定消息,內容類型設置爲 "text/html",並且保持 cookie 和其他頭不變。 如果已經對 Web 應用程序進行了對應於傳入狀態代碼的錯誤頁面聲明,則將優先處理建議的 msg 參數。

如果已經提交了響應,則此方法拋出 IllegalStateException。使用此方法後,響應應該被視爲已經被提交,不能再寫入。

sc 錯誤狀態代碼  

msg 描述性消息  

Throws java.io.IOException: 如果發生輸入或輸出異常  

Throws IllegalStateException: 如果提交了響應  

 

public void sendError(int sc) throws java.io.IOException 

使用指定狀態代碼並清除緩衝區將錯誤響應發送到客戶端。

如果已經提交了響應,則此方法拋出 IllegalStateException。使用此方法後,響應應該被視爲已經被提交,不能再寫入。

sc 錯誤狀態代碼  

Throws java.io.IOException: 如果發生輸入或輸出異常  

Throws IllegalStateException: 如果在此方法調用之前提交了響應  

 

public void sendRedirect(String location) throws java.io.IOException 

使用指定重定向位置 URL 將臨時重定向響應發送到客戶端。此方法可以接受相對 URL;servlet 容器必須在將響應發送到客戶端之前將相對 URL 轉換爲絕對 URL。如果位置是相對的,沒有前導 '/',則容器將相對於當前請求 URI 對其進行解釋。如果位置是相對的,有一個前導 '/',則容器將相對於 servlet 容器根對其進行解釋。如果已經提交了響應,則此方法拋出 IllegalStateException。使用此方法後,響應應該被視爲已經被提交,不能再寫入。

location 重定向位置 URL  

Throws java.io.IOException: 如果發生輸入或輸出異常  

Throws IllegalStateException: 如果提交了響應,或者部分 URL 是給定的且無法將其轉換爲有效 URL  

 

public void setDateHeader(String name, long date) 

用給定名稱和日期值設置響應頭。該日期根據距曆元時間的毫秒數指定。如果已經設置了頭,則新值將重寫以前的值。containsHeader 方法可用於測試在設置其值之前頭是否存在。

name 要設置的頭的名稱  

date 指定的日期值  

 

public void setHeader(String name, String value) 

用給定名稱和值設置響應頭。如果已經設置了頭,則新值將重寫以前的值。containsHeader 方法可用於測試在設置其值之前頭是否存在。

name 頭的名稱  

value 頭值,

 

public void setIntHeader(String name, int value) Posts (0) 

用給定名稱和整數值設置響應頭。如果已經設置了頭,則新值將重寫以前的值。containsHeader 方法可用於測試在設置其值之前頭是否存在。

name 頭的名稱  

value 指定的整數值  

 

public void setStatus(int sc) 

設置此響應的狀態代碼。此方法用於設置沒有錯誤時的返回狀態代碼(例如狀態代碼 SC_OK 或 SC_MOVED_TEMPORARILY)。如果有錯誤,並且調用者希望調用 Web 應用程序中定義的錯誤頁面,則應改用 sendError 方法。

容器清除緩衝區,設置 Location 頭,並保留 cookie 和其他頭。

sc 狀態代碼  

 

 

HttpServletResponse繼承ServletResponse的方法:

 

public void flushBuffer() throws java.io.IOException 

強行將緩衝區中的所有內容寫入客戶端。調用此方法會自動提交響應,這意味着將編寫狀態代碼和頭。

 

public void reset() 

清除緩衝區中存在的所有數據以及狀態代碼和頭。如果已提交響應,則此方法將拋出 IllegalStateException。

Throws IllegalStateException:已提交響應異常  

 

public void resetBuffer() 

清除響應中底層緩衝區的內容,而不清除頭或狀態代碼。如果已提交響應,則此方法將拋出 IllegalStateException。

 

public void setBufferSize(int size) 

設置響應正文的首選緩衝區大小。servlet 容器將使用至少與所請求大小一樣大的緩衝區。可使用 getBufferSize 獲得使用的實際緩衝區大小。

較大的緩衝區允許在實際發送任何東西之前編寫更多的內容,這爲 servlet 提供了更多時間來設置適當的狀態代碼和頭。較小的緩衝區會減少服務器內存負載,並允許客戶端更快地開始接收數據。必須在編寫任何響應正文內容之前調用此方法;如果已經編寫了內容或者已經提交了響應對象,則此方法將拋出 IllegalStateException。

size 首選緩衝區大小  

Throws IllegalStateException: 如果在已編寫內容後調用此方法  

 

public int getBufferSize() 

返回用於該響應的實際緩衝區大小。如果未使用任何緩衝,則此方法返回 0。

return 使用的實際緩衝區大小  

 

public void setCharacterEncoding(String charset) 

設置將發送到客戶端的響應的字符編碼 (MIME charset),例如,將它設置爲 UTF-8。如果已通過 #setContentType 或 #setLocale 設置了字符編碼,則此方法將重寫該字符編碼。用 text/html 的 String 調用 #setContentType 並用 UTF-8 的 String 調用此方法等效於用 text/html; charset=UTF-8 的 String 調用 setContentType。

可重複調用此方法來更改字符編碼。如果在已調用 getWriter 之後或者在已提交響應之後調用此方法,則此方法沒有任何效果。

 

public String getCharacterEncoding() 

  返回用於此響應中發送的正文的字符編碼 (MIME charset) 名稱。可能已使用 #setCharacterEncoding 或 #setContentType 方法顯式指定字符編碼,或使用 #setLocale 方法隱式指定它。顯式指定優先於隱式指定。在已調用 getWriter 之後或者在已提交響應之後調用這些方法不會對字符編碼產生任何影響。如果未指定字符編碼,則返回 ISO-8859-1。

return 指定字符編碼名稱的 String,例如 UTF-8  

 

public boolean isCommitted() 

返回指示響應是否已提交的 boolean 值。已提交的響應已將其狀態代碼和頭編寫好。

return 指示響應是否已提交的 boolean 值  

 

public void setContentLength(int len) 

設置 HTTP servlet 中響應的內容正文的長度,此方法設置 HTTP Content-Length 頭。

len 指定將返回到客戶端的內容長度的整數;設置 Content-Length 頭  

 

public void setContentType(String type) 

設置將發送到客戶端的響應的內容類型,如果該響應尚未提交。給定內容類型可能包含字符編碼規範,例如 text/html;charset=UTF-8。如果在調用 getWriter 之前調用此方法,則只根據給定內容類型設置響應的字符編碼。

可重複調用此方法來更改內容類型和字符編碼。如果在已提交響應之後調用此方法,則此方法沒有任何效果。如果在已調用 getWriter 之後或者在已提交響應之後調用此方法,則該方法不會設置響應的字符編碼。

type 指定內容的 MIME 類型的 String  

 

public String getContentType() 

返回用於此響應中發送的 MIME 正文的內容類型。必須在提交響應之前已使用 #setContentType 指定適當的內容類型。如果未指定內容類型,則此方法返回 null。如果已指定內容類型,並且已經如 #getCharacterEncoding 中所述顯式或隱式指定了字符編碼或者已調用 #getWriter,則返回的字符串中將包含 charset 參數。如果未指定字符編碼,則省略 charset 參數。

return 指定內容類型的 String,例如 text/html; charset=UTF-8,或者返回 null  

 

public void setLocale(java.util.Locale loc) 

設置響應的語言環境,如果該響應尚未提交。如果尚未使用 #setContentType 或 #setCharacterEncoding 顯式設置字符編碼、尚未調用 getWriter,並且響應尚未提交,則此方法還將設置適合該語言環境的響應的字符編碼。如果部署描述符包含 locale-encoding-mapping-list 元素,並且該元素提供了給定語言環境的映射,則使用該映射。否則,從語言環境到字符編碼的映射是與容器相關的。可重複調用此方法來更改語言環境和字符編碼。如果在已提交響應之後調用該方法,則此方法沒有任何效果。如果在已使用 charset 規範調用 #setContentType 之後、在已調用 #setCharacterEncoding 之後、在已調用 getWriter 之後,或者在已提交響應之後調用此方法,則此方法不會設置響應的字符編碼。

loc 響應的語言環境  

 

public java.util.Locale getLocale() 

返回使用 #setLocale 方法指定的此響應的語言環境。在已提交響應後調用 setLocale 沒有任何效果。如果未指定任何語言環境,則返回容器的默認語言環境。

 

public ServletOutputStream getOutputStream() throws java.io.IOException 

返回適用於在響應中編寫二進制數據的 ServletOutputStream。servlet 容器不會編碼二進制數據。對 ServletOutputStream 調用 flush() 將提交響應。可調用此方法或 #getWriter 編寫正文,而不是兩種方法都調用。

return 用於編寫二進制數據的 ServletOutputStream  

Throws IllegalStateException: 如果已對此響應調用 getWriter 方法  

Throws java.io.IOException: 如果發生輸入或輸出異常  

 

public java.io.PrintWriter getWriter() throws java.io.IOException 

返回可將字符文本發送到客戶端的 PrintWriter 對象。PrintWriter 使用 #getCharacterEncoding 返回的字符編碼。如果未如 getCharacterEncoding 中所述指定響應的字符編碼(即該方法只返回默認值 ISO-8859-1),則 getWriter 會將字符編碼更新到 ISO-8859-1。 對 PrintWriter 調用 flush() 將提交響應。

可調用此方法或 #getOutputStream 編寫正文,而不是兩種方法都調用。

return 可將字符數據返回到客戶端的 PrintWriter 對象。  

Throws UnsupportedEncodingException: 如果無法使用getCharacterEncoding 返回的字符編碼  

Throws IllegalStateException: 如果已對此響應對象調用 getOutputStream 方法  

Throws java.io.IOException: 如果發生輸入或輸出異常  

 

 

響應消息頭及示例:

Location: http://hi.baidu.com/wjy9/home    通知瀏覽器去訪問另一個資源

Server:apache tomcat                                          說明服務器

Content-Encoding: gzip                                       通知瀏覽器數據的壓縮格式

Content-Length: 80                                              通知瀏覽器發送數據的長度

Content-Language: zh-cn                                   通知瀏覽器語言環境

Content-Type: text/html; charset=GB2312            通知瀏覽器文件的格式和編碼

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT       告訴瀏覽器文件的修改時間

Refresh: 1;url= http://hi.baidu.com/wjy9/home              通知瀏覽器自動刷新(單位爲秒)

Content-Disposition: attachment; filename=aaa.zip      通知瀏覽器以下載的方式打開資源

Set-Cookie:SS=Q0=5Lb_nQ; path=/search       發cookie

Expires: -1                 禁止緩存的頭字段                        

Cache-Control: no-cache     禁止緩存的頭字段      

Pragma: no-cache              禁止緩存的頭字段(根據瀏覽器不同,使用不同方式,可全寫)

Connection: close/Keep-Alive                連接狀態

Date: Tue, 11 Jul 2000 18:23:51 GMT   系統時間


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章