的HTTP請求的HTTP響應消息的格式是類似的,將有下麵的結構:
|
例如,服務器的響應頭如下所示:
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (Blank Line) <!doctype ...> <html> <head>...</head> <body> ... </body> </html>
狀態行包含HTTP版本(HTTP/1.1中的例子),一個狀態代碼(在本例中為200),並在很短消息對應的狀態代碼(OK中的例子)。
以下是可能從Web服務器返回的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 | 鏈接列表。用戶可以選擇一個鏈接,進入到該位置。最多五個地址. |
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 | 冇有被定義的“內容長度”。服務器將不接受該請求。 |
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協議”的版本。 |
在你的servlet程序,可以用來設置HTTP狀態代碼有以下幾種方法。這些方法是HttpServletResponse對象。
S.N. | 方法 & 描述 |
---|---|
1 |
public void setStatus ( int statusCode ) 這種方法設置的任意狀態代碼。 setStatus方法接受一個int作為一個參數(狀態碼)。如果你的反應包含了一個特殊的狀態代碼和文件,是一定要調用setStatus,及調用PrintWriter前返回任何內容。 |
2 |
public void sendRedirect(String url) 此方法生成一個302響應伴隨著一個Location頭給出新的文件的URL。 |
3 |
public void sendError(int code, String message) 此方法發送一個狀態碼(通常為404),連同一個簡短的消息內部自動格式化一個HTML文件,發送到客戶端。 |
下麵的例子將407錯誤代碼發送到客戶端瀏覽器和瀏覽器會告訴你,“需要身份驗證!!”消息。
// Import required java libraries import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; // Extend HttpServlet class public class showError extends HttpServlet { // Method to handle GET method request. public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set error code and reason. - by www.gitbook.net response.sendError(407, "Need authentication!!!" ); } // Method to handle POST method request. public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
現在,調用上麵的servlet將顯示以下結果:
HTTP Status 407 - Need authentication!!!type Status report message Need authentication!!! description The client must first authenticate itself with the proxy (Need authentication!!!). Apache Tomcat/5.5.29 |