Http状态代码:
来自浏览器或其它程序的请求,由一个http命令(Get或Post),至少一个请求报头(Host必须),一个空行以及一些查询数据。典型的请求格式如下 :
GET /Servlet/LongServlet HTTP/1.1
Host:...
Header2:...
……
Header n....
(此行是空行)
其中Header2……Header n 是报头。而Web服务器对于请求的响应,一般由一个状态行、一些响应报头、一个空行和一些相应的文档构成。典型的响应格式如下:
HTTP/1.1 200 OK
Content-Type:text/html
Header2:...
……
Header n...
(仍然是一个空行)
<!DOCTYPE.......
<HTML>
<HEAD>......</HEAD>
<BODY>......</BODY>
<HTML>
状态行(格式中的HTTP/1.1 200 OK)是由一个状态代码以(例中200)及一段对应状态代码的的简短消息(例中OK)组成。一般情况下除了指定后面文档MIME类型Content-Type报头之外,其它报头都是可选的。
状态代码的设定:
设置任意的状态代码,需要使用HttpServletRequest的setStatus方法。如果响应的状态代码比较特殊,并且伴有相关的文档内容,那么一定要在用PrintWriter实际返回任何内容之前调用setStatus方法。
方法的使用:
setStatus方法以一个整数(状态代码,int类型)为参数,但一般使用HttpServletResponse中定义的常量。格式为:标准Http1.1协议中的消息名称全部大写添加SC前缀(Status Code),空格变成下划线,例:SC_NOT_FOUND(这个是404状态代码):response.setStatus(response.SC_NO_FOUND);
HTTP1.1中可用的特定状态代码:
- 100~199:信息性的,标示客户应该采取的其他动作
- 200~299:表示请求成功
- 300~399:用于已经移走的文件,常常包括Location报头,指出新的地址
- 400~499:表明由客户端引发的错误
- 500~599:表示由服务器引发的错误
至于每个代码所供求的确切含义就等使用到的查询手册,这里就不加说明了。
例:页面跳转
根据报头判断客户端浏览器类型,如果是Firefox则跳转到mozilla主页,其它则去微软主页:
最常用的三个状态代码:200(OK),302(FOUND),404(NOT FOUND)。