欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

深入學習Tomcat----自己動手寫服務器(附服務器

系統 2300 0

相信大多 Web 開發者對 Tomcat 是非常熟悉的,眾所周知 Tomcat 是一款非常好用的開源 Servlet 容器,您一定對這個最流行的 Servlet 容器充滿好奇,雖然它并不像一個黑盒子那樣讓人無法觸摸但是 Tomcat 的源碼的確讓人看起來頭疼。筆者就在這里和大家共同分析一個簡單的 Web服務器是如何工作的源碼 下載地址

Web服務器

Web服務器 是一個復雜的系統,一個 Web服務器 要為一個 Servlet 的請求提供服務,需要做三件事:

1 、創建一個 request 對象并填充那些有可能被所引用的 Servlet 使用的信息,如參數、頭部、 cookies 、查詢字符串等等。一個 request 對象是 javax.servlet.ServletRequest javax.servlet.http.ServletRequest 接口的一個實例

2 、創建一個 response 對象,所引用的 servlet 使用它來給客戶端發送響應。一個 response 對象是 javax.servlet.ServletRequest javax.servlet.http.ServletRequest 接口的一個實例。

3 、調用 servlet service 方法,并傳入 request response 對象。這里 servlet 會從 request 對象取值,給 response 寫值。

在正式展示代碼之前還需要了解一些必須額 HTTP 的知識(如果您對此非常熟悉您可以直接看下面分析代碼)

HTTP

HTTP 的定義不知道的童鞋可以自己去度娘,這里主要要說的就是 HTTP 協議的格式

HTTP 請求包括三部分

1 、方法、統一資源標識符( URI )、協議 / 版本

2 、請求的頭部

3 、主題內容

下面是一個 HTTP 請求的例子


第一行表明這是 POST 請求方法, /examples/default.jsp URI HTTP/1.1 是協議以及版本。其中 URI 指明了一個互聯網資源,這里通常是相對服務器根目錄解釋的,也就是說這個 HTTP 請求就是告訴服務器我需要這個文件目錄如下:根目錄 / examples/default.jsp

最后一行是 HTTP 的主題內容, Servlet 會處理請求的主題內容,然后返回給客戶端 HTTP 響應。

類似于 HTTP 請求,一個 HTTP 響應也包括上面三個部分。

1 、方法、統一資源標識符( URI )、協議 / 版本

2 、響應的頭部

3 、主題內容

下面是一個 HTTP 響應的例子


第一行告訴協議版本,以及請求成功( 200 表示成功)

響應頭部和請求頭部一樣,一些有用的信息。響應的主體就是響應本身 HTML 內容。

好了基本知識介紹完畢,下面開始解釋代碼

部分相關代碼


HttpServer 類代表一個 web 服務器。首先提供一個 WEB_ROOT 所在的目錄和它下面所有的子目錄下靜態資源。其次定義了一個中止服務的命令,也就是說當得到的請求后面跟 /shutdown 的時候停止服務,默認是把服務設置為開啟。下面就是進入 main 函數了,首先實例化一個 HttpServer 類,然后就是通過 await 方法等待客戶端發來的請求。如果客戶端輸入的 URL 不是 http://localhost:8080/SHUTDOWN 則表示不停止服務器,然后就是繼續執行 await 方法中的內容,在 await 方法中最重要的就是定義兩個對象,一個是 request 一個是 response ,下面就來說說 Request Response 類。


首先調用 InputStream 對象中的 read 方法獲取 HTTP 請求的原始數據,然后在 parseUri 方法中獲得 uri 也就是要請求的靜態資源。說白了 Request 類的主要作用就是告訴服務器用戶要的是什么也就是在 http://localhost:8080 后面出現的東西。


Response 類代表一個 HTTP 響應。首先 Response 接收一個 OutputStream 對象,然后通過 sendStaticResource 方法對接收的 Request 進行處理,整個處理過程就是根據請求在服務器端進行尋找對應靜態資源的過程。找到所需要的資源后發送給客戶端然后讓客戶端顯示出來。

運行程序

運行上面的 HttpServer 類,然后在瀏覽器的地址欄中鍵入下面的地址: http:localhost:8080/index.jsp ,然后你會在瀏覽器中看到 index.jsp 頁面。

深入學習Tomcat----自己動手寫服務器(附服務器源碼)

在控制臺可以看到類似于下面的 HTTP 請求



小結

上面自己動手寫的這個所謂的服務器僅僅有三個類組成,從功能上來說他只能顯示一些靜態的資源,并不是全部功能。一個優秀的服務器還有很多細節要做,但是出于學習的目的大家現在有這些了解就足夠了,后面還會有對服務器的詳細介紹,敬請期待。

深入學習Tomcat----自己動手寫服務器(附服務器源碼)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本1区2区 | 色婷婷综合网 | 欧美激情在线精品一区二区 | 欧美激情精品久久久久 | 一级做a爰片性色毛片中国 日本黄色免费片 | 亚洲精品免费在线观看 | 5060网午夜| 色综合天天综一个色天天综合网 | 国产精品夜色一区二区三区 | 毛片免费软件 | 国产成人精品高清免费 | 亚洲涩综合| 在线播放av片| www.久| 国产一卡2卡三卡4卡免费网站 | 日本黄色一级片视频 | 一本一本久久α久久精品66 | 色婷婷导航 | 日韩亚洲欧美中文高清在线 | 免费在线观看成人 | 天天看天天摸色天天综合网 | 男人添女人下面免费网站 | 一本色道精品久久一区二区三区 | 理论片午午伦夜理片在线播放 | 日韩福利视频导航 | 草草影院在线 | 亚洲国产精品久久久久久网站 | 国产欧美日韩第一页 | 看免费大片| 国产一区二区欧美 | 涩涩伊人 | 亚洲精品色 | 一个色综合亚洲伊人久久 | xxxxhdvideosex | 欧美色伊人| 日本www视频在线观看 | 爱爱视频网站 | 午夜精品影院 | 精品欧美亚洲韩国日本久久 | 91tv在线观看| 久久中字 |