碼上快樂
1秒登錄
首頁
榜單
標簽
關於
搜索
相關內容
簡體
繁體
java web 后台工作原理
本文轉載自
查看原文
2018-03-20 09:07
879
java web 后台運行原理
當Web服務器接收到一個HTTP請求時,它會先判斷請求內容——如果是靜態網頁數據,Web服務器將會自行處理,然后產生響應信息;如果牽涉到動態數據,Web服務器會將請求轉交給Servlet容器。此時Servlet容器會找到對應的處理該請求的Servlet實例來處理,結果會送回Web服務器,再由Web服務器傳回用戶端。
針對同一個Servlet,Servlet容器會在第一次收到http請求時建立一個Servlet實例,然后啟動一個線程。第二次收到http請求時,Servlet容器無須建立相同的Servlet實例,而是啟動第二個線程來服務客戶端請求。所以多線程方式不但可以提高Web應用程序的執行效率,也可以降低Web服務器的系統負擔。
下圖粗暴解釋了請求到容器流程
下圖解釋了請求到容器到servlet周期流程
文字解說:
1.客戶發出請求—>Web 服務器轉發到Web容器Tomcat;
2.Tomcat主線程對轉發來用戶的請求做出響應創建兩個對象:HttpServletRequest和HttpServletResponse;
3.從請求中的URL中找到正確Servlet,Tomcat為其創建或者分配一個線程,同時把步驟2創建的兩個對象傳遞給該線程;
4.Tomcat調用Servlet的servic()方法,根據請求參數的不同調用doGet()或者doPost()方法;
5.假設是HTTP GET請求,doGet()方法生成靜態頁面,並組合到響應對象里;
Servlet線程結束時:Tomcat將響應對象轉換為HTTP響應發回給客戶,同時刪除請求和響應對象。
可以理解Servlet的生命周期:Servlet類加載(對應3步);Servlet實例化(對應3步);調用init方法(對應3步);調用service()方法(對應4、5步);;調用destroy()方法(對應6步)。
注意:
1.
創建Servlet對象的時機:
Servlet容器啟動時:讀取web.xml配置文件中的信息,構造指定的Servlet對象,創建ServletConfig對象,同時將ServletConfig對象作為參數來調用Servlet對象的init方法。
在Servlet容器啟動后:客戶首次向Servlet發出請求,Servlet容器會判斷內存中是否存在指定的Servlet對象,如果沒有則創建它,然后根據客戶的請求創建HttpRequest、HttpResponse對象,從而調用Servlet 對象的service方法。
Servlet Servlet容器在啟動時自動創建Servlet,這是由在web.xml文件中為Servlet設置的屬性決定的。從中我們也能看到同一個類型的Servlet對象在Servlet容器中以單例的形式存在。
2.
在Servlet接口和GenericServlet中是沒有doGet()、doPost()等等這些方法的,HttpServlet中定義了這些方法,但是都是返回error信息,所以,我們每次定義一個Servlet的時候,都必須實現doGet或doPost等這些方法。我們經常使用的httpServlet是繼承於GenericServlet實現的。
×
免責聲明!
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。
猜您在找
java web 后台運行原理
Http和Web的工作原理
Web工作原理
Web Service 的工作原理
Web Service 的工作原理
第一章 Java Web工作原理
tomcat web容器工作原理
Java HashMap的工作原理
Java中GC的工作原理
Java注解@Autowired的工作原理
粵ICP備18138465號
© 2018-2025 CODEPRJ.COM