對于一個Java人員來說,Servlet知識很重要,不僅企業(yè)面試時會問,在日常的項目中也有著舉足輕重的作用。接下來的鄭州Java學(xué)習(xí)進(jìn)階課,小編就給大家簡單匯總Servlet入門知識。
Servlet是什么?
Servlet是基于Java技術(shù)的Web組件,由容器管理并產(chǎn)生動態(tài)的內(nèi)容。Servlet與客戶端通過Servlet容器實現(xiàn)的請求/響應(yīng)模型進(jìn)行交互。注意:Servlet不是從命令行啟動的,而是由包含Java虛擬機(jī)的Web服務(wù)器進(jìn)行加載。
Servlet的特點是什么?
1)高效。在服務(wù)器上僅有一個Java虛擬機(jī)在運(yùn)行,它的優(yōu)勢在于當(dāng)多個來自客戶端的請求進(jìn)行訪問時,Servlet為每個請求分配一個線程而不是進(jìn)程。
2)方便。Servlet提供了大量的實用工具例程,例如處理很難完成的HTML表單數(shù)據(jù)、讀取和設(shè)置HTTP頭、處理Cookie和跟蹤會話等。
3)跨平臺。Servlet是用Java類編寫的,它可以在不同的操作系統(tǒng)平臺和不同的應(yīng)用服務(wù)器平臺下運(yùn)行。
4)靈活性和可擴(kuò)展性。采用Servlet開發(fā)的Web應(yīng)用程序,由于Java類的繼承性、構(gòu)造函數(shù)等特點,使得其應(yīng)用靈活,可隨意擴(kuò)展。
5)共享數(shù)據(jù)。Servlet之間通過共享數(shù)據(jù)可以很容易地實現(xiàn)數(shù)據(jù)庫連接池。它能方便地實現(xiàn)管理用戶請求,簡化Session和獲取前一頁面信息的操作。
6)安全。有些CGI版本有明顯的安全弱點。即使是使用最新的標(biāo)準(zhǔn)和PERL等語言,系統(tǒng)也沒有基本安全框架。而Java定義有完整的安全機(jī)制,包括SSL\CA認(rèn)證、安全政策等規(guī)范。
Servlet的功能是什么?
當(dāng)啟動Web服務(wù)器或客戶機(jī)第一次請求服務(wù)時,可以自動裝入Servlet,之后,Servlet繼續(xù)運(yùn)行直到其他客戶機(jī)發(fā)出請求。Servlet的功能涉及范圍很廣:
1)創(chuàng)建并返回一個包含基于客戶請求性質(zhì)的動態(tài)內(nèi)容的完整的HTML頁面;
2)創(chuàng)建可嵌入到現(xiàn)有HTML頁面中的一部分HTML頁面(HTML片段);
3)與其他服務(wù)器資源(包括數(shù)據(jù)庫和基于Java的應(yīng)用程序)進(jìn)行通信;
4)用多個客戶機(jī)處理連接,接收多個客戶機(jī)的輸入,并將結(jié)果傳遞到多個客戶機(jī)上,例如,Servlet可以是多參與者的游戲服務(wù)器;
5)當(dāng)允許在單連接方式下傳送數(shù)據(jù)的情況下,在瀏覽器上打開服務(wù)器至applet的新連接,并將該連接保持在打開狀態(tài);當(dāng)允許客戶機(jī)和服務(wù)器簡單、高效地執(zhí)行會話的情況下,applet也可以啟動客戶瀏覽器和服務(wù)器之間的連接,可以通過定制協(xié)議進(jìn)行通信;
6)將訂制的處理提供給所有服務(wù)器的標(biāo)準(zhǔn)程序。
Servlet層級關(guān)系:
Servlet(接口)-->GenericServlet(抽象類,與協(xié)議無關(guān)的Servlet)-->HttpServlet(抽象類,實現(xiàn)了Http協(xié)議的Servlet)-->Custom Servlet(自定義的Servlet)
Servlet的工作過程:
1)在客戶端對web服務(wù)器發(fā)出請求。
2)web服務(wù)器接收到請求后將其發(fā)送給Servlet。
3)Servlet容器為此產(chǎn)生一個實例對象并調(diào)用ServletAPI中相應(yīng)的方法來對客戶端HTTP請求進(jìn)行處理,然后將處理的響應(yīng)結(jié)果返回給WEB服務(wù)器。
4)web服務(wù)器將從Servlet實例對象中收到的響應(yīng)結(jié)構(gòu)發(fā)送回客戶端。