Servlet HTTP 狀態(tài)碼

HTTP 請求和 HTTP 響應(yīng)消息的格式是類似的,結(jié)構(gòu)如下:

  • 初始狀態(tài)行 + 回車換行符(回車+換行)

  • 零個或多個標題行+回車換行符

  • 一個空白行,即回車換行符

  • 一個可選的消息主體,比如文件、查詢數(shù)據(jù)或查詢輸出

例如,服務(wù)器的響應(yīng)頭如下所示:

HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
  (Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>

狀態(tài)行包括 HTTP 版本(在本示例中為 HTTP/1.1)、一個狀態(tài)碼(在本示例中為 200)和一個對應(yīng)于狀態(tài)碼的短消息(在本示例中為 OK)。

以下是可能從 Web 服務(wù)器返回的 HTTP 狀態(tài)碼和相關(guān)的信息列表:

代碼消息描述
100Continue只有請求的一部分已經(jīng)被服務(wù)器接收,但只要它沒有被拒絕,客戶端應(yīng)繼續(xù)該請求。
101Switching Protocols服務(wù)器切換協(xié)議。
200OK請求成功。
201Created該請求是完整的,并創(chuàng)建一個新的資源。
202Accepted該請求被接受處理,但是該處理是不完整的。
203Non-authoritative Information 
204No Content 
205Reset Content 
206Partial Content 
300Multiple Choices鏈接列表。用戶可以選擇一個鏈接,進入到該位置。最多五個地址。
301Moved Permanently所請求的頁面已經(jīng)轉(zhuǎn)移到一個新的 URL。
302Found所請求的頁面已經(jīng)臨時轉(zhuǎn)移到一個新的 URL。
303See Other所請求的頁面可以在另一個不同的 URL 下被找到。
304Not Modified 
305Use Proxy 
306Unused在以前的版本中使用該代碼?,F(xiàn)在已不再使用它,但代碼仍被保留。
307Temporary Redirect所請求的頁面已經(jīng)臨時轉(zhuǎn)移到一個新的 URL。
400Bad Request服務(wù)器不理解請求。
401Unauthorized所請求的頁面需要用戶名和密碼。
402Payment Required您還不能使用該代碼。
403Forbidden禁止訪問所請求的頁面。
404Not Found服務(wù)器無法找到所請求的頁面。.
405Method Not Allowed在請求中指定的方法是不允許的。
406Not Acceptable服務(wù)器只生成一個不被客戶端接受的響應(yīng)。
407Proxy Authentication Required在請求送達之前,您必須使用代理服務(wù)器的驗證。
408Request Timeout請求需要的時間比服務(wù)器能夠等待的時間長,超時。
409Conflict請求因為沖突無法完成。
410Gone所請求的頁面不再可用。
411Length Required"Content-Length" 未定義。服務(wù)器無法處理客戶端發(fā)送的不帶 Content-Length 的請求信息。
412Precondition Failed請求中給出的先決條件被服務(wù)器評估為 false。
413Request Entity Too Large服務(wù)器不接受該請求,因為請求實體過大。
414Request-url Too Long服務(wù)器不接受該請求,因為 URL 太長。當您轉(zhuǎn)換一個 "post" 請求為一個帶有長的查詢信息的 "get" 請求時發(fā)生。
415Unsupported Media Type服務(wù)器不接受該請求,因為媒體類型不被支持。
417Expectation Failed 
500Internal Server Error未完成的請求。服務(wù)器遇到了一個意外的情況。
501Not Implemented未完成的請求。服務(wù)器不支持所需的功能。
502Bad Gateway未完成的請求。服務(wù)器從上游服務(wù)器收到無效響應(yīng)。
503Service Unavailable未完成的請求。服務(wù)器暫時超載或死機。
504Gateway Timeout網(wǎng)關(guān)超時。
505HTTP Version Not Supported服務(wù)器不支持"HTTP協(xié)議"版本。

設(shè)置 HTTP 狀態(tài)代碼的方法

下面的方法可用于在 Servlet 程序中設(shè)置 HTTP 狀態(tài)碼。這些方法通過 HttpServletResponse 對象可用。

序號方法 & 描述
1public void setStatus ( int statusCode )
該方法設(shè)置一個任意的狀態(tài)碼。setStatus 方法接受一個 int(狀態(tài)碼)作為參數(shù)。如果您的響應(yīng)包含了一個特殊的狀態(tài)碼和文檔,請確保在使用 PrintWriter 實際返回任何內(nèi)容之前調(diào)用 setStatus。
2public void sendRedirect(String url)
該方法生成一個 302 響應(yīng),連同一個帶有新文檔 URL 的 Location 頭。
3public void sendError(int code, String message)
該方法發(fā)送一個狀態(tài)碼(通常為 404),連同一個在 HTML 文檔內(nèi)部自動格式化并發(fā)送到客戶端的短消息。

HTTP 狀態(tài)碼示例

下面的實例把 407 錯誤代碼發(fā)送到客戶端瀏覽器,瀏覽器會顯示 "Need authentication!!!" 消息。

// 導(dǎo)入必需的 java 庫
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import javax.servlet.annotation.WebServlet;
@WebServlet("/showError")
// 擴展 HttpServlet 類
public class showError extends HttpServlet {
 
  // 處理 GET 方法請求的方法
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 設(shè)置錯誤代碼和原因
      response.sendError(407, "Need authentication!!!" );
  }
  // 處理 POST 方法請求的方法
  public void doPost(HttpServletRequest request,
                     HttpServletResponse response)
      throws ServletException, IOException {
     doGet(request, response);
  }
}

現(xiàn)在,調(diào)用上面的 Servlet 將顯示以下結(jié)果:

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

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清