changed tabs to spaces + little cleanup

This commit is contained in:
Jeena Paradies 2010-11-04 11:30:24 +01:00
parent d5f79cb746
commit 7de5c549ca

View file

@ -18,11 +18,12 @@ public final class WebServer
// Establish the listening socket // Establish the listening socket
ServerSocket serverSocket = new ServerSocket(port); ServerSocket serverSocket = new ServerSocket(port);
System.out.println("Port number is: "+serverSocket.getLocalPort()); System.out.println("Port number is: " + serverSocket.getLocalPort());
// Wait for and process HTTP service requests // Wait for and process HTTP service requests
while (true) { while (true) {
// Wait for TCP connection // Wait for TCP connection
Socket requestSocket = serverSocket.accept(); Socket requestSocket = serverSocket.accept();
requestSocket.setSoLinger(true, 5); requestSocket.setSoLinger(true, 5);
@ -54,11 +55,11 @@ final class HttpRequest implements Runnable
final static String HTTPVERSION = "HTTP/1.0"; final static String HTTPVERSION = "HTTP/1.0";
final static String CRLF = "\r\n"; final static String CRLF = "\r\n";
final static String Response200 = HTTPVERSION + " 200 OK "+CRLF; final static String RESPONSE_200 = HTTPVERSION + " 200 OK " + CRLF;
final static String Response404 = HTTPVERSION + " 404 Not Found "+CRLF; final static String RESPONSE_404 = HTTPVERSION + " 404 Not Found " + CRLF;
final static String Response400 = HTTPVERSION + " 400 Bad Request "+CRLF; final static String RESPONSE_400 = HTTPVERSION + " 400 Bad Request " + CRLF;
final static String Response501 = HTTPVERSION + " 501 Not Implemented "+CRLF; final static String RESPONSE_501 = HTTPVERSION + " 501 Not Implemented " + CRLF;
final static String Location = " datalabb "+CRLF; final static String LOCATION = " datalabb " + CRLF;
Socket socket; Socket socket;
@ -99,33 +100,44 @@ final class HttpRequest implements Runnable
String[] tokens = requestLine.split("\\s+"); String[] tokens = requestLine.split("\\s+");
//System.out.println("-->"+tokens.length); //System.out.println("-->"+tokens.length);
String Request = tokens[0]; String Request = tokens[0];
if(tokens.length != 3){ if(tokens.length != 3) {
System.out.println("Wrong number of arguments in request!"); System.out.println("Wrong number of arguments in request!");
outs.writeChars(Response400+Location+getDateString(d)); outs.writeChars(RESPONSE_400 + LOCATION + getDateString(d));
}
else if(tokens[1].charAt(0) != '/'){ } else if(tokens[1].charAt(0) != '/') {
System.out.println("illegal url"); System.out.println("illegal url");
outs.writeChars(Response501+Location+getDateString(d)); outs.writeChars(RESPONSE_501 + LOCATION + getDateString(d));
}
else if(Request.equals(HTTP_METHOD.GET) || Request.equals(HTTP_METHOD.HEAD)){ } else if(Request.equals(HTTP_METHOD.GET) || Request.equals(HTTP_METHOD.HEAD)) {
FileInputStream filein; FileInputStream filein;
try{ try {
File f = new File("." +tokens[1]); File f = new File("." +tokens[1]);
filein = new FileInputStream(f); filein = new FileInputStream(f);
String response = createHeader(d,f); String response = createHeader(d,f);
outs.writeChars(response); outs.writeChars(response);
if(Request.equals(HTTP_METHOD.GET))
sendBytes(filein,outs); if(Request.equals(HTTP_METHOD.GET)) {
sendBytes(filein, outs);
} }
catch (FileNotFoundException e){
outs.writeChars(Response404+getDateString(d)); } catch (FileNotFoundException e) {
outs.writeChars(RESPONSE_404 + getDateString(d));
} }
} else if(Request.equals(HTTP_METHOD.POST)){ } else if(Request.equals(HTTP_METHOD.POST)){
outs.writeChars(Response501+getDateString(d));
outs.writeChars(RESPONSE_501 + getDateString(d));
}
else {
outs.writeChars(RESPONSE_400 + getDateString(d));
} }
else
outs.writeChars(Response400+getDateString(d));
// Close streams and sockets // Close streams and sockets
@ -135,23 +147,22 @@ final class HttpRequest implements Runnable
} }
private String getDateString(Date d){ private String getDateString(Date d){
return "Date: "+d.toString()+CRLF; return "Date: " + d.toString() + CRLF;
} }
private String createHeader(Date d, File f){ private String createHeader(Date d, File f){
String response = Response200; String response = RESPONSE_200;
response += getDateString(d); response += getDateString(d);
response += "Location: " + f.getName() +CRLF; response += "LOCATION: " + f.getName() +CRLF;
response += "Server: Labbserver" + CRLF; response += "Server: Labbserver" + CRLF;
response += "Allow: " + HTTP_METHOD.GET + " " + HTTP_METHOD.HEAD+CRLF; response += "Allow: " + HTTP_METHOD.GET + " " + HTTP_METHOD.HEAD+CRLF;
response += "Content-Length: " + f.length() +CRLF; response += "Content-Length: " + f.length() +CRLF;
response += "Content-Type: " + contentType(f.getName()) +CRLF; response += "Content-Type: " + contentType(f.getName()) +CRLF;
response += "Last-Modified: " + new Date(f.lastModified()).toString() +CRLF; response += "Last-Modified: " + new Date(f.lastModified()).toString() +CRLF;
return response; return response;
} }
private static void sendBytes(FileInputStream fins,
OutputStream outs) throws Exception private static void sendBytes(FileInputStream fins, OutputStream outs) throws Exception
{ {
// Coopy buffer // Coopy buffer
byte[] buffer = new byte[1024]; byte[] buffer = new byte[1024];