JSP HTTP 狀態碼
HTTP請求與HTTP回應的格式相近,都有如下結構:
以狀態列+CRLF(回車換行)開始
零行或多行頭模組+CRLF
# 一個空行,例如CRLF
可選的消息體例如文件,查詢數據,查詢輸出
舉例來說,一個伺服器回應頭看起來就像下面這樣:
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (Blank Line) <!doctype ...> <html> <head>...</head> <body> ... </body> </html>
下表列出了可能會從伺服器傳回的HTTP狀態碼和與之關聯的訊息:
狀態碼 | 訊息 | # |
---|---|---|
100 | Continue | # 只有一部分請求被伺服器接收,但只要沒被伺服器拒絕,客戶端就會延續這個請求 |
# 101 | Switching Protocols | 伺服器交換器協定 |
200 | OK | 請求被確認 |
# 201 | Created | 請求時完整的,新的資源被建立 |
# 202 | Accepted | # 請求被接受,但未處理完 |
203 | Non-authoritative Information | # |
# 204 | No Content | |
# 205 | Reset Content | |
# 206 | Partial Content | |
# 300 | Multiple Choices | 一個超連結表,使用者可以選擇一個超連結並訪問,最大支援5個超連結 |
# 301 | Moved Permanently | 被請求的頁面已經移動到了新的URL下方 |
302 | Found | 被請求的頁面暫時性地移動到了新的URL下 |
303 | See Other | 被請求的頁面可以在一個不同的URL下找到 |
304 | Not Modified | |
# 305 | Use Proxy | |
# 306 | Unused | # 已經不再使用此狀態碼,但狀態碼被保留 |
# 307 | Temporary Redirect | 被請求的頁面暫時性地移動到了新的URL下 |
400 | Bad Request | # 伺服器無法辨識請求 |
401 | Unauthorized | 被要求的頁面需要使用者名稱和密碼 |
402 | Payment Required | 目前還不能使用此狀態碼 |
403 | Forbidden | 禁止存取所要求的頁面 |
404 | Not Found | 伺服器無法找到所請求的頁面 |
405 | Method Not Allowed | 請求中所指定的方法不被允許 |
406 | Not Acceptable | 伺服器只能建立一個客戶端無法接受的回應 |
# 407 | Proxy Authentication Required | # 在請求被服務前必須認證一個代理伺服器 |
408 | Request Timeout | 請求時間超過了伺服器所能等待的時間,連線被斷開 |
409 | Conflict | 請求有矛盾的地方 |
410 | Gone | 被請求的頁面不再可用 |
411 | Length Required | "Content-Length"沒有被定義,伺服器拒絕接受請求 |
412 | Precondition Failed | 請求的前提條件被伺服器評估為false |
# 413 | Request Entity Too Large | # 因為請求的實體太大,伺服器拒絕接受請求 |
# 414 | Request-url Too Long | 伺服器拒絕接受請求,因為URL太長。多出現在把"POST"請求轉換為"GET"請求時所附帶的大量查詢資訊 |
415 | Unsupported Media Type | 伺服器拒絕接受請求,因為媒體類型不被支援 |
# 417 | Expectation Failed | |
# 500 | Internal Server Error | 請求不完整,伺服器遇見了出乎意料的狀況 |
# 501 | Not Implemented | 請求不完整,伺服器不提供所需的功能 |
# 502 | Bad Gateway | 請求不完整,伺服器從上游伺服器接受了一個無效的回應 |
503 | Service Unavailable | 請求不完整,伺服器暫時重新啟動或關閉 |
# 504 | Gateway Timeout | 網關逾時 |
505 | HTTP Version Not Supported | # 伺服器不支援所指定的HTTP版本 |
設定HTTP狀態碼的方法
下表列出了HttpServletResponse 類別中用來設定狀態碼的方法:
##S.N. | 方法 & 描述 |
---|---|
public void setStatus ( int statusCode )
| |
public void sendRedirect(String url) |
此方法產生302回應,同時產生一個 |
public void sendError(int code, String message) |
此方法將一個狀態碼(通常為 404)和一個短訊息,自動插入HTML文件中並發回給客戶端 |
<html> <head> <title>Setting HTTP Status Code</title> </head> <body> <% // 设置错误代码,并说明原因 response.sendError(407, "Need authentication!!!" ); %> </body> </html>###造訪以上JSP頁面,將會得到以下結果:#########您也可以試試使用其他的狀態碼,看會不會得到什麼意想不到結果。 ######