Servlet 的職責(zé)如下:
(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) 用多個客戶機處理連接,接收多個客戶機的輸入,并將結(jié)果廣播到多個客戶機上。例如, Servlet 可以是多參與者的游戲服務(wù)器。(5) 當(dāng)允許在單連接方式下傳送數(shù)據(jù)的情況下,在瀏覽器上打開服務(wù)器至 applet 的新連接,并將該連接保持在打開狀態(tài)。當(dāng)允許客戶機和服務(wù)器簡單、高效地執(zhí)行會話的情況下, applet 也可以啟動客戶瀏覽器和服務(wù)器之間的連接??梢酝ㄟ^定制協(xié)議或標(biāo)準(zhǔn)(如 IIOP )進(jìn)行通信。
(6) 對特殊的處理采用 MIME 類型過濾數(shù)據(jù),例如圖像轉(zhuǎn)換和服務(wù)器端包括( SSI )。
(7) 將定制的處理提供給所有服務(wù)器的標(biāo)準(zhǔn)例行程序。例如, Servlet 可以修改如何認(rèn)證用戶。
1、Servlet執(zhí)行過程
用戶請求一個Servlet,Servlet容器自動構(gòu)建請求和響應(yīng)對象,然后執(zhí)行Servlet的service()方法,該方法會接收請求和響應(yīng)對象,通過響應(yīng)對象將處理結(jié)果發(fā)送給用戶。
2、怎么請求Servlet
用戶通過一個URL來請求一個Servlet。
3、怎么處理請求
當(dāng)用戶請求Servlet時,容器構(gòu)建ServletRequest對象request,并傳遞給Servlet的Service()方法,Service通過request對象獲取到請求的參數(shù),然后,根據(jù)參數(shù)做出相應(yīng)的處理,通過ServletResponse對象來向客戶端發(fā)送響應(yīng)內(nèi)容。
4、怎么響應(yīng)客戶端
當(dāng)用戶請求一個Servlet時候,容器會自動創(chuàng)建ServletResponse對象response,然后通過response對象向客戶端發(fā)送響應(yīng)內(nèi)容。
5、Servlet的生命周期
a、Servlet的class經(jīng)過部署,并啟動容器
b、(當(dāng)請求該Servlet時候)容器自動創(chuàng)建Servlet對象xServlet,然后xServlet調(diào)用其init()方法。到此,Servlet初始化結(jié)束。
c、一旦客戶端請求該Servlet,xServlet自動調(diào)用service()來處理請求。
d、一旦很長時間都沒有請求該Servlet(或者說該Servlet超時),則容器會將xServlet從容器中清除掉。
servlet是一種獨立于平臺和協(xié)議的服務(wù)器端的Java技術(shù),可以用來生成動態(tài)的Web頁面。與傳統(tǒng)的CGI(計算機圖形接口)和許多其他類似CGI技術(shù)相比,Servlet具有更好的可移植性、更強大的功能,更少的投資,更高的效率,更好的安全性等特點。
Servlet是使用Java Servlet應(yīng)用程序接口(API)及相關(guān)類和方法的Java程序。Java語言能夠?qū)崿F(xiàn)的功能,Servlet基本上都能實現(xiàn)(除了圖形界面之外)。Servlet主要用于處理客戶端傳來的Http請求,并返回一個響應(yīng)。通常所說的Servlet就是指HttpServlet,用于處理Http請求,其能夠處理的請求有doGet()、doPost()、service()等方法。在開發(fā)Servlet時,可以直接繼承javax.servlet.http.HttpServlet。
Servlet應(yīng)用范圍很廣泛,我們現(xiàn)在用的很多流行的框架技術(shù),其最基本的代碼離不開Servelt的支持。
servlet的工作機制如下:
①客戶端(瀏覽器)在地址欄輸入一個URL發(fā)起HTTP請求。
②服務(wù)器根據(jù)URL指定要執(zhí)行的Servlet。
③servlet運行service方法,并給服務(wù)器作出相應(yīng)。
④服務(wù)器接收到了servlet的響應(yīng)數(shù)據(jù),將數(shù)據(jù)返回給請求者。
⑤客戶端接受響應(yīng)數(shù)據(jù),作出展示。
servlet是連接前臺和后臺service層的橋梁,是數(shù)據(jù)的中轉(zhuǎn)站。得到并處理前臺的參數(shù)request.getParameter("x")之后調(diào)用service層進(jìn)行業(yè)務(wù)處理,調(diào)用完后再指定返回到的jsp或者其他操作。
Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務(wù)程序或服務(wù)連接器,用Java編寫的服務(wù)器端程序,具有獨立于平臺和協(xié)議的特性,主要功能在于交互式地瀏覽和生成數(shù)據(jù),生成動態(tài)Web內(nèi)容。
Servlet工作原理:
1、首先簡單解釋一下Servlet接收和響應(yīng)客戶請求的過程,首先客戶發(fā)送一個請求,Servlet是調(diào)用service()方法對請求進(jìn)行響應(yīng)的,通過源代碼可見,service()方法中對請求的方式進(jìn)行了匹配,選擇調(diào)用doGet,doPost等這些方法,然后再進(jìn)入對應(yīng)的方法中調(diào)用邏輯層的方法,實現(xiàn)對客戶的響應(yīng)。
2、每一個自定義的Servlet都必須實現(xiàn)Servlet的接口,Servlet接口中定義了五個方法,其中比較重要的三個方法涉及到Servlet的生命周期,分別是上文提到的init(),service(),destroy()方法。
3、Servlet接口和GenericServlet是不特定于任何協(xié)議的,而HttpServlet是特定于HTTP協(xié)議的類,所以HttpServlet中實現(xiàn)了service()方法,并將請求ServletRequest、ServletResponse 強轉(zhuǎn)為HttpRequest 和 HttpResponse。
servlet是Java Servlet的簡稱,稱為小服務(wù)程序或服務(wù)連接器,用Java編寫的服務(wù)器端程序,具有獨立于平臺和協(xié)議的特性,主要功能在于交互式地瀏覽和生成數(shù)據(jù),生成動態(tài)Web內(nèi)容。
狹義的servlet是指Java語言實現(xiàn)的一個接口,廣義的servlet是指任何實現(xiàn)了這個servlet接口的類,一般情況下,人們將servlet理解為后者。
servlet運行于支持Java的應(yīng)用服務(wù)器中。從原理上講,servlet可以響應(yīng)任何類型的請求,但絕大多數(shù)情況下servlet只用來擴展基于HTTP協(xié)議的Web服務(wù)器。
最早支持servlet標(biāo)準(zhǔn)的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web服務(wù)器開始支持標(biāo)準(zhǔn)的servlet。
1、init() 方法
在 Servlet 的生命期中,僅執(zhí)行一次 init() 方法。它是在服務(wù)器裝入 Servlet 時執(zhí)行的。 可以配置服務(wù)器,以在啟動服務(wù)器或客戶機首次訪問 Servlet 時裝入 Servlet。 無論有多少客戶機訪問 Servlet,都不會重復(fù)執(zhí)行 init() 。
缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法來覆蓋它,典型的是管理服務(wù)器端資源。
2、service() 方法
service() 方法是 Servlet 的核心。每當(dāng)一個客戶請求一個HttpServlet 對象,該對象的service() 方法就要被調(diào)用,而且傳遞給這個方法一個"請求"(ServletRequest)對象和一個"響應(yīng)"(ServletResponse)對象作為參數(shù)。 在 HttpServlet 中已存在 service() 方法。缺省的服務(wù)功能是調(diào)用與 HTTP 請求的方法相應(yīng)的 do 功能。
3、doGet() 方法
當(dāng)一個客戶通過 HTML 表單發(fā)出一個 HTTP GET 請求或直接請求一個 URL 時,doGet() 方法被調(diào)用。與 GET 請求相關(guān)的參數(shù)添加到 URL 的后面,并與這個請求一起發(fā)送。當(dāng)不會修改服務(wù)器端的數(shù)據(jù)時,應(yīng)該使用 doGet() 方法。
4、doPost() 方法
當(dāng)一個客戶通過 HTML 表單發(fā)出一個 HTTP POST 請求時,doPost() 方法被調(diào)用。與 POST 請求相關(guān)的參數(shù)作為一個單獨的 HTTP 請求從瀏覽器發(fā)送到服務(wù)器。當(dāng)需要修改服務(wù)器端的數(shù)據(jù)時,應(yīng)該使用 doPost() 方法。
5、destroy() 方法
destroy() 方法僅執(zhí)行一次,即在服務(wù)器停止且卸裝 Servlet 時執(zhí)行該方法。典型的,將 Servlet 作為服務(wù)器進(jìn)程的一部分來關(guān)閉。缺省的 destroy() 方法通常是符合要求的,但也可以覆蓋它,典型的是管理服務(wù)器端資源。
6、getServletConfig() 方法
getServletConfig() 方法返回一個 ServletConfig 對象,該對象用來返回初始化參數(shù)和 ServletContext。ServletContext 接口提供有關(guān) servlet 的環(huán)境信息。
7、getServletInfo() 方法
getServletInfo() 方法是一個可選的方法,它提供有關(guān) servlet 的信息,如作者、版本、版權(quán)。
一個用戶登錄網(wǎng)站使用過程中只產(chǎn)生一個session,request.getSession();不管在哪個地方獲取都是同一個,里面所放的對象屬性也是一樣的,這個sessin可以就代表目前用戶對話