當前位置:首頁 » Servlets » Servlet HTTP狀態代碼

Servlet HTTP狀態代碼

Servlets HTTP狀態代碼 - HTTP請求的HTTP響應消息的格式是類似的,將有下麵的結構。

的HTTP請求的HTTP響應消息的格式是類似的,將有下麵的結構:

  • An initial status line + CRLF ( Carriage Return + Line Feed ie. New Line )

  • Zero or more header lines + CRLF

  • A blank line ie. a CRLF

  • An optioanl message body like file, query data or query output.

例如,服務器的響應頭如下所示:

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協議”的版本。

設置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文件,發送到客戶端。

HTTP狀態代碼示例:

下麵的例子將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