java-org.hwo/src/org/hwo/net/http/HttpServer.java

91 lines
2.1 KiB
Java

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();
}
}