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 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 “Content-Length”未定義,伺服器不接受請求。
412 Precondition Failed 請求中給出的前提條件由伺服器評估求值結果為false
413 Request Entity Too Large 伺服器將不接受請求,因為請求實體太大了。
414 Request-url Too Long 因為網址太長,伺服器將不接受該請求。 當將“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對象。

編號 方法 描述
1 public void setStatus ( int statusCode ) 此方法設置任意狀態代碼。 setStatus()方法將一個int(狀態代碼)作為參數。如果回應包含特殊的狀態代碼和文檔,請確保在實際返回PrintWriter的內容之前調用setStatus()方法。
2 public void sendRedirect(String url) 此方法將生成302回應以及給出新文檔的URL的位置標頭。
3 public void sendError(int code, String message) 該方法發送狀態碼(通常為404)以及自動格式化在HTML文檔內併發送給客戶端的短消息。

HTTP狀態代碼示例

以下示例顯示如何將407錯誤代碼發送到客戶端流覽器。之後,流覽器會顯示“需要驗證!!!”的 資訊。

打開Eclipse,創建一個動態Web專案:HttpStatusCode , 其目錄結構如下所示 -

檔:index.jsp 的代碼如下所示 -

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>發送HTTP狀態碼</title>
</head>
<body>
    <%
        // Set error code and reason.
        response.sendError(407, "Need authentication!!!");
    %>
</body>
</html>

部署上面專案,然後打開流覽器訪問URL: http://localhost:8080/HttpStatusCode/index.jsp , 可以看到以下結果 -


為了使用HTTP狀態代碼更友好,可嘗試設置不同的狀態代碼及其描述說明。


上一篇: JSP伺服器回應 下一篇: JSP表單處理