WEB开发网
开发学院WEB开发Jsp Java实现Http服务器之二 阅读

Java实现Http服务器之二

 2008-01-05 08:55:47 来源:WEB开发网   
核心提示: 在上篇文章中我们介绍了Http协议的基本知识,以及java中两个重要的类Socket和SocketServer类,Java实现Http服务器之二,下面我们将主要介绍如何实现一个基于java的Http服务器, Http服务器主要由三个类构成:HttpServer、Request和Response,最后调用Respon
   在上篇文章中我们介绍了Http协议的基本知识,以及java中两个重要的类Socket和SocketServer类,下面我们将主要介绍如何实现一个基于java的Http服务器。

Http服务器主要由三个类构成:HttpServer、Request和Response。其中程序的入口在HttpServer类,它调用await()方法,使得Server开始等候客户端的连接。当客户端连接后,它将把静态的页面内容发送给客户端浏览器。下面分别介绍这三个类:
1:HttpServer类
   HttpServer需要有一个服务器的根目录这在WEB_ROOT变量中定义的:
public static final String WEB_ROOT =System.getPRoperty("user.dir") + File.separator  + "webroot";当我们运行服务器的时候可以通过-D选项指定环境变量user.dir的值。这个类中最重要的方法就是await()方法,内容如下:
public void await() {
   ServerSocket serverSocket = null;
   int port = 8080;
   try {
    serverSocket =  new ServerSocket(port, 1, InetAddress.getByName("127.0.0.1"));
   }
   catch (IOException e) {
    e.printStackTrace();
    System.exit(1);
   }

   // Loop waiting for a request
   while (!shutdown) {
    Socket socket = null;
    InputStream input = null;
    OutputStream output = null;
    try {
     socket = serverSocket.accept();
     input = socket.getInputStream();
     output = socket.getOutputStream();

   // create Request object and parse
     Request request = new Request(input);
     request.parse();

   // create Response object
     Response response = new Response(output);
     response.setRequest(request);
     response.sendStaticResource();

   // Close the socket
     socket.close();

   //check if the previous URI is a shutdown command
     shutdown = request.getUri().equals(SHUTDOWN_COMMAND);
    }
    catch (Exception e) {
     e.printStackTrace();
     continue;
    }
   }
  }
await()方法内构造一个ServerSocket的实例,等客户端连接进来的时候把socket.getInputStream()传递给Request类进行解析,把socket.getOutputStream()传递给Response类,然后再把request对象传递给Response,最后调用Response.sendStaticResource()方法发送数据给客户端。socket.close()后监测是不是接受到了关闭Server的命令,假如是的话跳出循环结束程序。


Tags:Java 实现 Http

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接