Http服務(wù)器主要由三個(gè)類構(gòu)成:HttpServer、Request和Response。其中程序的入口在HttpServer類,它調(diào)用await()方法,使得Server開始等候客戶端的連接。當(dāng)客戶端連接后,它將把靜態(tài)的頁面內(nèi)容發(fā)送給客戶端瀏覽器。下面分別介紹這三個(gè)類:
1:HttpServer類
HttpServer需要有一個(gè)服務(wù)器的根目錄這在WEB_ROOT變量中定義的:
public static final String WEB_ROOT =System.getpublic void await() {
ServerSocket serverSocket = null;
int port = 8080;
try {
serverSocket = new ServerSocket(port, 1, InetAddress.getByName("127.0.0.1"));
}
catch (IOException e) {
e.printStackTrace();
System.exit(1);
}
// Loop waiting for a request
while (!shutdown) {
Socket socket = null;
InputStream input = null;
OutputStream output = null;
try {
socket = serverSocket.accept();
input = socket.getInputStream();
output = socket.getOutputStream();
// create Request object and parse
Request request = new Request(input);
request.parse();
// create Response object
Response response = new Response(output);
response.setRequest(request);
response.sendStaticResource();
// Close the socket
socket.close();
//check if the previous URI is a shutdown command
shutdown = request.getUri().equals(SHUTDOWN_COMMAND);
}
catch (Exception e) {
e.printStackTrace();
continue;
}
}
}
await()方法內(nèi)構(gòu)造一個(gè)ServerSocket的實(shí)例,等客戶端連接進(jìn)來的時(shí)候把socket.getInputStream()傳遞給Request類進(jìn)行解析,把socket.getOutputStream()傳遞給Response類,然后再把request對象傳遞給Response,最后調(diào)用Response.sendStaticResource()方法發(fā)送數(shù)據(jù)給客戶端。socket.close()后監(jiān)測是不是接受到了關(guān)閉Server的命令,假如是的話跳出循環(huán)結(jié)束程序。
新聞熱點(diǎn)
疑難解答
圖片精選