回顧tomcat
Tomcat是Apache軟件基金會(Apache Software Foundation)的一個頂級項目,由Apache, Sun和其他一些公司及個人共同開發,是目前比較流行的Web服務器之一.作為一個開源的,小型的輕量級應用服務器,Tomcat深受廣大程序員的喜愛,具有占用系統資源少,擴展性好,支持負載均衡與郵件服務等開發應用系統常用的功能; 而且它還在不斷地改進和完善中, 任何一個感興趣的程序員都可以更改它或在其中加入新的功能.
雖然Tomcat易於使用,便於部署,但Tomcat本身是一個非常復雜的系統,包含了很多功能模塊.這些功能模塊密切合作,各司其職,構成了Tomcat的核心結構. 作者從最基本的HTTP請求開始,直至使用JMX技術管理Tomcat中的應用程序,逐步深入,逐一剖析Tomcat的基本功能模塊,並配以....略
--節選<深入剖析Tomcat>
Java Web 服務器的運行
Web服務器也稱為超文本傳輸協議 (HyperText Transfer Protocol, HTTP)服務器, 因為它使用HTTP與其客戶端(通常是Web瀏覽器)進行通信,
基於Java的Web服務器會使用兩個重要的類: java.net.Socket 類和 java.net.ServerSocket 類, 並通過發送 HTTP 消息進行通信.
HTTP
HTTP允許Web服務器和瀏覽器通過Internet發送並接收數據,是一種基於"請求-響應"的協議.
客戶端請求一個文件,服務器對該請求進行響應. HTTP使用可靠的TCP連接, TCP協議默認使用TCP 80端口.
HTTP協議的第一個版本是HTTP/0.9, 后來被HTTP/1.0取代,隨后 HTTP/1.0 又被當前版本 HTTP/1.1取代.
HTTP/1.1定義於 RFC (Request for Comment,請求注解) 2616中... 可以從
http://www.w3.org/Protocols/HTTP/1.1/rfc2616.pdf 下載
注意: 本節簡單介紹HTTP1.1 , 目的是幫助你了解Web服務器應用程序發送的消息
在HTTP中,總是由客戶端通過建立連接並發送HTTP請求來初始化一個事務的. Web服務器端
並不負責聯系客戶端或建立一個到客戶端的回調連接. 客戶端或服務器端可提前關閉連接.
例如,當使用Web瀏覽器瀏覽網頁時, 可以單擊瀏覽器上的Stop按鈕來停止下載文件,這樣就
有效地關閉了一個Web服務器的HTTP連接.
HTTP請求包含以下三部分:
- 請求方法 --- 統一資源標識符(Uniform Resource Identifier, URI) -- 協議/版本
- 請求頭
- 實體
HTTP請求的示例如下所示:
HTTP響應
與HTTP請求類似, HTTP響應也包括三部分:
- 協議 -- 狀態嗎 -- 描述
- 響應頭
- 響應實體段
下面是一個HTTP響應的示例:
HTTP響應頭的第一行與HTTP請求頭的第一行類似. 第一行指明了使用的協議是HTTP/1.1
請求發送成功(狀態嗎200表示請求成功), 一切都正常執行.
Socket類
套接字是網絡連接的端點, 套接字使應用程序可以從網絡中讀取數據,可以向網絡中寫入數據.
不同計算機上的兩個應用程序可以通過連接發送或接收字節流. 以此達到相互通信的目的.
為了從一個應用程序向另一個應用程序發送消息, 需要知道另一個應用程序中套接字的IP地址和端口號.
在Java中, 套接字由 java.net.Socket 表示.
要創建一個套接字, 可以使用 Socket 類中眾多構造函數中的一個. 其中一個構造函數接收兩個參數: 主機名和端口號
public Socket (String host, int port)
其中參數host是遠程主機的名稱或IP地址,參數port是連接遠程應用程序的端口號.
例如,想要通過80端口連接baidu.com, 可以使用下面的語句創建 Socket 對象:
new Socket ("baidu.com" , 80)
一旦成功地創建了Socket類的實例, 就可以使用該實例發送或接收字節流. 要發送字節流,
需要調用Socket類的getOutputStream() 方法獲取一個 java.io.OutputStream對象.
要發送文本到遠程應用程序, 通常需要使用返回的 OutputStream 對象創建一個 java.io.PrintWriter 對象.
若想要從連接的另一端接收字節流, 需要調用 Socket 類的 getInputStream() 方法,
該法會返回一個 java.io.InputStream 對象.
...略
https://blog.csdn.net/oqqHun123/article/details/96896978 <博客中制定的路徑為linux根路徑