public class WebServer
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 = 7081;
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()));
57: 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: }