1.什麽是SERVLET?
Servlet是用Java編寫的服務器端程序, 其主要功能在於交互式地瀏覽和修改數據,生成動態Web內容.
狹義的Servlet是指Java語言實現的壹個接口,廣義的Servlet是指任何實現了這個Servlet接口的類,壹般情況下,我們壹般將Servlet理解為後者。
這段話可能聽起來有些繞, 但如果大家把Servlet與Spring MVC 的前端控制器 DispatcherServlet
結合起來理解, 應該立馬就知道它是做什麽的了. Servlet 是Java JDK提供的壹個接口, 所有的Servlet都繼承於它,
而DispatcherServlet是壹個繼承了實現了Servlet接口的類的類.
2.知識剖析
Servlet 的生命周期
Servlet 的生命周期分為三個階段, 分別對應Servlet中的三個接口.
init() 初始化.
service() 處理客戶端的請求, 具體業務邏輯. ServletRequest 對象用於獲得客戶端信息,ServletResponse 對象用於向客戶端返回信息(客戶端可以理解為瀏覽器)
destroy() 結束時調用. 這個方法只有在servlet的service方法內的所有線程都退出的時候,或在超時的時候才會被調用。
init() 和 destroy() 都只會在Servlet創建和銷毀時調用壹次, 而service() 則會在響應不同請求時多次調用.
註意Servlet是壹個接口,實現了servlet的類,是不能直接處理請求的.?
請求需要通過Servlet容器來發送到Servlet, Servlet是運行在Servlet容器中的.?
Servlet容器是Web服務器和servlet進行交互的必不可少的組件。常見Web服務器有Tomcat, jetty, resin, 它們也可以稱為應用服務器
3.常見問題
1. Servlet 如何接收才能接收到Servlet容器發來的請求?
2. Servlet 什麽時候被初始化?
3. DispatcherServlet 如何處理容器發來的請求?
4.解決方案
1. Servlet 容器通過監聽端口(8080)來接收用戶發送的請求, 然後通過web.xml中的 Servlet-mapping 配置, 來匹配到請求Heades中的url信息, 將其轉發到對應Servlet配置中的Servlet實現類完成請求接收.
2. Servlet 的初始化是由Web.xml 中的 loadOnStartup 配置控制的.?
當 loadOnStartup < 0 或者不寫時, 接收到第壹次請求的時候實例化.
當 loadOnStartup > 0 web容器啟動的時候做實例化處理,順序是由小到大,正整數小的先被實例化?
當 loadOnStartup = 0 web容器啟動的時候做實例化處理,相當於是最大整數,因此web容器啟動時,最後被實例化?
3. 通過DispatcherServlet 的執行流程來看它時如何處理請求的
希望對您有所幫助!~