`

服务器响应的生成:HTTP状态代码

    博客分类:
  • Java
阅读更多

前面已经看到,来自浏览器的请求,由一个HTTP命令(GET或POST),0或多个请求报头,一个空行以及一些查询数据(POST请求)组成:

GET /servlet/SomeName HTTP/1.1
Host: ...
Header2: ...
...
HeaderN:
(Blank Line空行)

......(查询数据)

web服务器对请求的响应,一般由一个状态行 ,一些响应报头,一个空行和相应的文档构成,典型的响应形式如下:

HTTP/1.1 200 OK       (状态行
Content-Type: text/html
Header2: ...
...
HeaderN: ...
(Blank Line  空行 )
<!DOCTYPE ...>//输出内容
<HTML>
<HEAD>...</HEAD>
<BODY>
...
</BODY></HTML>

状态行由HTTP版本,一个状态代码 (整数)以及一段对应的简短消息组成

通过操作状态行和响应报头,servlet可以执行多种任务,例如,它们可以将用户转送到其他网站;标明附加的文档的类型;告知用户访问该文档需要密码;等等



6.1  状态代码的指定


1)设置任意状态代码setStatus

使用HttpServletResponse的setStatus方法。setStatus方法以整数为参数,为了可读性,一般使用HttpServletResponse中定义的常量。这些常量全部以SC为前缀,常量的名字对应于标准的http消息。


2)设置302和404的状态代码sendRedirect和sendError

HttpServletResponse专用两种常见的状态代码提供了快捷方法,

public void sendRedirect(String url)

状态代码302命令浏览器连接到新的位置,此方法生成302响应

public void sendError(int code, String message)

状态代码404用于服务器没有找到文档的情况此方法发送状态代码int code(一般为404)以及一小段消息String message




6.2 HTTP1.1 状态代码


了解和熟悉一些最重要的状态代码。

100–199
信息性的,标示客户应才去的其他动作
200–299
标示请求成功
300–399
用于那些已移走的文件,指出新的地址
400–499
表明由客户引发的错误
500–599
表明由服务器引发的错误


HttpServletResponse中一般用常量来代表状态码,常量名可以看出状态的涵义,例如使用response.setStatus(response.SC_NO_CONTENT)而不是response.setStatus(204)。


一些常见的状态代码的含义,略,




6.3  示例:将用户重定向到相关的页面


下列清单读取报头User-Agent的内容,根据不同的浏览器类型,将用户转到不同的页面。

package coreservlets; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class WrongDestination extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userAgent = request.getHeader("User-Agent"); if ((userAgent != null) && (userAgent.indexOf("MSIE") != -1)) {//IE用户的User-Agent报头的特征 response.sendRedirect("http://home.netscape.com");//重定向 } else { //其他浏览器用户转到另一个页面 response.sendRedirect("http://www.microsoft.com"); } } }




6.4  示例:各种搜索引擎的一个前端(302和404状态代码一起使用的例子)  略

这一章主要要理解服务器对请求的响应,响应的格式,状态代码及其含义,怎么使用,,,这些问题

分享到:
评论

相关推荐

    HTTP 服务器源代码

    1. 请求解析:HTTP服务器首先接收到客户端的请求,然后解析请求头和请求体,获取诸如方法(GET、POST等)、URL、HTTP版本、头部信息等关键数据。 2. 路由处理:解析后的请求会被路由到相应的处理函数,根据URL来决定...

    HTTP服务器源代码

    - `HTTPSVR.CPP`:HTTP服务器的主要实现,包括请求解析、路由处理和响应生成等功能。 - `MAINFRM.CPP`:主框架文件,通常包含服务器应用程序的启动、初始化和关闭逻辑。 - `NAMEPAGE.CPP`:命名页面处理,可能与...

    Servlet与 JSP 指南,PPT教学课件part2(共3个)

    1、servlet与JSP技术概述 2、servlet基础 3、客户请求的处理:表单数据 4、客户请求的处理:HTTP请求报头 5、服务器响应的生成:HTTP状态代码 6、服务器响应的生成: HTTP响应报头 7、cookie...

    Servlet与 JSP 指南,PPT教学课件part3(共3个)

    1、servlet与JSP技术概述 2、servlet基础 3、客户请求的处理:表单数据 4、客户请求的处理:HTTP请求报头 5、服务器响应的生成:HTTP状态代码 6、服务器响应的生成: HTTP响应报头 7、cookie...

    Servlet与 JSP 指南,PPT教学课件part1(共3个)

    1、servlet与JSP技术概述 2、servlet基础 3、客户请求的处理:表单数据 4、客户请求的处理:HTTP请求报头 5、服务器响应的生成:HTTP状态代码 6、服务器响应的生成: HTTP响应报头 7、cookie...

    httpbdm包代码生成器3.rar

    5. **状态码**:HTTP响应中的三位数字,表示请求的结果,如200表示成功,404表示未找到资源,500表示服务器内部错误。 代码生成器通常会提供以下功能: 1. **自动构造请求**:根据提供的URL和参数,自动生成HTTP...

    HTTP服务器实现代码

    3. **HTTP响应生成器**:根据请求内容和服务器逻辑生成合适的HTTP响应,包括状态码、头部和内容。 4. **路由处理**:根据请求的URL执行不同的操作,比如加载静态文件或执行动态脚本。 5. **错误处理**:处理网络异常...

    HTTP.rar_http服务器代码

    可能包括了服务器初始化、套接字的创建与监听、循环接收和处理请求、解析HTTP请求报文、生成并发送HTTP响应报文等代码片段。通过对这份代码的学习,你可以深入理解HTTP协议的运作机制,以及如何在实际项目中用C++...

    http服务器C代码

    在这个“http服务器C代码”中,我们将会探讨如何使用C语言实现一个简单的HTTP服务器,它能处理静态文件服务以及动态内容生成。 在深入理解这个C代码之前,先了解一些基础概念: 1. **HTTP协议**:超文本传输协议...

    VB做的HTTP简单服务器源码

    4. **响应生成**:根据请求,服务器可能需要生成适当的HTTP响应,包括状态码、响应头和响应体(如HTML页面或文件内容)。 5. **文件I/O**:如果服务器要提供静态文件服务,如HTML、CSS或JavaScript,需要熟悉VB中的...

    HTTP服务器源代码_http服务器_HTTP_编程_http服务器.zip

    5. **响应构建**:处理器生成响应内容后,服务器需要构建一个HTTP响应,包括状态码、响应头部和实体主体。状态码表示请求的处理结果,如200表示成功,404表示未找到资源。 6. **性能优化**:高性能的HTTP服务器通常...

    web服务器的构建(源代码)

    4. **响应生成**:服务器根据请求找到相应的资源后,会生成一个HTTP响应,包括状态码(如200 OK,404 Not Found等)、响应头和响应体。响应体可能是静态文件的内容,也可能是服务器动态生成的内容。 5. **数据传输*...

    HTTP服务器原代码

    6. **响应生成**:处理完请求后,服务器需要构造HTTP响应,包括状态码(如200表示成功,404表示未找到资源,500表示服务器内部错误等)、响应头部和响应主体。响应主体可以是HTML、JSON、图像或其他任何可以通过HTTP...

    web 服务器C++代码

    4. **生成响应**:服务器根据处理结果构造HTTP响应,包括状态码、响应头和响应体。 5. **发送响应**:服务器将响应通过网络发送回客户端。 6. **关闭连接**:完成通信后,服务器关闭TCP连接,释放资源。 在C++实现...

    Qt http server client 服务器客户端源代码

    5. **响应生成**:服务器会根据处理结果生成HTTP响应,包括状态码、头部和响应正文。 接下来,我们转向Qt中的HTTP客户端(qhttpclient)。QHttpClient是Qt网络模块的一部分,用于发起HTTP请求并与服务器进行通信。...

    HttpServer服务器代码示例

    当我们说"HttpServer服务器代码示例"时,通常是指开发者用编程语言(如Java、Python、Node.js等)实现的一个小型服务器程序,用于演示如何处理HTTP请求和响应。这个"CSHTTPServer_src"可能是一个包含源代码的文件,...

    servlet作为服务器响应请求.zip

    在本示例中,"servlet作为服务器响应请求.zip"包含了一个实现登录注册界面的Servlet应用,这将帮助我们深入理解Servlet的工作原理及其在实际应用中的运用。 1. **Servlet基础** Servlet是Java编程语言中的一组接口...

    HTTP服务器的所有源程序

    1. **HTTP请求与响应**:HTTP服务器主要处理客户端的HTTP请求,并返回相应的HTTP响应。请求通常包括方法(GET, POST等)、URL、HTTP版本、头部和可能的实体主体。响应则包括状态码、响应头和实体主体。 2. **服务器...

Global site tag (gtag.js) - Google Analytics