Java Servlet 及其特點 Servlet是Java技術對CGI編程的回答。Servlet程序在服務器端運行,動态地生(shēng)成Web頁面。與傳統的CGI和許多其他類似CGI的技術相比,Java Servlet具有更高的效率,更容易使用,功能更強大(dà),具有更好的可移植性,更節省投資(zī)(更重要的是, Servlet程序員(yuán)收入要比Perl程序員(yuán)高) 高效。在傳統的CGI中(zhōng),每個請求都要啓動一(yī)個新的進程,如果CGI程序本身的執行時間較短,啓動進程所需要的開(kāi)銷很可能反而超過實際執行時間。而在Servlet中(zhōng),每個請求由一(yī)個輕量級的Java線程處理(而不是重量級的操作系統進程)。 在傳統CGI中(zhōng),如果有N個并發的對同一(yī)CGI程序的請求,則該CGI程序的代碼在内存中(zhōng)重複裝載了N次;而對于Servlet,處理請求的是N個線程,隻需要一(yī)份Servlet類代碼。在性能優化方面,Servlet也比CGI有着更多的選擇,比如緩沖以前的計算結果,保持數據庫連接的活動,等等。 方便。Servlet提供了大(dà)量的實用工(gōng)具例程,例如自動地解析和解碼HTML表單數據、讀取和設置HTTP頭、處理Cookie、跟蹤會話(huà)狀态等。
功能強大(dà)。在Servlet中(zhōng),許多使用傳統CGI程序很難完成的任務都可以輕松地完成。例如,Servlet能夠直接和Web服務器交互,而普通的CGI程序不能。Servlet還能夠在各個程序之間共享數據,使得數據庫連接池之類的功能很容易實現。
可移植性好。Servlet用Java編寫,Servlet API具有完善的标準。因此,爲I-Planet Enterprise Server寫的Servlet無需任何實質上的改動即可移植到Apache、Microsoft IIS或者WebStar。幾乎所有的主流服務器都直接或通過插件支持Servlet。
節省投資(zī)。不僅有許多廉價甚至免費(fèi)的Web服務器可供個人或小(xiǎo)規模網站使用,而且對于現有的服務器,如果它不支持Servlet的話(huà),要加上這部分(fēn)功能也往往是免費(fèi)的(或隻需要極少的投資(zī))。 JSP 及其特點
JavaServer Pages(JSP)是一(yī)種實現普通靜态HTML和動态HTML混合編碼的技術,有關JSP基礎概念的說明請參見《JSP技術簡介 》。 許多由CGI程序生(shēng)成的頁面大(dà)部分(fēn)仍舊(jiù)是靜态HTML,動态内容隻在頁面中(zhōng)有限的幾個部分(fēn)出現。但是包括Servlet在内的大(dà)多數CGI技術及其變種,總是通過程序生(shēng)成整個頁面。JSP使得我(wǒ)(wǒ)們可以分(fēn)别創建這兩個部分(fēn)。例如,下(xià)面就是一(yī)個簡單的JSP頁面: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD><TITLE>歡迎訪問網上商(shāng)店(diàn)</TITLE></HEAD> <BODY> <H1>歡迎</H1> <SMALL>歡迎, <!-- 首次訪問的用戶名字爲"New User" --> <% out.println(Utils.getUserNameFromCookie(request)); %> 要設置帳号信息,請點擊 <A HREF="Account-Settings.html">這裏</A></SMALL> <P> 頁面的其餘内容。. </BODY></HTML> 下(xià)面是JSP 和其他類似或相關技術的一(yī)個簡單比較:
JSP和Active Server Pages(ASP)相比 Microsoft的ASP是一(yī)種和JSP類似的技術。JSP和ASP相比具有兩方面的優點。首先,動态部分(fēn)用Java編寫,而不是VB Script或其他Microsoft語言,不僅功能更強大(dà)而且更易于使用。第二,JSP應用可以移植到其他操作系統和非Microsoft的Web服務器上。 JSP和純Servlet相比
JSP并沒有增加任何本質上不能用Servlet實現的功能。但是,在JSP中(zhōng)編寫靜态HTML更加方便,不必再用 println語句來輸出每一(yī)行HTML代碼。更重要的是,借助内容和外(wài)觀的分(fēn)離(lí),頁面制作中(zhōng)不同性質的任務可以方便地分(fēn)開(kāi):比如,由頁面設計專家進行HTML設計,同時留出供Servlet程序員(yuán)插入動态内容的空間。 JSP和服務器端包含(Server-Side Include,SSI)相比
SSI是一(yī)種受到廣泛支持的在靜态HTML中(zhōng)引入外(wài)部代碼的技術。JSP在這方面的支持更爲完善,因爲它可以用Servlet而不是獨立的程序來生(shēng)成動态内容。另外(wài),SSI實際上隻用于簡單的包含,而不是面向那些能夠處理表單數據、訪問數據庫的“真正的”程序。 JSP和JavaScript相比
JavaScript能夠在客戶端動态地生(shēng)成HTML。雖然JavaScript很有用,但它隻能處理以客戶端環境爲基礎的動态信息。除了Cookie之外(wài),HTTP狀态和表單提交數據對JavaScript來說都是不可用的。另外(wài),由于是在客戶端運行,JavaScript不能訪問服務器端資(zī)源,比如數據庫、目錄信息等等。
|