Servlet工作原理
Servlet工作原理
Servlet是運行在Servlet容器中的,由Servlet容器來負責,Servlet實例的查找、創建及整個生命周期的管理。
Servlet生命周期:
類裝載及實例的創建階段:
默認情況下,servlet實例是在接受第一次請求時進行創建并且以后的請求進行復用(單例),如果servlet需要進行一些復雜的操作,需在初始化時就完成eg:打開文件、初始化網絡連接,可以配置在服務器啟動時便創建實例,具體配置方法為在聲明servlet標簽中添加
<load-on-satrtup>/</load-on-startup>標簽。
初始化init(ServletConfig)
一旦Servlet實例被創建,將會調用Servlet的init方法,同事傳入ServletConfig實例,傳入Servlet的相關配置信息,init方法在整個Servlet聲明周期中只會被調用一次。
服務Service(HttpServletRequest request HttpServletResponse response)
為提高效率,Servlet規范要求一個Servlet實例必須能同時服務于多個客戶端請求,即Service()方法運行在多線程的環境下(每一個請求在Servlet容器中都會產生一個線程來調用Service方法,但需要注意每個線程也共享Servlet對象的成員變量),Servlet開發者必須保證該方法的線程是安全的。另外HttpServletRequest對象封裝的事用戶請求的信息,此對象其他相應的方法獲取封裝的信息,用此對象可獲得用戶提交的信息,HttpServletResponse對象是用來響應用戶的請求,用此對象可獲得用戶想要得到的信息。
銷毀destory()
服務器關閉時會調用destory方法,銷毀Servlet實例。當Servlet容器將決定結束某個Servlet時,將會調用destory()方法,在destory方法中釋放資源,一旦destory方法被調用Servlet容器將不會再發送任何請求給這個實例,若Servlet容器再次使用該Servlet實例,需要重新實例化該Servlet實例。
Servlet執行流程
Web服務器接到HTTP請求后,Web服務器將請求移交給Servlet容 器,Servlet容器首先對所請求的URL進行解析并根據Web.xml配置 文件找到相應的處理Servlet,同事將request、response對象傳遞給 它,Servlet通過request對象可知道客戶端的請求者請求信息以及 其他的信息等,Servlet在處理完請求后會把所有需返回的信息放入 response對象中并返回到客戶端,Servlet一旦處理完請求,Servlet 容器會刷新response對象,并把控制權重新返回給Web服務器。創建Servlet的時機.
1.Servlet容器啟動時,讀取Web.xml配置文件中的信息,構造指定的Servlet對象,創建ServletConfig對象,同時將ServletConfig對象作為參數來調用Servlet對象init方法。
2. 在Servlet容器啟動后,客戶首次向Servlet發出請求,Servlet容器會判斷內存中是否存在指定的Servlet對象,若沒有則根據客戶的請求創建HttpRequest、HttpReponse對象,從而調用Servlet對象的Service方法。
3. Servlet容器在啟動時創建的Servlet是由在Web.xml文件中為 Servlet 設置的<load-on startup>
屬性決定的,同一類型的Servlet對象在Servlet容器中以單例的形式存在。
Servlet與JSP比較
它們有很多相似之處,都可以生成動態網頁
1.JSP優點是:擅長網頁制作,生成動態頁面比較直觀;
缺點:不容易跟蹤與拍錯;
2.Servlet是純Java語言,擅長處理流程和業務邏輯;
缺點:生成動態網頁不直觀;
3.Servlet運行速度比CGI快,因為使用了多線程;
4.Servlet使用了標準的api,可被許多web服務支持;
5.Servlet與系統無關,一次編譯多次使用,也正是Java的特性;
Tomcat與Servlet如何工作的
1.Web Client 向Servlet容器發出Http請求;
2.Servlet容器接收Web Client 的請求;
3.Servlet容器創建一個Http Request對象,將Web Client請求信息封裝到這個對象中;
4.Servlet容器創建一個HttpResponse對象;
5.Servlet容器調用HttpServlet對象的Service方法,把HttpRequest對象與HttpResponse對象作為參數傳給HttpServlet對象;
6.HttpServlet調用HttpRequest對象相關方法獲取Http請求信息;
7.HttpServlet調用HttpResponse對象的相關方法生成響應數據;
8.Servlet容器把HttpServlet的響應結果傳給WebClient;
總結
以上是生活随笔為你收集整理的Servlet工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LQR控制算法推导以及简单分析
- 下一篇: 解决台式机外放和插耳机都没声音[基础版]