package org.hwo.net.http; import java.io.IOException; import java.net.HttpRetryException; import java.net.ServerSocket; import java.net.Socket; import org.hwo.net.requesthandler.ServerObjectHandler; import org.hwo.net.serverobjects.VirtualRootObject; public class HttpServer extends Thread { private int port; private ServerSocket serverSocket; private HttpServerConnectionFactory connectionFactory; private HttpServerRequestFactory requestFactory; private HttpServerRequestHandler requestHandler; public HttpServer(int port) { this.port = port; this.connectionFactory = new HttpServerConnection.Factory(); this.requestFactory = new HttpServerRequest.Factory(); this.requestHandler = new HttpServerRequestHandler() { @Override public void doRequest(HttpServerRequest httpRequest) throws IOException{ httpRequest.setResponseHeader("Content-Type", "text/plain"); httpRequest.getResponseWriter().write("This Page has no other content than this text."); } }; } public HttpServerConnectionFactory getConnectionFactory() { return connectionFactory; } public void setConnectionFactory(HttpServerConnectionFactory factory) { connectionFactory = factory; } public HttpServerRequestFactory getRequestFactory() { return requestFactory; } public void setRequestFactory(HttpServerRequestFactory factory) { requestFactory = factory; } public HttpServerRequestHandler getRequestHandler() { return requestHandler; } public void setRequestHandler(HttpServerRequestHandler requestHandler) { this.requestHandler = requestHandler; } @Override public void run() { try { serverSocket = new ServerSocket(port); while (true) { Socket clientSocket = serverSocket.accept(); HttpServerConnection connection = getConnectionFactory().createHttpServerConnection(this, clientSocket); connection.start(); } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { HttpServer httpServer = new HttpServer(8080); ServerObjectHandler soh = new ServerObjectHandler(); httpServer.setRequestHandler(soh); httpServer.start(); } }