的HTTP请求的HTTP响应消息的格式是类似的,将有下面的结构:
|
例如,服务器的响应头如下所示:
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中的例子)。
以下是可能从Web服务器返回的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 | 链接列表。用户可以选择一个链接,进入到该位置。最多五个地址. |
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 | 没有被定义的“内容长度”。服务器将不接受该请求。 |
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协议”的版本。 |
在你的servlet程序,可以用来设置HTTP状态代码有以下几种方法。这些方法是HttpServletResponse对象。
S.N. | 方法 & 描述 |
---|---|
1 |
public void setStatus ( int statusCode ) 这种方法设置的任意状态代码。 setStatus方法接受一个int作为一个参数(状态码)。如果你的反应包含了一个特殊的状态代码和文件,是一定要调用setStatus,及调用PrintWriter前返回任何内容。 |
2 |
public void sendRedirect(String url) 此方法生成一个302响应伴随着一个Location头给出新的文件的URL。 |
3 |
public void sendError(int code, String message) 此方法发送一个状态码(通常为404),连同一个简短的消息内部自动格式化一个HTML文件,发送到客户端。 |
下面的例子将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. - by www.gitbook.net response.sendError(407, "Need authentication!!!" ); } // Method to handle POST method request. public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
现在,调用上面的servlet将显示以下结果:
HTTP Status 407 - Need authentication!!!type Status report message Need authentication!!! description The client must first authenticate itself with the proxy (Need authentication!!!). Apache Tomcat/5.5.29 |