Servlet定義及原理的淺析
Servlet定義是什么呢?Servlet與Java又是什么關系呢?Servlet是用Java編寫的Server端程序,它與協議和平臺無關。Servlet運行于Java-enabled Web Server中。Java Servlet可以動態地擴展Server的能力,并采用請求-響應模式提供Web服務。
最早支持Servlet技術的是JavaSoft的Java Web Server。此后,一些其它的基于Java的Web Server開始支持標準的Servlet API。
一、Servlet定義之Servlet特點
Servlet是Java技術對CGI編程的回答。Servlet程序在服務器端運行,動態地生成Web頁面。與傳統的CGI和許多其他類似CGI的技術相比,Java Servlet具有更高的效率,更容易使用,功能更強大,具有更好的可移植性,更節省投資(更重要的是, Servlet程序員收入要比Perl程序員高:-)
◆高效
在傳統的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具有完善的標準。因此,為I-Planet Enterprise Server寫的Servlet無需任何實質上的改動即可移植到Apache、Microsoft IIS或者WebStar。幾乎所有的主流服務器都直接或通過插件支持Servlet。
◆節省投資
不僅有許多廉價甚至免費的Web服務器可供個人或小規模網站使用,而且對于現有的服務器,如果它不支持Servlet的話,要加上這部分功能也往往是免費的(或只需要極少的投資)。
二、Servlet定義之Servlet的主要功能
Servlet的主要功能在于交互式地瀏覽和修改數據,生成動態Web內容。這個過程為:
◆客戶端發送請求至服務器端;
◆服務器將請求信息發送至Servlet
◆Servlet生成響應內容并將其傳給Server。響應內容動態生成,通常取決于客戶端的請求
◆服務器將響應返回給客戶端
Servlet看起來像是通常的Java程序。Servlet導入特定的屬于Java Servlet API的包。因為是對象字節碼,可動態地從網絡加載,可以說Servlet對Server就如同Applet對Client一樣,但是,由于 Servlet運行于Server中,它們并不需要一個圖形用戶界面。從這個角度講,Servlet也被稱為Faceless Object。
三、JAVA Servlet的優勢
Servlet可以和其他資源(文件、數據庫、Applet、Java應用程序等)交互,以生成返回給客戶端的響應內容。如果需要,還可以保存請求-響應過程中的信息。
采用Servlet,服務器可以完全授權對本地資源的訪問(如數據庫),并且Servlet自身將會控制外部用戶的訪問數量及訪問性質
Servlet可以是其它服務的客戶端程序,例如,它們可以用于分布式的應用系統中,可以從本地硬盤,或者通過網絡從遠端硬盤激活Servlet。
Servlet可被鏈接(chain)。一個Servlet可以調用另一個或一系列Servlet,即成為它的客戶端。
采用Servlet Tag技術,可以在HTML頁面中動態調用Servlet。
Servlet API與協議無關。它并不對傳遞它的協議有任何假設。
像所有的Java程序一樣,Servlet擁有面向對象Java語言的所有優勢
Servlet提供了Java應用程序的所有優勢——可移植、穩健、易開發。使用Servlet 的Tag技術,Servlet能夠生成嵌于靜態HTML頁面中的動態內容。
一個Servlet被客戶端發送的***個請求激活,然后它將繼續運行于后臺,等待以后的請求。每個請求將生成一個新的線程,而不是一個完整的進程。多個客戶能夠在同一個進程中同時得到服務。一般來說,Servlet進程只是在Web Server卸載時被卸載。
Servlet定義呢不是一句話就說好的概念,那么很多的都是總結和歸納,以上就是本文對于Servlet定義的淺析,希望對你有所幫助。
【編輯推薦】