Source of WebServer.java


  1: // WebServer.java
  2: // Serves up static HTML web pages from a
  3: // local subdirectory called "webpages".

  5: import java.net.*;
  6: import java.io.*;
  7: import java.util.*;

  9: public class WebServer
 10: {
 11:     public final static int WEB_PORT = 7080;
 12:     public final String docRoot = "webpages";
 13:     BufferedReader in;
 14:     PrintWriter out;

 16:     public static void main(String[] args)
 17:     {
 18:         WebServer ws = new WebServer();
 19:         ws.waitForRequest();
 20:     }

 22:     public void waitForRequest()
 23:     {
 24:         ServerSocket server;
 25:         Socket socket;

 27:         try
 28:         {
 29:             server = new ServerSocket(WEB_PORT);
 30:             try
 31:             {
 32:                 while (true)
 33:                 {
 34:                     socket = server.accept();
 35:                     serviceRequest(socket);
 36:                     socket.close();
 37:                  }
 38:             }
 39:             catch (IOException e)
 40:             {
 41:                 server.close();
 42:                 System.err.println(e);
 43:             }
 44:         }
 45:         catch (IOException e)
 46:         {
 47:             System.err.println(e);
 48:         }
 49:     }
 50: 
 51:     public void serviceRequest(Socket socket)
 52:     {
 53:         try
 54:         {
 55:             in = new BufferedReader(new
 56:                 InputStreamReader(socket.getInputStream()));

 58:             out = new PrintWriter(socket.getOutputStream(), true);
 59:             String line = in.readLine();
 60:             StringTokenizer st = new StringTokenizer(line);
 61:             String command = st.nextToken();
 62:             if (command.equals("GET"))
 63:             {
 64:                 sendFile(st.nextToken());
 65:                 skipRemainder();
 66:             }
 67:             else
 68:                 notImplemented();
 69:             socket.close();
 70:         }
 71:         catch (IOException e) {}
 72:     }

 74:     public void sendFile(String fileName)
 75:     {
 76:         try
 77:         {
 78:             String completeName = docRoot + fileName;
 79:             BufferedReader file = new BufferedReader(new
 80:                 FileReader(completeName));
 81:             sendHeader((new File(completeName)).length());
 82:             String line;
 83:             while ((line = file.readLine()) != null)
 84:                 out.println(line);
 85:         }
 86:         catch (IOException e)
 87:         {
 88:             fileNotFound();
 89:         }
 90:     }

 92:     public void skipRemainder()        {}
 93:     public void sendHeader(long length){}
 94:     public void fileNotFound()         {}
 95:     public void notImplemented()
 96:     {
 97:         out.println("<HTML><HEAD><TITLE>Not Implemented</TITLE></HEAD>");
 98:         out.println("<BODY><H1>HTTP Error 501:" +
 99:                     "Not Implemented</H1></BODY></HTML>");
100:     }
101: }