# JSPHTTP 狀態碼
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狀態碼和與之關聯的消息:
| **狀態碼** | **消息** | **描述** |
| --- | --- | --- |
| 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 | 一個超鏈接表,用戶可以選擇一個超鏈接并訪問,最大支持5個超鏈接 |
| 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 | 服務器拒絕接受請求,因為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狀態碼的方法
下表列出了HttpServletResponse 類中用來設置狀態碼的方法:
| **S.N.** | **方法****&****描述** |
| --- | --- |
| 1 | **public void setStatus ( int statusCode )**
此方法可以設置任意的狀態碼。如果您的響應包含一個特殊的狀態碼和一個文檔,請確保在用PrintWriter返回任何內容前調用setStatus方法 |
| 2 | **public void sendRedirect(String url)**
此方法產生302響應,同時產生一個?*Location*?頭告訴URL 一個新的文檔 |
| 3 | **public void sendError(int code, String message)**
此方法將一個狀態碼(通常為 404)和一個短消息,自動插入HTML文檔中并發回給客戶端 |
* * *
## HTTP狀態碼程序示例
接下來的例子將會發送407錯誤碼給瀏覽器,然后瀏覽器將會告訴您"Need authentication!!!"。
~~~
<html>
<head>
<title>Setting HTTP Status Code</title>
</head>
<body>
<%
// 設置錯誤代碼,并說明原因
response.sendError(407, "Need authentication!!!" );
%>
</body>
</html>
~~~
訪問以上JSP頁面,將會得到以下結果:
您也可以試試使用其他的狀態碼,看會不會得到什么意想不到結果。
- Java Web項目開發學習手冊
- 一、B/S開發環境搭建
- 1.1 tomcat服務器目錄結構及作用
- 1.2 在IDE開發工具上配置tomcat服務器
- 1.3 簡單web項目在tomcat服務器上運行的方法
- 1.4 開發工具設置
- 1.5 總結
- 二、Servlet技術應用
- 2.1 HttpServlet中的主要方法及應用
- 2.1.1 基于Eclipse完成一個JavaWeb項目
- 2.2 HttpRequest,HttpResponse的應用
- 2.2.1客戶端請求
- 2.2.2服務器響應
- 2.2.3Servlet HTTP 狀態碼
- 2.2.4圖片驗證碼類
- 2.2.5注冊模擬實現(帶驗證碼)
- 2.3 ServletConfig對象和ServletContext對象的概念
- 2.4 總結
- 三、JSP技術應用
- 3.1 JSP基本語法
- 3.2 JSP標簽和指令
- 3.3 JSP中的隱式對象
- 3.4 常用應用操作
- 3.4.1 JSP客戶端請求
- 3.4.2 JSP服務器響應
- 3.4.3 HTTP狀態碼
- 3.4.4 表單處理
- 3.4.5 過濾器
- 3.4.6 Cookie處理
- 3.4.7 Session處理
- 3.4.8 文件上傳
- 3.4.9 日期處理
- 3.4.10 頁面重定向
- 3.4.11 點擊量統計
- 3.4.12 自動刷新
- 3.4.13 發送郵件
- 3.5 JSP高級應用
- 3.5.1 JSP標準標簽庫(JSTL)
- 3.5.2 JSP連接數據庫
- 3.5.3 JSP XML數據處理
- 3.5.4 JSP JavaBean
- 3.5.5 自定義標簽
- 3.5.6 表達式語言
- 3.5.7 異常處理
- 3.5.8 調試
- 3.5.9 JSP國際化
- 3.6 實踐代碼
- 3.6.1 實踐代碼
- 3.6.2 項目實戰
- 3.7 總結
- 四、MVC思想的理解和搭建MVC
- 4.1 MVC設計模式的思想
- 4.2 MVC設計模式的實現步驟
- 4.3 項目實踐
- 4.4 總結
- 五、EL表達式和JSTL技術
- 5.1 EL表達式及其應用
- 5.2 常用的JSTL標簽的應用
- 5.3 項目實踐
- 5.4 總結
- 六、Cookie和Session
- 6.1 cookie對象的概念和應用
- 6.2 session對象的概念和應用
- 6.3 項目實踐
- 6.4 總結
- 七、過濾器技術應用
- 7.1 Filter的概念及應用
- 7.2 Filter、FilterChain、FilterConfig 介紹
- 7.3 用戶登錄過濾案例
- 7.4 項目實戰
- 7.5總結
- 八、異步請求技術
- 8.1 JSON數據格式
- 8.2 使用AJAX實現異步請求
- 8.3 用戶名校驗案例
- 8.4小結
- 綜合項目技術實訓
- 1.BS項目開發項目實戰
- 2.項目需求分析和系統設計
- 2.1需求分析
- 2.2類型模型設計
- 2.3原型設計
- 3.項目數據庫分析和系統設計
- 4.BS項目編程實現
- 4.1搭建框架和命名規約
- 4.2實現步驟
- 4.2.1創建實體類
- 4.2.2創建過濾器類
- 4.2.3創建工具類
- 4.2.4創建DAO接口及其實現類
- 4.2.5創建Service接口及其實現類
- 4.2.6創建測試類
- 4.2.7創建控制器類
- 5.企業開發流程規范
- 6.總結
- 九、練習題及答案
- 企業開發常用技術
- 1.Maven技術
- Java命名規范解讀
- 參考資料
- 開發中常用的應用服務器和Web服務器