JSP HTTP 狀態(tài)碼
jsp http 狀態(tài)碼
http請(qǐng)求與http響應(yīng)的格式相近,都有著如下結(jié)構(gòu):
- 以狀態(tài)行+crlf(回車換行)開(kāi)始
- 零行或多行頭模塊+crlf
- 一個(gè)空行,比如crlf
- 可選的消息體比如文件,查詢數(shù)據(jù),查詢輸出
舉例來(lái)說(shuō),一個(gè)服務(wù)器響應(yīng)頭看起來(lái)就像下面這樣:
http/1.1 200 ok content-type: text/html header2: ... ... headern: ... (blank line) <!doctype ...> <html> <head>...</head> <body> ... </body> </html>狀態(tài)行包含http版本,一個(gè)狀態(tài)碼,和狀態(tài)碼相對(duì)應(yīng)的短消息。
下表列出了可能會(huì)從服務(wù)器返回的http狀態(tài)碼和與之關(guān)聯(lián)的消息:
狀態(tài)碼 | 消息 | 描述 |
---|---|---|
100 | continue | 只有一部分請(qǐng)求被服務(wù)器接收,但只要沒(méi)被服務(wù)器拒絕,客戶端就會(huì)延續(xù)這個(gè)請(qǐng)求 |
101 | switching protocols | 服務(wù)器交換機(jī)協(xié)議 |
200 | ok | 請(qǐng)求被確認(rèn) |
201 | created | 請(qǐng)求時(shí)完整的,新的資源被創(chuàng)建 |
202 | accepted | 請(qǐng)求被接受,但未處理完 |
203 | non-authoritative information | |
204 | no content | |
205 | reset content | |
206 | partial content | |
300 | multiple choices | 一個(gè)超鏈接表,用戶可以選擇一個(gè)超鏈接并訪問(wèn),最大支持5個(gè)超鏈接 |
301 | moved permanently | 被請(qǐng)求的頁(yè)面已經(jīng)移動(dòng)到了新的url下 |
302 | found | 被請(qǐng)求的頁(yè)面暫時(shí)性地移動(dòng)到了新的url下 |
303 | see other | 被請(qǐng)求的頁(yè)面可以在一個(gè)不同的url下找到 |
304 | not modified | |
305 | use proxy | |
306 | unused | 已經(jīng)不再使用此狀態(tài)碼,但狀態(tài)碼被保留 |
307 | temporary redirect | 被請(qǐng)求的頁(yè)面暫時(shí)性地移動(dòng)到了新的url下 |
400 | bad request | 服務(wù)器無(wú)法識(shí)別請(qǐng)求 |
401 | unauthorized | 被請(qǐng)求的頁(yè)面需要用戶名和密碼 |
402 | payment required | 目前還不能使用此狀態(tài)碼 |
403 | forbidden | 禁止訪問(wèn)所請(qǐng)求的頁(yè)面 |
404 | not found | 服務(wù)器無(wú)法找到所請(qǐng)求的頁(yè)面 |
405 | method not allowed | 請(qǐng)求中所指定的方法不被允許 |
406 | not acceptable | 服務(wù)器只能創(chuàng)建一個(gè)客戶端無(wú)法接受的響應(yīng) |
407 | proxy authentication required | 在請(qǐng)求被服務(wù)前必須認(rèn)證一個(gè)代理服務(wù)器 |
408 | request timeout | 請(qǐng)求時(shí)間超過(guò)了服務(wù)器所能等待的時(shí)間,連接被斷開(kāi) |
409 | conflict | 請(qǐng)求有矛盾的地方 |
410 | gone | 被請(qǐng)求的頁(yè)面不再可用 |
411 | length required | "content-length"沒(méi)有被定義,服務(wù)器拒絕接受請(qǐng)求 |
412 | precondition failed | 請(qǐng)求的前提條件被服務(wù)器評(píng)估為false |
413 | request entity too large | 因?yàn)檎?qǐng)求的實(shí)體太大,服務(wù)器拒絕接受請(qǐng)求 |
414 | request-url too long | 服務(wù)器拒絕接受請(qǐng)求,因?yàn)閡rl太長(zhǎng)。多出現(xiàn)在把"post"請(qǐng)求轉(zhuǎn)換為"get"請(qǐng)求時(shí)所附帶的大量查詢信息 |
415 | unsupported media type | 服務(wù)器拒絕接受請(qǐng)求,因?yàn)槊襟w類型不被支持 |
417 | expectation failed | |
500 | internal server error | 請(qǐng)求不完整,服務(wù)器遇見(jiàn)了出乎意料的狀況 |
501 | not implemented | 請(qǐng)求不完整,服務(wù)器不提供所需要的功能 |
502 | bad gateway | 請(qǐng)求不完整,服務(wù)器從上游服務(wù)器接受了一個(gè)無(wú)效的響應(yīng) |
503 | service unavailable | 請(qǐng)求不完整,服務(wù)器暫時(shí)重啟或關(guān)閉 |
504 | gateway timeout | 網(wǎng)關(guān)超時(shí) |
505 | http version not supported | 服務(wù)器不支持所指定的http版本 |
設(shè)置http狀態(tài)碼的方法
下表列出了httpservletresponse 類中用來(lái)設(shè)置狀態(tài)碼的方法:
s.n. | 方法 & 描述 |
---|---|
1 | public void setstatus ( int statuscode ) 此方法可以設(shè)置任意的狀態(tài)碼。如果您的響應(yīng)包含一個(gè)特殊的狀態(tài)碼和一個(gè)文檔,請(qǐng)確保在用printwriter返回任何內(nèi)容前調(diào)用setstatus方法 |
2 | public void sendredirect(string url) 此方法產(chǎn)生302響應(yīng),同時(shí)產(chǎn)生一個(gè) location 頭告訴url 一個(gè)新的文檔 |
3 | public void senderror(int code, string message) 此方法將一個(gè)狀態(tài)碼(通常為 404)和一個(gè)短消息,自動(dòng)插入html文檔中并發(fā)回給客戶端 |
http狀態(tài)碼程序示例
接下來(lái)的例子將會(huì)發(fā)送407錯(cuò)誤碼給瀏覽器,然后瀏覽器將會(huì)告訴您"need authentication!!!"。
<html> <head> <title>setting http status code</title> </head> <body> <% // 設(shè)置錯(cuò)誤代碼,并說(shuō)明原因 response.senderror(407, "need authentication!!!" ); %> </body> </html>
訪問(wèn)以上jsp頁(yè)面,將會(huì)得到以下結(jié)果:

您也可以試試使用其他的狀態(tài)碼,看會(huì)不會(huì)得到什么意想不到結(jié)果。