JSP 伺服器回應
Response回應物件主要將JSP容器處理後的結果傳回客戶端。可以透過response變數設定HTTP的狀態和向客戶端發送數據,如Cookie、HTTP檔案頭資訊等。
一個典型的回應看起來就像下面這樣:
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (空行) <!doctype ...> <html> <head>...</head> <body> ... </body> </html>
狀態行包含HTTP版本訊息,例如HTTP/1.1,一個狀態碼,例如200,還有一個非常短的訊息對應狀態碼,例如OK。
下表摘要出了HTTP1.1回應頭中最有用的部分,在網路程式設計中您將會經常見到它們:
反應頭 | 說明 |
---|---|
Allow | 指定伺服器支援的request方法(GET,POST等) |
Cache-Control | 指定回應文檔能夠被安全快取的情況。通常取值為 public,private 或no-cache 等。 Public意味著文件可緩存,Private意味著文件只為單一使用者服務並且只能使用私有快取。 No-cache 意味著文件不被快取。 |
Connection | 命令瀏覽器是否要使用持久的HTTP連線。 close值 命令瀏覽器不使用持久HTTP連接,而keep-alive 意味著使用持久化連接。 |
Content-Disposition | 讓瀏覽器要求使用者將回應以給定的名稱儲存在磁碟中 |
Content-Encoding | 指定傳輸時頁面的編碼規則 |
Content-Language | 表達文件所使用的語言,如en, en-us,,ru等等 |
Content-Length | 表示響應的位元組數。瀏覽器使用持久化 (keep-alive) HTTP 連線時才有用 |
Content-Type | 顯示文件所使用的MIME類型 |
Expires | 指明啥時候過期並從快取移除 |
Last-Modified | 指明文檔最後修改時間。用戶端可以 快取文件並且在後續的請求中提供一個 If-Modified-Since#請求頭 |
Location | 在300秒內,包含所有的有一個狀態碼的回應位址,瀏覽器會自動重連然後檢索新文件 |
Refresh | 指明瀏覽器每隔多久請求更新一次頁面。 |
Retry-After | 與503 (Service Unavailable)一起使用來告訴使用者多久後請求將會得到回應 |
Set-Cookie | 指明目前頁面對應的cookie |
HttpServletResponse類別
response 物件是 javax.servlet.http.HttpServletResponse 類別的一個實例。就像伺服器會建立request物件一樣,它也會建立一個客戶端回應。
response物件定義了處理建立HTTP資訊頭的介面。透過使用這個對象,開發者可以新增新的cookie或時間戳,還有HTTP狀態碼等等。
下表列出了用來設定HTTP回應頭的方法,這些方法由HttpServletResponse 類別提供:
S.N. | 方法 & 說明 |
---|---|
1 | String encodeRedirectURL(String url) |
2 | String encodeURL(String url) |
3 | boolean containsHeader(String name) |
4 | boolean isCommitted() |
5 | void addCookie(Cookie cookie) |
6 | void addDateHeader(String name, long date) |
7 | void addHeader(String name, String 值) |
8 | void addIntHeader(String name, int 值) |
9 | void flushBuffer() |
10 | void reset() |
11 | void resetBuffer() |
12 | void sendError(int sc) |
13 | void sendError(int sc, String msg) |
14 | void sendRedirect(String location) |
void setBufferSize(int size)
| |
void setCharacterEncoding(String charset)
| |
void setContentLength(int len)
| |
void setContentType(String type) | #
設定回應的內容的類型,如果回應尚未提交的話 |
void setDateHeader(String name, long date) |
使用指定名稱和值設定回應標頭的名稱和內容 |
void setHeader(String name, String 值) |
使用指定名稱和值設定回應標頭的名稱和內容 |
void setIntHeader(String name, int 值) |
使用指定名稱和值設定回應標頭的名稱和內容 |
void setLocale(Locale loc) |
設定回應的語言環境,如果回應尚未被提交的話 |
void setStatus(int sc) | #
設定回應的狀態碼 |