什么是Servlet以及Servlet的優越性
2024-07-21 02:14:08
供稿:網友
中國最大的web開發資源網站及技術社區,
servlet是用java編寫的server端程序,它與協議和平臺無關。servlet運行于java-enabled web server中。java servlet可以動態地擴展server的能力,并采用請求-響應模式提供web服務。
最早支持servlet技術的是javasoft的java web server。此后,一些其它的基于java的web server開始支持標準的servlet api。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。這項操作一般是動態執行的。然而,server通常會提供一個管理的選項,用于在server啟動時強制裝載和初始化特定的servlet。
server創建一個servlet的實例
server調用servlet的init()方法
一個客戶端的請求到達server
server創建一個請求對象
server創建一個響應對象
server激活servlet的service()方法,傳遞請求和響應對象作為參數
service()方法獲得關于請求對象的信息,處理請求,訪問其他資源,獲得需要的信息
service()方法使用響應對象的方法,將響應傳回server,最終到達客戶端。service()方法可能激活其它方法以處理請求,如doget()或dopost()或程序員自己開發的新的方法
對于更多的客戶端請求,server創建新的請求和響應對象,仍然激活此servlet的service()方法,將這兩個對象作為參數傳遞給它。如此重復以上的循環,但無需再次調用init()方法。一般servlet只初始化一次 ,當server不再需要servlet時(一般當server關閉時),server調用servlet的destroy()方法。
在美國,ejb+servlet+jsp幾乎成為電子商務的開發標準。本來 asp 也很有希望,但微軟最近可能把精力都集中在打官司和win2000上, 因此電子商務發展得太少。php由于其模式和一些天生缺陷,毫無希望。 在美國,很少有商業站點用php的。