changed tabs to spaces + little cleanup
This commit is contained in:
parent
d5f79cb746
commit
7de5c549ca
1 changed files with 130 additions and 119 deletions
|
@ -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];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue