乙個簡單的web容器小例子,功能十分簡單,只能訪問靜態資源,對於新手來說還是有一定的意義。主要分三個類
1、server類:主要功能開啟socketserver,阻塞server,接收socket訪問,解析request,建立request,作出響應
publicclass
testserver1
public
void
await()
catch
(exception e)
//第二步、輪詢阻塞住socketserver
while(!shutdown)
catch
(ioexception e) }}
}
當然了上面的是最簡單的實現,也不能實現多執行緒,實際上的web容器肯定會建立乙個執行緒池來接收請求
2、request 主要的工作解析input流,封裝成request
classrequest
/*** 解析request請求內容
* cookie: 這個地方應該如果有cookie,如果有session還有jsessionid的
*/public
void
parserequest()
catch
(ioexception e)
for(int k=0; k)
system.out.println(buffer.tostring());
uri =parseuri(buffer.tostring());
}/*** get /index.html http/1.1 uri的位置
* @param
reqstr
* @return
*/private
string parseuri(string reqstr)
return
null
; }
public
string geturi()
}
解析成的http請求的具體內容,作為web開發人員應該要熟悉每個欄位的意義,這個請求是瀏覽器本身按照http協議封裝的乙個請求,能夠手寫出這個請求當然更好。
3、response 通過request的uri找到對應的資源對請求作出響應,實際的情況肯定是有靜態和動態資源例如servlet\filter等等,但是這裡只是做了簡單的靜態的處理了
classresponse
public
void
setrequest(request req)
/*** 簡單處理靜態資源
* @throws
ioexception
*/public
void sendstaticres() throws
ioexception
} else
} catch
(exception e)
finally
}}
同樣響應內容你也應該要熟悉哪些組成部分
響應行date: sat, 31 dec 2005 23:59:59gmt
content-type: text/html;charset=iso-8859-1content-length: 122<html>
<head>
<title>test</title>
</head>
<body>
this my page
</body>
</html>
至此乙個簡單的web容器就寫好了,能夠訪問webroot目錄下的靜態資源。
可以通過瀏覽器訪問,也可以通過telnet端進行訪問。在cmd命令列下telnet localhost 8080,就會連線上socketserver,然後就會等待輸入,自然我們輸入對應的請求報文,回車響應內容就出現了。
WEB 乙個簡單的WEB伺服器
web 伺服器如何工作的?http hypertext transfer protocol 是一套計算機通過網路進行通訊的規則。計算機專家設計出http,使http客戶 如web瀏覽器 能夠從http伺服器 web伺服器 請求資訊和服務,http目前協議的版本是1.1.http是一種無狀態的協議,無...
乙個簡單的web伺服器
新的一年了,新的開始,打算重新看一遍asp.net本質論這本書,再重新認識一下,查漏補缺,認認真真的過一遍。首先需要引入命名空間 system.net,關於網路程式設計的大部分型別及操作都可以在這個命名空間下找到。system.net.sockets 命名空間中提供了基於socket程式設計的資料型...
乙個簡單的靜態web伺服器
coding utf 8 import re from socket import from multiprocessing import process 設定靜態檔案根目錄 接收資料 request data cli socket.recv 1024 解析http報文協議 request data...