Tomcat 是Web應用服務器,是一個Servlet/JSP容器. Tomcat 做爲Servlet容器,負責處理客戶請求,把請求傳送給Servlet,並將Servlet的響應傳送回給客戶.而Servlet是一種運行在支持Java語言的服務器上的組件. Servlet最多見的用途是擴展Java Web服務器功能,提供很是安全的,可移植的,易於使用的CGI替代品mysql
①:Tomcat將http請求文本接收並解析,而後封裝成HttpServletRequest類型的request對象,全部的HTTP頭數據讀能夠經過request對象調用對應的方法查詢到。web
②:Tomcat同時會要響應的信息封裝爲HttpServletResponse類型的response對象,經過設置response屬性就能夠控制要輸出到瀏覽器的內容,而後將response交給tomcat,tomcat就會將其變成響應文本的格式發送給瀏覽器。spring
web容器啓動過程:sql
1.啓動WEB項目的時候,容器(如:Tomcat)會去讀它的配置文件web.xml.讀兩個節點: 數據庫
<listener></listener> 和 <context-param></context-param>瀏覽器
2.緊接着,容器建立一個ServletContext(上下文),這個WEB項目全部部分都將共享這個上下文.tomcat
3.容器將<context-param></context-param>轉化爲鍵值對,並交給ServletContext.安全
4.容器建立<listener></listener>中的類實例,即建立監聽.服務器
5.在監聽中會有contextInitialized(ServletContextEvent args)初始化方法,在這個方法中得到:app
ServletContext = ServletContextEvent.getServletContext();
context-param的值 = ServletContext.getInitParameter("context-param的鍵");
6.獲得這個context-param的值以後,你就能夠作一些操做了.注意,這個時候你的WEB項目尚未徹底啓動完成.這個動做會比 所 有的Servlet都要早.
換句話說,這個時候,你對<context-param>中的鍵值作的操做,將在你的WEB項目徹底啓動以前被執行.
7.舉例.你可能想在項目啓動以前就打開數據庫.
那麼這裏就能夠在<context-param>中設置數據庫的鏈接方式,在監聽類中初始化數據庫的鏈接.
8.這個監聽是本身寫的一個類,除了初始化方法,它還有銷燬方法.用於關閉應用前釋放資源.好比說數據庫鏈接的關閉.
web.xml節點加載順序:context-param -> listener -> filter -> servlet
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
Servlet生命週期:
1:初始化階段,調用init()方法
2:響應客戶請求階段,調用service()方法
3:終止階段,調用destory()方法
建立一個servlet爲何繼承自HttpServlet?
HttpServlet是一個抽象類繼承自GenernicServlet,GenernicServlet實現了Servlet和ServletConfig
Servlet包含五個方法:
init getServletConfig service getServletInfo destroy
ServletConfig包含四個方法:
getServletName getServletContext getInitParameter getInitParameterNames
因service方法不經常使用,HttpServlet加了doGEt(),doPost(),doPut()
在tomcat容器中對請求作了封裝,將請求頭、請求體等信息封裝成了HttpServletRequset對象