????Tomcat是由Apache軟件基金會下屬的Jakarta項目開發的一個Servlet容器,實現了對Servlet和JavaServer Page(JSP)的支持,并提供了作為Web服務器的一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥等。由于Tomcat本身也內含了一個HTTP服務器,它也可以被視作一個單獨的Web服務器。但是,不能將Tomcat和Apache HTTP服務器混淆,Apache HTTP服務器是一個用C語言實現的HTTPWeb服務器;這兩個HTTP web server不是捆綁在一起的。Apache Tomcat包含了一個配置管理工具,也可以通過編輯XML格式的配置文件來進行配置。
????Servlet(Server Applet),全稱Java Servlet。是用Java編寫的服務器端程序。其主要功能在于交互式地瀏覽和修改數據,生成動態Web內容。狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet接口的類,一般情況下,人們將Servlet理解為后者。
????Servlet運行于支持Java的應用服務器中。從實現上講,Servlet可以響應任何類型的請求,但絕大多數情況下Servlet只用來擴展基于HTTP協議的Web服務器。最早支持Servlet標準的是JavaSoft的Java Web Server。
通用Servlet
????一般來說,通用Servlet由javax.servlet.GenericServlet實作Servlet界面。程序設計人員可以通過使用或繼承這個類來實現通用Servlet應用。
HttpServlet
????javax.servlet.http.HttpServlet實現了專門用于響應HTTP請求的Servlet,提供了響應對應HTTP標準請求的doGet()、doPost()等方法。
生命周期
????當servlet被部署在應用服務器中(應用服務器中用于管理Java組件的部分被抽象成為容器)以后,由容器控制servlet的生命周期。除非特殊指定,否則在容器啟動的時候,servlet是不會被加載的,servlet只會在第一次請求的時候被加載和實例化。servlet一旦被加載,一般不會從容器中刪除,直至應用服務器關閉或重新啟動。但當容器做內存回收動作時,servlet有可能被刪除。也正是因為這個原因,第一次訪問servlet所用的時間要大大多于以后訪問所用的時間。
servlet在服務器的運行生命周期為,在第一次請求(或其實體被內存垃圾回收后再被訪問)時被加載并執行一次初始化方法,跟著執行正式運行方法,之后會被常駐并每次被請求時直接執行正式運行方法,直到服務器關閉或被清理時執行一次銷毀方法后實體銷毀。
與JSP的關系
????Java服務器頁面(JSP)是HttpServlet的擴展。由于HttpServlet大多是用來響應HTTP請求,并返回Web頁面(例如HTML、XML),所以不可避免地,在編寫servlet時會涉及大量的HTML內容,這給servlet的書寫效率和可讀性帶來很大障礙,JSP便是在這個基礎上產生的。其功能是使用HTML的書寫格式,在適當的地方加入Java代碼片段,將程序員從復雜的HTML中解放出來,更專注于servlet本身的內容。
JSP在首次被訪問的時候被應用服務器轉換為servlet,在以后的運行中,容器直接調用這個servlet,而不再訪問JSP頁面。JSP的實質仍然是servlet。
????JSP(全稱JavaServer?Pages)是由Sun Microsystems公司倡導和許多公司參與共同創建的一種使軟件開發者可以響應客戶端請求,而動態生成HTML、XML或其他格式文檔的Web網頁的技術標準。JSP技術是以Java語言作為腳本語言的,JSP網頁為整個服務器端的Java庫單元提供了一個接口來服務于HTTP的應用程序。
????JSP使Java代碼和特定的預定義動作可以嵌入到靜態頁面中。JSP句法增加了被稱為JSP動作的XML標簽,它們用來調用內建功能。另外,可以創建JSP標簽庫,然后像使用標準HTML或XML標簽一樣使用它們。標簽庫提供了一種和平臺無關的擴展服務器性能的方法。
????JSP被JSP編譯器編譯成Java Servlets。一個JSP編譯器可以把JSP編譯成JAVA代碼寫的servlet然后再由JAVA編譯器來編譯成機器碼,也可以直接編譯成二進制碼。
SP和Servlets
從架構上說,JSP可以被看作是從Servlets高級提煉而作為JAVA Servlet?2.1 API的擴展而應用。Servlets和JSP最早都是由Sun Microsystems(太陽公司)開發的。從JSP1.2版本以來,JSP處于Java Community Process開發模式下。
????靜態數據在輸入文件中的內容和輸出給HTTP響應的內容完全一致。此時,該JSP輸入文件會是一個沒有內嵌JAVA或動作的HTML頁面。而且,客戶端每次請求都會得到相同的響應內容。
原創文章,作者:HGG,如若轉載,請注明出處:http://www.www58058.com/86292