JVM和容器的理解

JVM是Java程序惟一認識的操做系統,可執行.class文件。WEB容器是Servlet/JSP惟一認得的HTTP服務器。 
容器說白了就是一個用java寫的程序,運行與JVM之上。 
HTTP那些文字性的通訊協議,如何變成Servlet/JSP中可用的Java對象,其實就是容器的剖析與轉換。 
只要寫的Servlet/JSP符合WEB容器的標準規範,Servlet/JSP就能夠在各類不一樣廠商實現的WEB容器上運行,而不用理會底層真正的HTTP服務器是什麼。java

 
JVM介於Java程序和實體操做系統之間,WEB容器介於實體HTTP服務器與Servlet之間 瀏覽器


JSP最後也是轉譯、編譯、加載爲Servlet,在容器的世界中,真正負責請求、響應的是Servlet安全


請求響應的基本例子: 
一、瀏覽器對WEB服務器發出HTTP請求 
二、HTTP服務器收到HTTP請求,將請求轉給WEB容器處理,WEB容器剖析HTTP請求內容,建立各類對象(HttpServletRequest、HttpServletResponse等) 
三、WEB容器決定使用那個Servlet處理請求 
四、Servlet根據請求對象(HttpServletRequest)的信息決定如何處理,經過響應對象建立響應 
五、WEB容器與HTTP服務器溝通,WEB服務器將響應轉換爲HTTP響應並回傳給客戶端(瀏覽器)服務器

=========================================== 
WEB容器可能會使用同一個Servlet實例來服務多個請求。也就是說多個請求至關於多個線程在共享存取一個對象,所以得注意線程安全的問題spa

 

如下是HTTP請求/響應的步驟:操作系統

(1)客戶端鏈接到Web服務器.net

一個HTTP客戶端,一般是瀏覽器,與Web服務器的HTTP端口(默認爲80)創建一個TCP套接字鏈接。例如,http://www.oakcms.cn。線程

(2)發送HTTP請求對象

經過TCP套接字,客戶端向Web服務器發送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求數據4部分組成。blog

(3)服務器接受請求並返回HTTP響應

Web服務器解析請求,定位請求資源。服務器將資源複本寫到TCP套接字,由客戶端讀取。一個響應由狀態行、響應頭部、空行和響應數據4部分組成。

(4)釋放鏈接TCP鏈接

Web服務器主動關閉TCP套接字,釋放TCP鏈接;客戶端被動關閉TCP套接字,釋放TCP鏈接。

(5)客戶端瀏覽器解析HTML內容

客戶端瀏覽器首先解析狀態行,查看代表請求是否成功的狀態代碼。而後解析每個響應頭,響應頭告知如下爲若干字節的HTML文檔和文檔的字符集。客戶端瀏覽器讀取響應數據HTML,根據HTML的語法對其進行格式化,並在瀏覽器窗口中顯示。

 

參考:http://blog.csdn.net/Java_Web_Android/article/details/52972788

相關文章
相關標籤/搜索