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状态码和与之关联的消息:
状态码 | 消息 | 描述 |
---|---|---|
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页面,将会得到以下结果:
您也可以试试使用其他的状态码,看会不会得到什么意想不到结果。