学科分类
目录
Java Web

发送状态码相关的方法

当Servlet向客户端回送响应消息时,需要在响应消息中设置状态码。为此,在HttpServletResponse接口中,定义了两个发送状态码的方法,具体如下:

setStatus(int status)方法

该方法用于设置HTTP响应消息的状态码,并生成响应状态行。由于响应状态行中的状态描述信息直接与状态码相关,而HTTP版本由服务器确定,因此,只要通过setStatus(int status)方法设置了状态码,即可实现状态行的发送。需要注意的是,正常情况下,Web服务器会默认产生一个状态码为200的状态行。

sendError(int sc)方法

该方法用于发送表示错误信息的状态码,例如,404状态码表示找不到客户端请求的资源。在response对象中,提供了两个重载的sendError(int sc)方法,具体如下:

public void sendError(int code) throws java.io.IOException
public void sendError(int code, String message) throws java.io.IOException

在上面重载的两个方法中,第一个方法只是发送错误信息的状态码,而第二个方法除了发送状态码外,还可以增加一条用于提示说明的文本信息,该文本信息将出现在发送给客户端的正文内容中。

由于响应状态码是一个三位的十进制数,非常难以记忆,为此,在HttpServletResponse接口中,定义了一系列响应状态码常量,如表1所示。

表1 常用的响应状态码常量

方法声明 功能描述
static int SC_OK 该常量代表状态码200,表示请求成功
static int [SC_FORBIDDEN](mk:@MSITStore:C:\Documents and Settings\Administrator\桌面\javaweb课件\Servlet-API.chm::/javax/servlet/http/HttpServletResponse.html#SC_FORBIDDEN) 该常量代表状态码403,表示服务器接收到请求,但拒绝对请求进行处理
static int SC_NOT_FOUND 该常量代表码状态码404,在HTTP1.1规范中的标准状态信息为Not Found,也就是没有找到资源,是最常见的一种状态码
static int [SC_CONFLICT](mk:@MSITStore:C:\Documents and Settings\Administrator\桌面\javaweb课件\Servlet-API.chm::/javax/servlet/http/HttpServletResponse.html#SC_CONFLICT) 该常量代表状态码409,表示请求的资源与当前状态冲突
static int SC_MOVED_TEMPORARILY 该常量代表状态码302,表示临时使用其它资源处理当前请求,但是,之后的请求还应该使用原来的地址。(Servlet API 2.4规范中, SC_FOUND常量用来对应状态码302)
static int SC_INTERNAL_SERVER_ERROR 该常量代码状态码500,表示服务器内部发生了错误
static int SC_HTTP_VERSION_NOT_SUPPORTED 该常量代码状态码505,表示服务器不支持或拒绝支持请求行中给出的HTTP版本
static int SC_BAD_REQUEST 该常量代表状态码400,表示客户端发送的请求语法有误

在表1列举的一系列状态码常量中,其中SC_OK和SC_NOT_FOUND是Web应用中最常遇见的,因此,建议大家深刻记忆这两个状态码常量。

点击此处
隐藏目录