(一)概述:
Servlet 爲建立基於 web 的應用程序提供了基於組件、獨立於平臺的方法,能夠不受 CGI 程序的性能限制。Servlet 有權限訪問全部的 Java API,包括訪問企業級數據庫的 JDBC API。
(二)優點與做用:
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 執行如下主要任務:
*讀取客戶端(瀏覽器)發送的顯式的數據。這包括網頁上的 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。
(三)比較——CGI: CGI:(Common Gateway Interface),簡稱CGI。在物理上是一段程序,運行在服務器上,提供同客戶端HTML頁面的接口。 這樣說大概還很差理解。那麼咱們看一個實際例子:如今的我的主頁上大部分都有一個留言本。留言本的工做是這樣的:先由用戶在客戶端輸入一些信息,如名字之類的東西。接着用戶按一下"留言"(到目前爲止工做都在客戶端),瀏覽器把這些信息傳送到服務器的CGI目錄下特定的cgi程序中,因而cgi程序在服務器上按照預約的方法進行處理。在本例中就是把用戶提交的信息存入指定的文件中。而後cgi程序給客戶端發送一個信息,表示請求的任務已經結束。此時用戶在瀏覽器裏將看到"留言結束"的字樣。整個過程結束。絕大多數的CGI程序被用來解釋處理來自表單的輸入信息,並在服務器產生相應的處理,或將相應的信息反饋給瀏覽器。CGI程序使網頁具備交互功能。 不足:CGI應用開發比較困難,由於它要求程序員有處理參數傳遞的知識,這不是一種通用的技能。CGI不可移植,爲某一特定平臺編寫的CGI應用只能運行於這一環境中。每個CGI應用存在於一個由客戶端請求激活的進程中,而且在請求被服務後被卸載。這種模式將引發很高的內存、CPU開銷,並且在同一進程中不能服務多個客戶。 (四)總結: 歸納來說,Servlet能夠完成和CGI相同的功能。Servlet提供了Java應用程序的全部優點——可移植、穩健、易開發。 --------------------- 做者:殼殼的後宮 來源:CSDN 原文:https://blog.csdn.net/xiaoyao0909/article/details/52078709 版權聲明:本文爲博主原創文章,轉載請附上博文連接!