packageex01.pyrmont;importjava.net.Socket;importjava.net.ServerSocket;importjava.net.InetAddress;importjava.io.InputStream;importjava.io.OutputStream;importjava.io.IOException;importjava.io.File;public classHttpServer {/**WEB_ROOT is the directory where our HTML and other files reside.
* For this package, WEB_ROOT is the "webroot" directory under the working
* directory.
* The working directory is the location in the file system
* from where the java command was invoked.*/
public static final String WEB_ROOT =System.getProperty("user.dir") + File.separator + "webroot";//shutdown command
private static final String SHUTDOWN_COMMAND = "/SHUTDOWN";//the shutdown command received
private boolean shutdown = false;public static voidmain(String[] args) {
HttpServer server= newHttpServer();
server.await();
}public voidawait() {
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 = newRequest(input);
request.parse();//create Response object
Response response = newResponse(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;
}
}
}
}