1、java web工作原理:
Http協議時無狀態的。
發送請求訊息:
一旦建立了TCP串連,web瀏覽器就會向web伺服器發送請求命令,Http協議將來自於用戶端的請求資訊封裝成Http請求,它包括請求行、要求標頭以及訊息體和分割要求標頭和和訊息體的一個空行。
請求行:
請求行是一個ASCII文本行,由3個標記組成:請求的HTTP方法,請求的URL,HTTP版本,中間用空額分開。
要求標頭:
HTTP協議是用HTTP頭來傳遞請求的元資訊。HTTP頭是用冒號分隔的值對,冒號前是HTTP頭的名稱,後面是HTTP頭的值。
空行:
發送斷行符號符和退行,通知伺服器以下不再有要求標頭。
訊息體:
HTTP請求中帶有查詢字串時,如果是get方法,查詢字串或表單資料,附加在請求行中,那麼訊息體中就沒有內容;如果是post方法,查詢字串或表單資料就添加在訊息體中。
回送響應資訊:
HTTP響應包括:狀態行、回應標頭、訊息體以及分割訊息體和回應標頭的一個空行
狀態行:
每個HTTP響應以一個狀態行開頭,狀態行由HTTP協議版本,響應狀態代碼和響應描述組成。
回應標頭:
回應標頭與要求標頭一樣。
訊息體:
要發送回用戶端的HTML文檔或其他要顯示的內容等。web伺服器把要發送回用戶端的文檔資訊放到訊息體中。
web伺服器的缺陷:
它只能向用戶端提供靜態網頁的內容。
最早的解決方案CGI:
CGI,即通用閘道介面(common Gateway Interface)它是基於進程的。
JAVA的解決方案:
JSP:java伺服器端介面技術。
Servlet:
Servlet是一個在WEB伺服器端或者應用伺服器端啟動並執行java程式,主要用於子啊伺服器端產生動態內容。
WEB容器:
容器對Servlet的支援包括:通訊支援,生命週期管理,多線程支援,JSP支援,處理安全性。
WEB容器主要用於給處於容器中的應用程式組件(Servlet,JSP)提供一個環境,使Servlet、JSP直接跟容器中的環境變數互動,這樣我們就可以把注意力放在處理用Servlet實現商務邏輯上,不必關注其他。
Servlet和web容器配合處理請求和響應:
1、用戶端向伺服器發送一個HTTP請求;
2、HTTP請求被伺服器接收,如果請求的是靜態頁面由web伺服器進行處理,如果是java web組件(Servlet,JSP)則移交給WEB容器,WEB容器可以在同一個進程,不同的進程或其他的WEB服務主機的進程中啟動。
3、WEB容器根據Servlet的設定檔,確定調用的具體的Servlet類,並把request和response對象傳給它。
4、Servlet根據request對象知道用戶端的使用者是誰,客戶的請求資訊和其他的資訊,Servlet處理完後,把要返回的資訊放入response對象返回到用戶端。
5、一旦Servlet完成了請求處理,WEB容器就會重新整理request,把控制權返回給WEB伺服器。
JAVA WEB應用程式的組成:
設定檔,靜態檔案和JSP,類檔案和包。
每一個WEB應用都必須有WEB-INF目錄,web.xml檔案、classes目錄。