forked from LupusNobilis/java-org.hwo
91 lines
2.1 KiB
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();
|
|
}
|
|
}
|