找回密码
 加入怎通
查看: 171|回复: 0

Servlet HTTP 状态码(servlet-mapping url-pattern)

[复制链接]
我来看看 发表于 2023-03-06 15:24:35 | 显示全部楼层 |阅读模式
( q. Q d9 h* B) S& ^, g- R( I

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

1 C- O% i- Q8 I% V* q& p% @

例如,服务器的响应头如下所示:HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ......HeaderN: ... p3 y( l2 ?) d0 K9 }6 G/ U% D (Blank Line)......

5 l& a: S. \7 t' x9 p3 }/ R

状态行包括 HTTP 版本(在本例中为 HTTP/1.1)、一个状态码(在本例中为 200)和一个对应于状态码的短消息(在本例中为 OK)。

9 A+ }+ }- ?0 o2 w

以下是可能从 Web 服务器返回的 HTTP 状态码和相关的信息列表:代码消息描述100Continue只有请求的一部分已经被服务器接收,但只要它没有被拒绝,客户端应继续该请求101Switching Protocols。

' ?! N# x1 f0 w' n2 g/ f2 _2 ~9 Y

服务器切换协议200OK请求成功201Created该请求是完整的,并创建一个新的资源202Accepted该请求被接受处理,但是该处理是不完整的203Non-authoritative Information。

* Z" m) y; ~1 _* U& M/ q1 |

204No Content205Reset Content206Partial Content300Multiple Choices链接列表用户可以选择一个链接,进入到该位置最多五个地址301Moved Permanently。

; s: A- B& V: q+ ~

所请求的页面已经转移到一个新的 URL302Found所请求的页面已经临时转移到一个新的 URL303See Other所请求的页面可以在另一个不同的 URL 下被找到304Not Modified305

" R1 i$ K1 T6 `# i; I# X& ~, W) @. N

Use Proxy306Unused在以前的版本中使用该代码现在已不再使用它,但代码仍被保留307Temporary Redirect所请求的页面已经临时转移到一个新的 URL400Bad Request。

- L5 A- T- R" | C

服务器不理解请求401Unauthorized所请求的页面需要用户名和密码402Payment Required您还不能使用该代码403Forbidden禁止访问所请求的页面404Not Found服务器无法找到所请求的页面。

! C/ {1 W) p0 ?: O" \

.405Method Not Allowed在请求中指定的方法是不允许的406Not Acceptable服务器只生成一个不被客户端接受的响应407Proxy Authentication Required。

6 S' h. R) x z2 f' B

在请求送达之前,您必须使用代理服务器的验证408Request Timeout请求需要的时间比服务器能够等待的时间长,超时409Conflict请求因为冲突无法完成410Gone所请求的页面不再可用411

' Y3 m( a+ V' p, G4 O# m4 r0 b

Length Required"Content-Length" 未定义服务器无法处理客户端发送的不带 Content-Length 的请求信息412Precondition Failed请求中给出的先决条件被服务器评估为 false。

% ~$ n) H: V* m4 M& ]/ b: K$ P2 X

413Request Entity Too Large服务器不接受该请求,因为请求实体过大414Request-url Too Long服务器不接受该请求,因为 URL 太长当您转换一个 "post" 请求为一个带有长的查询信息的 "get" 请求时发生。

) f: e' L* Y" B( U% V8 H9 f

415Unsupported Media Type服务器不接受该请求,因为媒体类型不被支持417Expectation Failed500Internal Server Error未完成的请求服务器遇到了一个意外的情况。

* _4 B- N4 h' ~/ q7 H2 ], _

501Not Implemented未完成的请求服务器不支持所需的功能502Bad Gateway未完成的请求服务器从上游服务器收到无效响应503Service Unavailable未完成的请求服务器暂时超载或死机。

f+ L2 j. P; `: K8 G) g9 S3 V

504Gateway Timeout网关超时505HTTP Version Not Supported服务器不支持"HTTP协议"版本设置 HTTP 状态代码的方法下面的方法可用于在 Servlet 程序中设置 HTTP 状态码。

( g, I$ n0 T& X, m; F

这些方法通过 HttpServletResponse 对象可用序号方法 & 描述1public void setStatus ( int statusCode )该方法设置一个任意的状态码setStatus 方法接受一个 int(状态码)作为参数。

( m# e1 e! i8 d

如果您的反应包含了一个特殊的状态码和文档,请确保在使用 PrintWriter 实际返回任何内容之前调用 setStatus2public void sendRedirect(String url)该方法生成一个 302 响应,连同一个带有新文档 URL 的 Location 头。

, c! F& v. R4 c- }: C

3public void sendError(int code, String message)该方法发送一个状态码(通常为 404),连同一个在 HTML 文档内部自动格式化并发送到客户端的短消息HTTP 状态码实例

$ j7 M8 p' f5 }/ ^/ q! F V' c$ ^

下面的例子把 407 错误代码发送到客户端浏览器,浏览器会显示 "Need authentication!!!" 消息// 导入必需的 java 库import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*;@WebServlet("/showError")// 扩展 HttpServlet 类public class showError extends HttpServlet { 8 _: h! p( }: R // 处理 GET 方法请求的方法 / {% ?' F8 U* V. h" b E0 Y8 u public void doGet(HttpServletRequest request, , N( S) |7 C0 N/ D HttpServletResponse response): ]4 P6 K& O' c0 n5 c: P0 R# G throws ServletException, IOException - E) U" E; n# z3 o {$ a2 [4 F: Z4 B, ~) L' S3 { // 设置错误代码和原因 ! R8 C7 [% M& c3 I7 X! y* y response.sendError(407, "Need authentication!!!" ); , c& t) e. O" i# X1 b9 i* o } 9 O0 o% h5 e' _5 q6 H // 处理 POST 方法请求的方法 ! u# Z- A5 I9 v5 Q- h0 x public void doPost(HttpServletRequest request,4 P, d$ u; Z( X0 l' E HttpServletResponse response) - p8 d' x/ t# V; _& @* V$ t4 U0 k n throws ServletException, IOException { ; t$ s: [5 D8 Y8 z; j4 v doGet(request, response); \, ]& |* S4 S4 }8 I }}。

+ c8 q- @ _" A0 N8 z

现在,调用上面的 Servlet 将显示以下结果:HTTP Status 407 - Need authentication!!!type Status reportmessage Need authentication!!!

& o+ ~/ b. M a7 [) R3 x

description The client must first authenticate itself with the proxy (Need authentication!!!).Apache Tomcat/5.5.29

- d$ k+ r9 h9 j" R) X \2 j3 ?* C7 H9 n+ O) c* m" N6 Z , g' g( J" h1 M( o$ P/ F4 J7 _ 1 `. ?9 B0 k6 L 8 u$ n5 _) I p5 B' g% L
回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 加入怎通

    本版积分规则

    QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

    GMT+8, 2026-7-9 02:11 , Processed in 0.035081 second(s), 25 queries , Gzip On.

    免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表