以下内容引用自http://wiki.jikexueyuan.com/project/servlet/http-status-codes.html

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/1.1)、一个状态码(例子中的200)和一个对应于状态码的短消息(例子中的OK)。

以下HTTP状态码以及可能从Web服务器返回的相关的消息的列表:

代码: 消息: 描述:
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 链接列表。用户可以选择一个链接,进入到该位置。最多五个地址
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"未定义。服务器无法处理客户端发送的不带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状态码的方法:

下面是在Servlet程序中可以用于设置HTTP状态码的方法。通过HttpServletResponse对象这些方法是可用的。

方法 描述

public void setStatus(int statusCode)

该方法设置一个任意的状态码。setStatus方法接受一个int(状态码)作为参数。如果您的反应包含了一个特殊的状态码和文档,请确保在使用PrintWriter实际返回任何内容之前调用setStatus。

public void sendRedirect(String url)

该方法生成一个302响应,连同一个带有新文档URL的Location头。

public void sendError(int code, String message)

该方法发送一个状态码(通常为404),连同一个在HTML文档内部自动格式化并发送到客户端的短消息。

二、HTTP状态码实例:

下述例子将发送407错误代码到客户端浏览器,且浏览器会显示“需要身份验证!!!”的消息。

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
// Extend HttpServlet class
public class ShowError extends HttpServlet {
// Method to handle GET method request.
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
// Set error code and reason.
response.sendError(407, "Need authentication!!!" );
}
// Method to handle POST method request.
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}

配置web.xml:

    <servlet>
<servlet-name>ShowError</servlet-name>
<servlet-class>com.jsoft.testservletbasics.ShowError</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ShowError</servlet-name>
<url-pattern>/ShowError</url-pattern>
</servlet-mapping>

现在调用上述 servlet 会显示如下所示结果:

测试工程:https://github.com/easonjim/5_java_example/tree/master/servletbasics/test5

Servlet的HTTP状态码的更多相关文章

  1. Servlet之HTTP状态码

    HTTP 请求和 HTTP 响应消息的格式是类似的,结构如下: 初始状态行 + 回车换行符(回车+换行) 零个或多个标题行+回车换行符 一个空白行,即回车换行符 一个可选的消息主体,比如文件.查询数据 ...

  2. Servlet笔记5--设置欢迎页面及HTTP状态码404、500

    欢迎页面: 代码详解: web.xml配置文件: <?xml version="1.0" encoding="UTF-8"?> <web-ap ...

  3. Servlet HTTP 状态码

    HTTP 请求和 HTTP 响应消息的格式是类似的,结构如下: 初始状态行 + 回车换行符(回车+换行) 零个或多个标题行+回车换行符 一个空白行,即回车换行符 一个可选的消息主体,比如文件.查询数据 ...

  4. Servlet HTTP 状态码 以及 获得浏览器URL

    Servlet HTTP 状态码 HTTP 请求和 HTTP 响应消息的格式是类似的,结构如下: 初始状态行 + 回车换行符(回车+换行) 零个或多个标题行+回车换行符 一个空白行,即回车换行符 一个 ...

  5. http status 状态码汇总

    常见HTTP状态码 200 OK 301 Moved Permanently 302 Found 304 Not Modified 307 Temporary Redirect 400 Bad Req ...

  6. HTTP状态码对应

    HTTP的状态码 对于状态码大家如果经常在线买东西就能知道,我们买了东西就会有个订单状态:出库.发货中.送达中.送达等,其实这些状态就是状态码,只不过这些状态码都是文字.HTTP 响应的时候也有状态码 ...

  7. HTTP状态码大全

    完整的 HTTP 1.1规范说明书来自于RFC 2616,你可以在http://www.talentdigger.cn/home/link.php?url=d3d3LnJmYy1lZGl0b3Iub3 ...

  8. 常见HTTP状态码

    常见HTTP状态码 200 OK 301 Moved Permanently 302 Found 304 Not Modified 307 Temporary Redirect 400 Bad Req ...

  9. HTTP响应状态码记录

    HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展.目前在WWW中使用的是HTTP/1.0 ...

随机推荐

  1. Android Studio 导入新工程项目

    1 导入之前先修改工程下相关文件 1.1 只需修改如下三个地方1.2 修改build.gradle文件 1.3 修改gradle/wrapper/gradle-wrapper.properties 1 ...

  2. SQLite busy handler

    SQLite doesn't support high concurrency. In case of a lot of concurrent access from multi-process or ...

  3. zabbix_sender

    转载一个python写的zabbix sender脚本 #!/usr/bin/env python # -*- coding: utf-8 -*- import socket import struc ...

  4. ALTER DATABASE 修改一个数据库

    SYNOPSIS ALTER DATABASE name SET parameter { TO | = } { value | DEFAULT } ALTER DATABASE name RESET ...

  5. xamarin.forms 绑定页面里指定元素的某个属性值

    {Binding Source={x:Reference elementName}, Path=BindingContext.propertyname, Mode=OneWay} elementNam ...

  6. 文件描述符 文件操作 <> open 文件句柄

    #! /usr/bin/perl use strict;use warnings; =head1print "\n---------------------------------test_ ...

  7. Stack in c#

    public static void SaveStack() { string result = "Hello World"; Stack st = new Stack(); fo ...

  8. zay大爷的神仙题目 D1T3-膜你抄

    依旧是外链 锦鲤抄 [题目背景] 你在尘世中辗转了千百年 却只让我看你最后一眼 火光描摹容颜燃尽了时间 别留我一人,孑然一身 凋零在梦境里面. ——银临&云の泣<锦鲤抄> [问题描 ...

  9. android中ListView的定位:使用setSelectionFromTop

    如果一个ListView太长,有时我们希望ListView在从其他界面返回的时候能够恢复上次查看的位置,这就涉及到ListView的定位问题: 解决的办法如下: 1 2 3 4 5 6 7 // 保存 ...

  10. 时间戳显示为多少分钟前,多少天前的JS处理

    /* ** 时间戳显示为多少分钟前,多少天前的处理 ** eg. ** console.log(dateDiff(1411111111111)); // 2014年09月19日 ** console. ...