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