Servlet 中使用的 HTTP 状态码是用于告诉客户端(如浏览器)请求的结果的。这些状态码是 HTTP 协议的一部分,并且被广泛应用于各种 Web 应用程序中,以指示请求的成功、失败或其他状态。Servlet API 并不直接定义这些状态码,但是它们通过 HttpServletResponse 接口中的方法来设置这些状态码。
以下是一些常见的 HTTP 状态码及其含义:
1xx 信息性状态码
1xx信息性状态码用于传递请求过程中的临时信息。例如,100 Continue表示服务器已接收到客户端请求的部分内容,并提示客户端继续发送剩余部分请求或若请求已完成则忽略此响应。
2xx 成功状态码
2xx状态码表示成功响应的不同情况:200 OK代表请求成功,适用于GET和POST请求;201 Created表示服务器已创建新文档,并在Location头中提供URI,主要用于POST请求;204 No Content表示服务器成功处理请求但无内容返回。
3xx 重定向状态码
3xx重定向状态码包括:301 Moved Permanently,表示请求页面已永久移至新位置,并自动将请求重定向;302 Found,表示请求资源暂时从不同URI响应请求,客户端应继续向原地址发送后续请求;304 Not Modified,若客户端发送了带条件GET请求,且资源未更改,服务器应返回此状态码。
4xx 客户端错误状态码
这是4xx客户端错误状态码的简要说明:
当服务器无法理解请求格式(400)、需身份验证(401)、拒绝请求(403)或根据请求找不到相应资源(404)时,会返回相应的错误状态码。这表明客户端需要修正请求或采取其他行动。
5xx 服务器错误状态码
5xx服务器错误状态码表示服务器端异常,无法正常处理客户端请求。具体包括:500 Internal Server Error,表示服务器内部错误;502 Bad Gateway,表示服务器作为代理收到无效响应;503 Service Unavailable,则表示服务器因维护或过载暂时无法处理请求,预计稍后会恢复正常。
在Servlet中,通过HttpServletResponse
的setStatus(int sc)
方法可设置HTTP状态码,以应对各种客户端请求情况。对于需要响应错误或包含错误信息的情况,建议使用更为精确的sendError(int sc)
方法来发送具体的错误状态码。