JSP - HTTP 狀態碼



在本章中,我們將討論 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 版本(示例中為 HTTP/1.1)**、狀態碼(示例中為 200)和與狀態碼相對應的一條非常簡短的訊息 **(示例中為 OK)** 組成。

下表列出了 Web 伺服器可能返回的 HTTP 狀態碼和相關訊息:

程式碼 訊息 描述
100 繼續 伺服器僅接收了部分請求,但只要未被拒絕,客戶端就應繼續傳送請求
101 切換協議 伺服器切換協議。
200 確定 請求已成功。
201 已建立 請求已完成,並且建立了一個新的資源
202 已接受 請求已接受處理,但處理尚未完成。
203 非權威資訊
204 無內容
205 重置內容
206 部分內容
300 多種選擇 一個連結列表;使用者可以選擇一個連結並轉到該位置。最多五個地址。
301 永久移動 請求的頁面已移動到一個新的 URL。
302 找到 請求的頁面已臨時移動到一個新的 URL。
303 檢視其他 請求的頁面可以在不同的 URL 下找到。
304 未修改
305 使用代理
306 未使用 此程式碼在先前版本中使用過。它不再使用,但程式碼已保留。
307 臨時重定向 請求的頁面已臨時移動到一個新的 URL。
400 錯誤請求 伺服器不理解請求。
401 未授權 請求的頁面需要使用者名稱和密碼。
402 需要付款 您尚無法使用此程式碼。
403 禁止 禁止訪問請求的頁面
404 未找到 伺服器找不到請求的頁面。
405 方法不允許 請求中指定的方法不允許。
406 不可接受 伺服器只能生成客戶端不接受的響應。
407 需要代理身份驗證 在提供此請求之前,您必須使用代理伺服器進行身份驗證。
408 請求超時 請求花費的時間超過了伺服器準備等待的時間。
409 衝突 由於衝突,無法完成請求。
410 已消失 請求的頁面不再可用。
411 需要長度 未定義“Content-Length”。伺服器在沒有它的情況下將不接受請求。
412 前提條件失敗 伺服器評估請求中給定的前提條件為假。
413 請求實體過大 伺服器將不接受請求,因為請求實體過大。
414 請求 URL 過長 伺服器將不接受請求,因為 URL 過長。當您將“post”請求轉換為具有長查詢資訊的“get”請求時,就會發生這種情況。
415 不支援的媒體型別 伺服器將不接受請求,因為不支援媒體型別。
417 期望失敗
500 內部伺服器錯誤 請求未完成。伺服器遇到意外情況。
501 未實現 請求未完成。伺服器不支援所需的功能。
502 錯誤閘道器 請求未完成。伺服器從上游伺服器收到了無效的響應。
503 服務不可用 請求未完成。伺服器暫時過載或宕機。
504 閘道器超時 閘道器已超時。
505 不支援的 HTTP 版本 伺服器不支援 **“http 協議”** 版本。

設定 HTTP 狀態碼的方法

以下方法可用於在 servlet 程式中設定 HTTP 狀態碼。這些方法可用於 HttpServletResponse 物件。

序號 方法和描述
1

public void setStatus ( int statusCode )

此方法設定任意狀態碼。setStatus 方法將 int(狀態碼)作為引數。如果您的響應包含特殊狀態碼和文件,請確保在使用 PrintWriter 返回任何內容之前實際呼叫 setStatus

2

public void sendRedirect(String url)

此方法生成 302 響應以及提供新文件 URL 的 Location 報頭。

3

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>

您將收到以下輸出:

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

要更熟悉 HTTP 狀態碼,請嘗試設定不同的狀態碼及其描述。

廣告

© . All rights reserved.