標籤:direct 應該 modified http cep tle 結構 for ext
以下內容引用自http://wiki.jikexueyuan.com/project/jsp/http-status-codes.html:
HTTP請求格式和HTTP響應訊息的格式一樣,都有以下結構:
- 一個初始狀態行+CRLF(斷行符號+換行,即新行)
- 零個或多個標題列+CRLF
- 一個空行,即一個CRLF
- 一個可選的訊息體,像檔案,查詢資料或查詢輸出
例如,一個伺服器響應標題看起來如下所示:
HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ......HeaderN: ... (Blank Line)<!doctype ...><html><head>...</head><body>...</body></html>
狀態行包含HTTP版本(例子中的HTTP/1.1),狀態代碼(例子中的200)和對應狀態碼的短訊息(例子中的OK)。
下面是HTTP狀態碼和相關可能從Web伺服器返回的訊息的一個列表:
| 編碼: |
訊息: |
描述: |
| 100 |
Continue |
只有一部分的伺服器請求已經收到,但只要沒有被拒絕,用戶端應該繼續請求 |
| 101 |
Switching Protocols |
伺服器交換了協議。 |
| 200 |
OK |
請求是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 |
在這個請求得到服務之前,必須驗證一個Proxy 伺服器。 |
| 408 |
Request Timeout |
請求花費的時間比伺服器準備等待的時間長。 |
| 409 |
Conflict |
由於衝突請求不能實現。 |
| 410 |
Gone |
請求頁面不再可用。 |
| 411 |
Length Required |
"內容-長度" 沒有被定義。沒有它伺服器不會接受請求。 |
| 412 |
Precondition Failed |
伺服器給出給定的請求評估的前提為假。 |
| 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 |
伺服器不支援“HHTP協議”版本。 |
設定HTTP狀態代碼的方法:
有以下方法可以用來設定 servlet 程式的 HTTP 狀態代碼。有了 HttpServletResponse 對象,這些方法都是可用的。
| 方法 |
描述 |
| public void setStatus ( int statusCode ) |
此方法設定一個任意的狀態代碼。setStatus方法接受一個 int(狀態代碼)作為參數。如果響應包含一個特殊的狀態代碼和文檔,在實際中用PrintWriter返回任何內容之前一定要調用setStatus。 |
| public void sendRedirect(String url) |
該方法產生一個302響應以及一個位置標題給出新文檔的URL。 |
| public void sendError(int code, String message) |
這種方法發送一個狀態代碼(通常是404)以及一個在HTML文檔內自動格式化的短訊息並發送到用戶端。 |
HTTP 狀態代碼執行個體:
下面的例子將發送407錯誤碼到用戶端瀏覽器,瀏覽器將顯示“需要驗證! ! !”的訊息。
<html><head><title>Setting HTTP Status Code</title></head><body><% // Set error code and reason. response.sendError(407, "Need authentication!!!" );%></body></html>
現在調用上述代碼,JSP將顯示如下所示的結果:
測試工程:https://github.com/easonjim/5_java_example/tree/master/jspbasics/test6
JSP中HTTP狀態代碼