Java Servlet與Applet類似之處:java
◆它們不是獨立的應用程序,沒有main()方法。程序員
◆它們不是由用戶或程序員調用,而是由另一個應用程序(容器)調用。數據庫
◆它們都有一個生存週期,包含init()和destroy()方法。瀏覽器
Java Servlet與Applet不一樣之處:性能優化
◆Applet具備很好的圖形界面(AWT),與瀏覽器一塊兒,在客戶端運行。服務器
◆Servlet 則沒有圖形界面,運行在服務器端。併發
Java Servlet 與 CGI(Common Gateway Interface) 的比較:jsp
與傳統的CGI和許多其餘相似CGI的技術相比,Java Servlet具備更高的效率,更容易使用,功能更強大,具備更好的可移植性,更節省投資。在將來的技術發展過程當中,Servlet有可能完全取代CGI。ide
◆高效工具
在傳統的CGI中,每一個請求都要啓動一個新的進程,若是CGI程序自己的執行時間較短,啓動進程所須要的開銷極可能反而超過實際執行時間。而在Servlet中,每一個請求由一個輕量級的Java線程處理(而不是重量級的操做系統進程)http://open.189works.com/product/product.htm。
在傳統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。
◆節省投資
Java Servlet與Applet不只有許多廉價甚至免費的Web服務器可供我的或小規模網站使用,並且對於現有的服務器,若是它不支持Servlet的話,要加上這部分功能也每每是免費的(或只須要極少的投資)。
Java Servlet 與 JSP(JavaServer Pages) 的比較:
JavaServer Pages(JSP)是一種實現普通靜態HTML和動態HTML混合編碼的技術,JSP並無增長任何本質上不能用Servlet實現的功能。可是,在 JSP中編寫靜態HTML更加方便,沒必要再用println語句來輸出每一行HTML代碼。更重要的是,藉助內容和外觀的分離,頁面製做中不一樣性質的任務能夠方便地分開:好比,由頁面設計者進行HTML設計,同時留出供Servlet程序員插入動態內容的空間。
Java Servlet API 2.2 簡介
Java Servlet API 2.2 的類和接口組成兩個Java 包,即:javax.servlet 和 javax.servlet.httphttp://open.189works.com/product/product.htm(還包括javax.servlet.jsp包,不在本篇文章討論範圍以內)。
javax.servlet 包提供了控制 Servlet 生命週期所必需的 Servlet 接口,是編寫 Servlet 時必需要實現的。
javax.servlet.http 包提供了從Servlet 接口派生出的專門用於處理 HTTP 請求的抽象類和通常的工具類。全部的Servlet 對象都要實現Servlet 接口,大多數狀況下是做爲已經實現了Servlet 接口的javax.servlet.GenericServlet 和 javax.servlet.http.HttpServlet 這兩個抽象類的子類來間接實現Servlet 接口。