java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數(shù)據(jù)庫或應用程序之間的中間層。 使用 Servlet,您可以收集來自網(wǎng)頁表單的用戶輸入,呈現(xiàn)來自數(shù)據(jù)庫或者其他源的記錄,還可以動態(tài)創(chuàng)建網(wǎng)頁。 Java Servlet 通常情況下與使用 CGI(Common Gateway Interface,公共網(wǎng)關接口)實現(xiàn)的程序可以達到異曲同工的效果。但是相比于 CGI,Servlet 有以下幾點優(yōu)勢: (1)性能明顯更好。 (2)Servlet 在 Web 服務器的地址空間內執(zhí)行。這樣它就沒有必要再創(chuàng)建一個單獨的進程來處理每個客戶端請求。 (3)Servlet 是獨立于平臺的,因為它們是用 Java 編寫的。 (4)服務器上的 Java 安全管理器執(zhí)行了一系列限制,以保護服務器計算機上的資源。因此,Servlet 是可信的。 (5)Java 類庫的全部功能對 Servlet 來說都是可用的。它可以通過 sockets 和 RMI 機制與 applets、數(shù)據(jù)庫或其他軟件進行交互。
下圖顯示了 Servlet 在 Web 應用程序中的位置。 
Servlet 執(zhí)行以下主要任務: (1)讀取客戶端(瀏覽器)發(fā)送的顯式的數(shù)據(jù)。這包括網(wǎng)頁上的 HTML 表單,或者也可以是來自 applet 或自定義的 HTTP 客戶端程序的表單。 (2)讀取客戶端(瀏覽器)發(fā)送的隱式的 HTTP 請求數(shù)據(jù)。這包括 cookies、媒體類型和瀏覽器能理解的壓縮格式等等。 (3)處理數(shù)據(jù)并生成結果。這個過程可能需要訪問數(shù)據(jù)庫,執(zhí)行 RMI 或 CORBA 調用,調用 Web 服務,或者直接計算得出對應的響應。 (4)發(fā)送顯式的數(shù)據(jù)(即文檔)到客戶端(瀏覽器)。該文檔的格式可以是多種多樣的,包括文本文件(HTML 或 xml)、二進制文件(GIF 圖像)、Excel 等。 (5)發(fā)送隱式的 HTTP 響應到客戶端(瀏覽器)。這包括告訴瀏覽器或其他客戶端被返回的文檔類型(例如 HTML),設置 cookies 和緩存參數(shù),以及其他類似的任務。
為了在web容器里注冊上面的Servlet,你要為你的應用建一個web.xml入口文件。
<?xml version="1.0"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <welcome-file-list> <welcome-file>/MyFirstServlet</welcome-file> </welcome-file-list> <servlet> <servlet-name>MyFirstServlet</servlet-name> <servlet-class>com.howtodoinjava.servlets.MyFirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyFirstServlet</servlet-name> <url-pattern>/MyFirstServlet</url-pattern> </servlet-mapping></web-app>(1)MyFirstServlet類繼承了HttpServlet。這個繼承是必須的,因為所有的Servlet必須是要么繼承了 javax.servlet.GenericServlet 的普通Servlet,要么是繼承了 javax.servlet.http.HttpServlet 的HTTP Servlet。 (2)重新 doGet() 和 doPost() 方法。這兩個方法都已在 HttpServlet 類里定義了。當一個GET或POST請求到來時,它就會被映射到相應的方法里。例如,如果你向這個servlet發(fā)送一個HTTP GET請求,doGet()方法就會被調用。 (3)這里也有一些其他有用的方法。你可以重寫它們來在運行時控制應用。例如getServletInfo()。 HttpServletRequest 和 HttpServletResponse 是所有doXXX()方法的默認參數(shù)。我們會在后面的章節(jié)里詳細學習這些對象。
參考文章: Servlet 工作原理解析 Servlet簡介|菜鳥教程
新聞熱點
疑難解答