可能是世界上最简单的web server的java实现 (源码)
J2EE 写了好些年,各种web容器都多多少少用过,却从未想过基本的web server是如何实现的。网上的文章多重于实用,官方文档又过于繁杂,若非机缘巧合,又怎想得到,神秘的web server,实现起来竟是如此简单!
首先,创建一个线程类,每个线程独立处理一个web browser request:
import java.io.*;import java.net.*;class WebServerConnection extends Thread { Socket connection; public WebServerConnection(Socket connection) { super(); this.connection = connection; this.setName("Request No. " + this.getId()); } @Override public void run() { Writer response = null; try { Thread.sleep(1000); response = new OutputStreamWriter(connection.getOutputStream()); response.write(this.getName(), 0, this.getName().length()); } catch (Exception e) { e.printStackTrace(); } finally { try { response.close(); connection.close(); } catch (Exception e) { e.printStackTrace(); } } }}import java.net.*;public class WebServer { public static void main(String[] args) { try { int threadLimit = 5; int threadCounter = 0; ServerSocket sock = new ServerSocket(9090); while ((threadCounter++) < threadLimit) { //阻塞进程,直到新的request被侦测到 Socket connection = sock.accept(); //创建处理线程 Thread connect = new WebServerConnection(connection); connect.start(); } System.out.println("limit reached, server down!"); } catch (Exception e) { e.printStackTrace(); } }}