Servlet 為創建基于 web 的應用程序提供了基于組件、獨立于平臺的方法,可以不受 CGI 程序的性能限制。Servlet 有權限訪問所有的 Java API,包括訪問企業級數據庫的 JDBC API。
本教程將講解如何使用 Java Servlet 來開發基于 web 的應用程序。
Servlet是什么?
Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。
使用 Servlet,您可以收集來自網頁表單的用戶輸入,呈現來自數據庫或者其他源的記錄,還可以動態創建網頁。
Java Servlet 通常情況下與使用 CGI(Common Gateway Interface,公共網關接口)實現的程序可以達到異曲同工的效果。但是相比于 CGI,Servlet 有以下幾點優勢:
• 性能明顯更好。
• Servlet 在 Web 服務器的地址空間內執行。這樣它就沒有必要再創建一個單獨的進程來處理每個客戶端請求。
• Servlet 是獨立于平臺的,因為它們是用 Java 編寫的。
• 服務器上的 Java 安全管理器執行了一系列限制,以保護服務器計算機上的資源。因此,Servlet 是可信的。
• Java 類庫的全部功能對 Servlet 來說都是可用的。它可以通過 sockets 和 RMI 機制與 applets、數據庫或其他軟件進行交互。
Servlet 架構
下圖顯示了 Servlet 在 Web 應用程序中的位置。
Servlet 任務
Servlet 執行以下主要任務:
• 讀取客戶端(瀏覽器)發送的顯式的數據。這包括網頁上的 HTML 表單,或者也可以是來自 applet 或自定義的 HTTP 客戶端程序的表單。
• 讀取客戶端(瀏覽器)發送的隱式的 HTTP 請求數據。這包括 cookies、媒體類型和瀏覽器能理解的壓縮格式等等。
• 處理數據并生成結果。這個過程可能需要訪問數據庫,執行 RMI 或 CORBA 調用,調用 Web 服務,或者直接計算得出對應的響應。
• 發送顯式的數據(即文檔)到客戶端(瀏覽器)。該文檔的格式可以是多種多樣的,包括文本文件(HTML 或 XML)、二進制文件(GIF 圖像)、Excel 等。
• 發送隱式的 HTTP 響應到客戶端(瀏覽器)。這包括告訴瀏覽器或其他客戶端被返回的文檔類型(例如 HTML),設置 cookies 和緩存參數,以及其他類似的任務。
Servlet 包
Java Servlet 是運行在帶有支持 Java Servlet 規范的解釋器的 web 服務器上的 Java 類。
Servlet 可以使用 javax.servlet 和 javax.servlet.http 包創建,它是 Java 企業版的標準組成部分,Java 企業版是支持大型開發項目的 Java 類庫的擴展版本。
這些類實現 Java Servlet 和 JSP 規范。在寫本教程的時候,二者相應的版本分別是 Java Servlet 2.5 和 JSP 2.1。
Java Servlet 就像任何其他的 Java 類一樣已經被創建和編譯。在您安裝 Servlet 包并把它們添加到您的計算機上的 Classpath 類路徑中之后,您就可以通過 JDK 的 Java 編譯器或任何其他編譯器來編譯 Servlet。