天天看點

Java Socket程式設計(五)

一個簡單的WEB伺服器将由清單9.2這樣建構.當然,還必須要對方法和回應事件進行改進.簡單的伺服器不會分析和存儲請求頭.新的WEB伺服器将分析和存儲請求,為以後的處理作準備.為了達到這個目的,你必須有一個包含HTTP請求的類.

HTTPrequest類

清單9.5列出了一個完整的HTTPrequest類.這個類必須包括一個請求頭所需的所有資訊.

清單9.5.HTTPrequest類.

import java.io.*;

import java.util.*;

import java.net.*;

import NameValue;

public class HTTPrequest

{

public String version;

public String method;

public String file;

public Socket clientSocket;

public DataInputStream inbound;

public NameValue headerpairs[];

public HTTPrequest()

{

version = null;

method = null;

file = null;

clientSocket = null;

inbound = null;

inbound = null;

headerpairs = new NameValue[0];

}

public void addNameValue(String name, String value)

{

try

{

NameValue temp[] = new NameValue[ headerpairs.length + 1 ];

System.arraycopy(headerpairs, 0, temp, 0, headerpairs.length);

temp[ headerpairs.length ] = new NameValue(name, value);

headerpairs = temp;

}

catch (NullPointerException npe)

{

System.out.println("NullPointerException while adding name-value:

" + npe);

}

}

public String toString()

{

String s = method + " " + file + " " + version + "/n";

for (int x = 0; x < headerpairs.length; x++ )

s += headerpairs[x] + "/n";

return s;

}

}

NameValue類簡單地存儲了兩個字元串:name 和 value.當一個新的對要被加入時,一個新的數組将被配置設定.新的數組接受了舊的數組和新的成員.舊的數組然後被一個建立的對象覆寫了.