你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 跟高手学编程
用Java实现非阻塞的HTTP服务器(三)
 

1HTTP协议的版本、状态代码、描述

HTTP响应的第一行包括服务器使用的HTTP协议的版本、状态代码,以及对状态代码的描述,这三项内容之间以空格分割。在本例中,使用HTTP1.1协议,状态代码为200,该状态代码表示服务器已经成功地处理了客户端发出的请求:

HTTP/1.1 200 OK

状态代码是一个3位整数,以12345开头:

l  1xx:信息提示,表示临时的响应。

l  2xx:响应成功,表明服务器成功地接收了客户端请求。

l  3xx:重定向。

l  4xx:客户端错误,表明客户端可能有问题。

l  5xx:服务器错误,表明服务器由于遇到某种错误而不能响应客户请求。

以下是一些常见的状态代码:

l  200:响应成功。

l  400:错误的请求。客户发送的HTTP请求不正确。

l  404:文件不存在。在服务器上没有客户要求访问的文档。

l  405:服务器不支持客户的请求方式。

l  500:服务器内部错误。

2)响应头(Response Header

响应头也和请求头一样包含许多有用的信息,例如服务器类型、正文类型和正文长度等:

Server: nio/1.1    //服务器类型

Content-type: text/html; charset=GBK   //正文类型

Content-length: 102  //正文长度

3)响应正文(Response Content

响应正文就是服务器返回的具体文档,最常见的是HTML网页:

<html>

<head>

  <title>helloapp</title>

</head>

<body >

  <h1>hello</h1>

</body>

</html>

HTTP请求头与请求正文之间必须用空行分割,同样,HTTP响应头与响应正文之间也必须用空行分隔。

3.测试HTTP请求

当用户在浏览器中输入一个URL,浏览器就会生成一个HTTP请求,建立与远程HTTP服务器的连结,然后把HTTP请求发送给远程HTTP服务器,HTTP服务器再返回相应的网页,浏览器最后把这个网页显示出来。当浏览器与服务器之间的数据交换完毕,就会断开连结。如果用户希望访问新的网页,浏览器必须再次建立与服务器的连结。

例程1SimpleHttpServer)创建了一个非常简单的HTTP服务器,它接收客户程序的HTTP请求,把它打印到控制台。然后对HTTP请求做简单的解析,如果客户程序请求访问login.htm,就返回该网页,否则一律返回hello.htm网页。login.htmhello.htm文件位于classpath下的root目录下。

SimpleHttpServer监听80端口,按照阻塞模式工作,采用线程池来处理每个客户请求。

//例程1  SimpleHttpServer.java(阻塞模式)

//此处省略import语句

public class SimpleHttpServer {

  private int port=80;

  private ServerSocketChannel serverSocketChannel = null;

  private ExecutorService executorService;

  private static final int POOL_MULTIPLE = 4;

 

  public SimpleHttpServer() throws IOException {

    executorService= Executors.newFixedThreadPool(

  推荐精品文章

·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录
·2023年4月目录 
·2023年3月目录 
·2023年2月目录 
·2023年1月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089