天天看點

深入剖析tomcat之一個簡單的web伺服器

這個簡單的web伺服器包含三個類

httpserver

request

response

在應用程式的入口點,也就是靜态main函數中,建立一個httpserver執行個體,然後調用其await()方法。顧名思義,await方法會在制定的端口上等待http請求,并對其進行處理,然後發送相應的消息回用戶端。在接收到指令之前,它會一直保持等待的狀态。

httpserver類

這個簡單的web伺服器,可以處理指定目錄中的靜态資源請求;用web_root表示制定的目錄

這裡是指目前目錄下的webroot檔案夾下面的資源。

我們通過在遊覽器中輸入這樣的内容,進行資源的請求:

<a href="http://127.0.0.1:8080/index.html">http://127.0.0.1:8080/index.html</a>

request類

request類表示一個http請求,可以傳遞inputstream對象來建立request對象,調用inputstream對象的read進行http請求資料的讀取。

request類最重要的兩個函數是parse和parseuri;parse()方法會調用私有方法parseuri來解析http請求的uri,初次之外,并沒有做太多的工作。parseuri會将解析的uri存儲在變量uri中。

get /index.html http/1.1

parse()方法從傳入的request對象的inputstream對象中讀取整個位元組流,并且将位元組數組存入緩沖區。然後用緩存區的數組初始化stringbuffer對象request。 這樣再解析stringbuffer就可以解析到uri。

*response類

response類表示http相應。其定義如下

使用outputstream和request來初始化reponse,response比較簡單,得到request的uri,然後讀取對應的file,如果file存在,則将file中的資料讀取到緩存中,并且發送給遊覽器;如果file不存在,那麼就發送

錯誤資訊給遊覽器。

我們在eclipse中将代碼跑起來,在遊覽器中輸入

深入剖析tomcat之一個簡單的web伺服器

<a href="http://127.0.0.1:8080/index.php">http://127.0.0.1:8080/index.php</a>

深入剖析tomcat之一個簡單的web伺服器

一個簡單的額web伺服器就跑起來了!

繼續閱讀