Servlet是一種獨立於平台和協議的服務器端的Java應用程序,可以生成動態的Web頁面
一、概述Servlet是一種獨立於平台和協議的服務器端的Java應用程序,可以生成動態的Web頁面。
Servlet是位於Web 服務器內部的服務器端的Java應用程序,與傳統的從命令行啟動的Java應用程序不同,Servlet由Web服務器進行加載,該Web服務器必須包含支持Servlet的Java虛擬機。
Java Servlet 與 Applet 的比較:
相似之處:
* 它們不是獨立的應用程序,沒有main()方法。
* 它們不是由用戶或程序員調用,而是由另外一個應用程序(容器)調用。
* 它們都有一個生存周期,包含init()和destroy()方法。
不同之處:
* Applet具有很好的圖形界面(AWT),與浏覽器一起,在客戶端運行。
* Servlet 則沒有圖形界面,運行在服務器端。
Java Servlet 與 CGI(Common Gateway Interface) 的比較:
與傳統的CGI和許多其他類似CGI的技術相比,Java Servlet具有更高的效率,更輕易使用,功能更強大,具有更好的可移植性,更節省投資。在未來的技術發展過程中,Servlet有可能徹底取代CGI。
* 高效
在傳統的CGI中,每個請求都要啟動一個新的進程,假如CGI程序本身的執行時間較短,啟動進程所需要的開銷很可能反而超過實際執行時間。而在Servlet中,每個請求由一個輕量級的Java線程處理(而不是重量級的操作系統進程)。
在傳統CGI中,假如有N個並發的對同一CGI程序的請求,則該CGI程序的代碼在內存中重復裝載了N次;而對於Servlet,處理請求的是N個線程,只需要一份Servlet類代碼。在性能優化方面,Servlet也比CGI有著更多的選擇。
* 方便
Servlet提供了大量的實用工具例程,例如自動地解析和解碼Html表單數據、讀取和設置HTTP頭、處理Cookie、跟蹤會話狀態等。
* 功能強大
在Servlet中,許多使用傳統CGI程序很難完成的任務都可以輕松地完成。例如,Servlet能夠直接和Web服務器交互,而普通的CGI程序不能。Servlet還能夠在各個程序之間共享數據,使得數據庫連接池之類的功能很輕易實現。
* 可移植性好
Servlet用Java編寫,Servlet API具有完善的標准。因此,為IPlanet Enterprise Server寫的Servlet無需任何實質上的改動即可移植到Apache、Microsoft IIS或者WebStar。幾乎所有的主流服務器都直接或通過插件支持Servlet。
* 節省投資
不僅有許多廉價甚至免費的Web服務器可供個人或小規模網站使用,而且對於現有的服務器,假如它不支持Servlet的話,要加上這部分功能也往往是免費的(或只需要極少的投資)。
Java Servlet 與 jsp(JavaServer Pages) 的比較:
JavaServer Pages(JSP)是一種實現普通靜態HTML和動態HTML混合編碼的技術,JSP並沒有增加任何本質上不能用Servlet實現的功能。但是,在JSP中編寫靜態HTML更加方便,不必再用println語句來輸出每一行HTML代碼。更重要的是,借助內容和外觀的分離,頁面制作中不同性質的任務可以方便地分開:比如,由頁面設計者進行HTML設計,同時留出供Servlet程序員插入動態內容的空間。