Tomcat 是Web應用伺服器,是一個Servlet/JSP容器. Tomcat 作為Servlet容器,負責處理客戶請求,把請求傳送給Servlet,並將Servlet的響應傳送回給客戶.而Servlet是一種執行在支援Java語言的伺服器上的元件. Servlet最常見的用途是擴充套件Java Web伺服器功能,提供非常安全的,可移植的,易於使用的CGI替代品
①:Tomcat將http請求文字接收並解析,然後封裝成HttpServletRequest型別的request物件,所有的HTTP頭資料讀可以通過request物件呼叫對應的方法查詢到。
②:Tomcat同時會要響應的資訊封裝為HttpServletResponse型別的response物件,通過設定response屬性就可以控制要輸出到瀏覽器的內容,然後將response交給tomcat,tomcat就會將其變成響應文字的格式傳送給瀏覽器。
web容器啟動過程:
1.啟動WEB專案的時候,容器(如:Tomcat)會去讀它的配置檔案web.xml.讀兩個節點:
<listener></listener> 和 <context-param></context-param>
2.緊接著,容器建立一個ServletContext(上下文),這個WEB專案所有部分都將共享這個上下文.
3.容器將<context-param></context-param>轉化為鍵值對,並交給ServletContext.
4.容器建立<listener></listener>中的類例項,即建立監聽.
5.在監聽中會有contextInitialized(ServletContextEvent args)初始化方法,在這個方法中獲得:
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物件