1. 程式人生 > >Java Socket程式設計(五) 簡單的WEB伺服器

Java Socket程式設計(五) 簡單的WEB伺服器

簡單的WEB伺服器

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

HTTPrequest類

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

列表9.5.HTTPrequest類. 

import java.io.*; 
import java.util.*; 
import java.net.*; 
import NameValue; 
/** 
* 這個類有一個HTTP請求的所有資訊 
*/ 
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.當一個新的對要被加入時,一個新的陣列將被分配.新的陣列接受了舊的陣列和新的成員.舊的陣列然後被一個新建的物件覆蓋了。

 

     
煉數成金 大型分散式系統案例實戰 十四周大型分散式系統學習視訊教程