Servlet核心技術(shù).ppt

上傳人:sh****n 文檔編號(hào):13560932 上傳時(shí)間:2020-06-22 格式:PPT 頁數(shù):52 大小:558.81KB
收藏 版權(quán)申訴 舉報(bào) 下載
Servlet核心技術(shù).ppt_第1頁
第1頁 / 共52頁
Servlet核心技術(shù).ppt_第2頁
第2頁 / 共52頁
Servlet核心技術(shù).ppt_第3頁
第3頁 / 共52頁

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《Servlet核心技術(shù).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《Servlet核心技術(shù).ppt(52頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、第6章 Servlet核心技術(shù),6.1 Servlet基礎(chǔ),6.2 Servlet生命周期,6.3 使用Servlet,6.4 獲取運(yùn)行環(huán)境信息,6.5 Servlet中會(huì)話設(shè)置,6.6 Servlet中異常設(shè)置,6.7 Servlet過濾器,6.8 Servlet監(jiān)聽器,6.1 Servlet基礎(chǔ),6.1.1 Servlet技術(shù)功能,6.1.2 Servlet特征,Servlet是1997年由Sun和其它的幾個(gè)公司提出的一項(xiàng)技術(shù),使用該技術(shù)能將HTTP請求和響應(yīng)封裝在標(biāo)準(zhǔn)Java類中來實(shí)現(xiàn)各種Web應(yīng)用方案。Servlet是使用Java語言編寫的服務(wù)器端程序,它能夠接受客戶端的請求并產(chǎn)生響應(yīng)

2、。與常規(guī)的CGI程序相比,Servlet具有更好的可移植性和安全性、以及更強(qiáng)大的功能等特點(diǎn)。,返回,Servlet是對(duì)支持Java的服務(wù)器的一般擴(kuò)充,它最常見的用途就是擴(kuò)展Web服務(wù)器,即:每當(dāng)請求到達(dá)服務(wù)器時(shí),Servlet負(fù)責(zé)對(duì)請求做出相應(yīng)的響應(yīng)。Servlet最常見的功能包括以下幾種:,Servlet技術(shù)功能,基于客戶端的響應(yīng),給客戶端生成并返回一個(gè)包含動(dòng)態(tài)內(nèi)容的HTML 頁面。 可生成一個(gè)HTML片段,并能將其嵌入到現(xiàn)有HTML頁面中。 能夠在其內(nèi)部調(diào)用其它的Java資源并與多種數(shù)據(jù)庫進(jìn)行交互。 可同時(shí)與多個(gè)客戶機(jī)進(jìn)行連接,包括接收多個(gè)客戶機(jī)的輸入以及并將 結(jié)果返回給多個(gè)客戶機(jī)。 在不

3、同的情況下,可將服務(wù)器與Applet的連接保持在不同的狀態(tài)。 對(duì)特殊的處理采用MIME類型過濾數(shù)據(jù)。 將定制的處理提供給所有服務(wù)器的標(biāo)準(zhǔn)例行程序。例如,Servlet可以 修改如何認(rèn)證用戶。,返回,Servlet是傳統(tǒng)CGI的替代品,它能夠動(dòng)態(tài)的生成Web頁面,與其他 的動(dòng)態(tài)網(wǎng)頁編程技術(shù)相比,Servlet具有以下幾點(diǎn)非常明顯的特征:,Servlet特征(1),高效性 傳統(tǒng)CGI中,對(duì)每個(gè)請求都要啟動(dòng)一個(gè)新的進(jìn)程,啟動(dòng)進(jìn)程所需要的開銷在有些情況下就可能很大,而Servlet在服務(wù)器上僅有一個(gè)Java虛擬機(jī)在運(yùn)行,每個(gè)Servlet請求都作為持久性進(jìn)程中的一個(gè)單獨(dú)線程得以執(zhí)行,相對(duì)于傳統(tǒng)CGI而

4、言,顯然效率要高得多。 方便性 Servlet提供了大量的實(shí)用工具例程。例如,自動(dòng)解析和編碼HTML表單數(shù)據(jù)、讀取和設(shè)置HTTP頭、處理Cookie、跟蹤會(huì)話等等。 功能強(qiáng)大 許多傳統(tǒng)CGI程序很難完成的工作使用Servlet就可輕松完成。例如Serlet能夠直接和Web服務(wù)器交互,而普通的CGI程序則不能。Servlet還能夠在各個(gè)應(yīng)用程序之間共享數(shù)據(jù),使得數(shù)據(jù)庫連接池之類的功能很容易實(shí)現(xiàn)。,Servlet特征(2),跨平臺(tái)性 Servlet采用Java語言編寫,在有Java運(yùn)行環(huán)境的任何操作系統(tǒng)上都可運(yùn)行。 成本低 許多廉價(jià)甚至免費(fèi)的Web服務(wù)器可供個(gè)人或小規(guī)模網(wǎng)站使用,而且對(duì)于現(xiàn)有的服務(wù)

5、器,即使它不支持Servlet,要加上這部分功能也往往是免費(fèi)的(或只需要極少的投資)。 可擴(kuò)展性 Servlet采用Java語言編寫,而且得到了廣泛的支持,因此基于Servlet的應(yīng)用具有很好的擴(kuò)展性。,返回,6.2 Servlet生命周期,6.2.1 加載并初始化Servlet,6.2.2 處理客戶端請求,6.2.3 卸載Servlet,Servlet的生命周期如圖所示:,返回,加載并初始化Servlet,Servlet加載和實(shí)例化是由容器來負(fù)責(zé)完成的。加載和實(shí)例化Servlet其實(shí)指的是將Servlet類載入JVM(Java虛擬機(jī))中并初始化。將Servlet類載入JVM中的時(shí)機(jī)存在一下3

6、種可能:,當(dāng)服務(wù)器啟動(dòng)時(shí)。 瀏覽器第一次接收請求時(shí)。 根據(jù)管理員要求。,當(dāng)服務(wù)器啟動(dòng)時(shí),首先容器會(huì)定位Servlet類,然后加載它,容器加載Servle類以后,就會(huì)實(shí)例化該類的一個(gè)或者可能多個(gè)實(shí)例,Servlet被實(shí)例化后,容器會(huì)在客戶端請求以前首先初始化它,其方式就是調(diào)用它的init()方法,并傳遞實(shí)現(xiàn)ServletConfig接口的對(duì)象。執(zhí)行完init()方法后,Servlet就會(huì)處于“已初始化”狀態(tài)。,在初始化階段,Servlet實(shí)例可能會(huì)拋出ServletException異?;騏navailableException 異常。,返回,處理客戶端請求,Servlet初始化完畢以后,就可以

7、用來處理客戶端的請求了。當(dāng)客戶端發(fā)來請求時(shí),容器會(huì)首先為請求創(chuàng)建一個(gè)ServletRequest對(duì)象和ServletResponse對(duì)象,其中ServletRequest代表請求對(duì)象,ServletResponse代表響應(yīng)對(duì)象。然后會(huì)調(diào)用service()方法,并把請求和響應(yīng)對(duì)象作為參數(shù)傳遞,從而把請求委托給Servlet。在每次請求中,ServletRequest對(duì)象負(fù)責(zé)接受請求,ServletResponse對(duì)象負(fù)責(zé)響應(yīng)請求。,在HTTP請求的情況下,容器會(huì)調(diào)用與HTTP請求的方法相應(yīng)的doXXX()方法,例如,若HTTP請求的方式為GET,容器會(huì)調(diào)用doGet()方法,若HTTP請求的方

8、式為POST,容器會(huì)調(diào)用doPost()方法。,Servlet在處理客戶端請求的時(shí)候有可能會(huì)拋出ServletException異?;蛘遀navailableException異常。,返回,卸載Servlet,Servlet的卸載是由容器定義和實(shí)現(xiàn)的,因?yàn)橘Y源回收或其他原因,當(dāng)Servlet需要銷毀時(shí),容器會(huì)在所有Servlet的service()線程完成之后(或在容器規(guī)定時(shí)間后)調(diào)用Servlet的destroy()方法,以此來釋放系統(tǒng)資源,比如數(shù)據(jù)庫的連接等等。 在destroy()方法調(diào)用之后,容器會(huì)釋放Servlet實(shí)例,該實(shí)例隨后會(huì)被Java的垃圾收集器所回收。如果再次需要這個(gè)Ser

9、vlet處理請求,Servlet容器會(huì)創(chuàng)建一個(gè)新的Servlet實(shí)例。,返回,6.3 使用Servlet,6.3.1 認(rèn)識(shí)第一個(gè)Servlet,6.3.2 使用HttpServlet,在應(yīng)用程序中,所有的Servlet都必須直接或者間接地實(shí)現(xiàn)javax.servlet.Servlet接口,而我們在開發(fā)過程中最常使用的則是擴(kuò)展javax.servlet.Servlet接口的實(shí)現(xiàn)類javax.servlet.GenericServlet和其子類javax.servlet.http.HttpServlet。,返回,認(rèn)識(shí)第一個(gè)Servlet (1),一個(gè)普通的Servlet只需擴(kuò)展javax.serv

10、let.GenericServlet即可,GenericServlet類定義了一個(gè)普通的、協(xié)議無關(guān)的Servlet,使用GenericServlet類可使編寫Servlet變得簡單。例如,創(chuàng)建一個(gè)簡單的Servlet,主要代碼如下:,public class ServletSample extends GenericServlet public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException response.setCharacterEncod

11、ing(GBK); /設(shè)置響應(yīng)的編碼類型為GBK PrintWriter out=response.getWriter(); /獲取輸出對(duì)象 out.println(); out.println(這是第一個(gè)Servlet的例子); out.println(); out.close();/關(guān)閉輸出對(duì)象 ,認(rèn)識(shí)第一個(gè)Servlet (2),配置web.xml文件,通過元素和元素實(shí)現(xiàn),其中元素用來定義,元素用來為Servlet配置映射路徑。, ServletSample sunyang.ServletSample ServletSample /servlet ,程序的運(yùn)行結(jié)果如圖所示:,返回,使用H

12、ttpServlet (1),創(chuàng)建用于Web的Servlet,需要擴(kuò)展javax.servlet.http.HttpServlet。HttpServlet可用于處理HTTP請求,例如,創(chuàng)建用于Web的Servlet:,使用HttpServlet (2),配置web.xml文件, ServletSample sunyang.HttpServletSample ServletSample /httpServlet ,程序的運(yùn)行結(jié)果如圖所示:,返回,6.4 獲取運(yùn)行環(huán)境信息,6.4.1 獲取Servlet信息,6.4.2 獲取服務(wù)器端信息,6.4.3 獲取客戶端信息,運(yùn)行環(huán)境信息包括Servlet信

13、息、服務(wù)器端信息和客戶端信息。,返回,獲取Servlet信息 (1),Servlet信息包括Servlet的初始化參數(shù)、Servlet的初始化參數(shù)名和Servlet名稱,這些信息通常都是配置在web.xml中的,可通過javax.servlet.ServletConfig接口中定義的方法來獲取。,1. 獲取Servlet的初始化參數(shù),在Web.xml文件中,元素的相關(guān)配置代表Servlet的初始化參數(shù),在Servlet中這些參數(shù)的獲取是通過ServletConfig接口的getInitParameter()方法來完成的,getInitParameter()方法的語法格式如下:,public S

14、tring getInitParameter(String name),語句中,參數(shù)name為元素的值。getInitParameter()方法的返回值為元素的值。,獲取Servlet信息 (2),2獲取Servlet初始化參數(shù)名,在web.xml文件中,元素的值即為Servlet初始化參數(shù)名。獲取Servlet初始化參數(shù)名通過ServletConfig接口的getInitParameterNames()方法來完成,該方法的語法格式如下:,public Enumeration getInitParameterNames(),getInitParameterNames()方法的返回值為一個(gè)枚舉對(duì)

15、象(Enumeration),和getInitParameter()方法一樣,該方法也可在GenericServlet的子類中直接調(diào)用。,獲取Servlet信息 (3),3獲取Servlet名稱,可通過ServletConfig接口的getServletName()方法來獲取Servlet在web.xml文件中的注冊名稱,該方法的語法格式如下:,public String getServletName(),getServletName()方法的返回值為元素的值,若Servlet未注冊,則返回類名。,返回,獲取服務(wù)器端信息(1),服務(wù)器端信息包括服務(wù)器名、服務(wù)器端口號(hào)、服務(wù)器的屬性信息等,Ser

16、vlet通過ServletContext和ServletRequest接口提供的相關(guān)方法可獲取這些服務(wù)器端信息,這些方法的名稱及其作用如表所示:,獲取服務(wù)器端信息(2),應(yīng)用舉例:Servlet主要代碼如下:,獲取服務(wù)器端信息(3),在XML文件中配置之后,運(yùn)行結(jié)果如圖所示:,返回,獲取客戶端信息(1),客戶端信息包括客戶端主機(jī)名、客戶端IP地址、客戶端端口號(hào)、客戶端的請求參數(shù)等,Servlet通過ServletRequest接口或其子接口HttpServletRequest提供的相關(guān)方法可獲取客戶端信息,這些方法的名稱及其作用如表所示:,獲取客戶端信息(2),實(shí)例:Servlet主要代碼如下

17、:,獲取客戶端信息(3),配置Web.xml文件,運(yùn)行結(jié)果如圖所示:,返回,6.5 Servlet中會(huì)話設(shè)置,6.5.1 獲取HttpSession對(duì)象,6.5.2 在HttpSession對(duì)象中保存數(shù)據(jù),6.5.3 在HttpSession對(duì)象中讀取數(shù)據(jù),返回,獲取HttpSession對(duì)象,當(dāng)需要為客戶端建立session時(shí),Servlet容器會(huì)給每一個(gè)用戶建立一個(gè)HttpSession對(duì)象。獲取HttpSession對(duì)象的方式是通過調(diào)用HttpServletRequest 接口提供的以下兩個(gè)方法:,public HttpSession getSession() public HttpSe

18、ssion getSession(Boolean create),使用無參數(shù)的getSession()方法會(huì)獲取一個(gè)HttpSession對(duì)象,而對(duì)于帶參數(shù)的getSession()方法,如果當(dāng)前請求不屬于任何會(huì)話,而且參數(shù)create值為true,則創(chuàng)建一個(gè)新會(huì)話,否則返回null,此后所有來自同一個(gè)的請求都屬于這個(gè)會(huì)話。,返回,在HttpSession對(duì)象中保存數(shù)據(jù),獲取到HttpSession對(duì)象后,通過HttpSession對(duì)象的setAttribute()方法通過綁定一對(duì)名字/值數(shù)據(jù),可將相關(guān)數(shù)據(jù)保存到當(dāng)前會(huì)話中,如果會(huì)話中已經(jīng)存在該名字則替換它,setAttribute()方法的語

19、法格式如下:,public void setAttribute(String name,Object value),參數(shù)name是綁定到會(huì)話中的屬性名稱,參數(shù)value是屬性的值。,返回,在HttpSession對(duì)象中讀取數(shù)據(jù),HttpSession提供的getAttribute()方法可讀取存儲(chǔ)在會(huì)話中的對(duì)象,該方法的語法格式如下:,public Object getAttribute(String name),參數(shù)name的值為setAttribute(String name,Object value)方法中設(shè)置的name的值。,返回,6.6 Servlet中異常設(shè)置(1),在Servle

20、t中,可使用兩種處理異常的方式:,在try/catch語句的catch語句塊中直接生成并輸出異常信息的 頁面,或者將異常轉(zhuǎn)發(fā)到異常處理的Servlet或JSP頁面中。 在web.xml文件中通過元素指定異常處理。,第一種方式和普通的Java類中處理異常的方式類似,第二種方式則是由Servle規(guī)范提出的,其優(yōu)點(diǎn)就是這種處理方式屬于整個(gè)Web程序的異常處理,它使得Web程序以一種統(tǒng)一的方式在不同的服務(wù)器中顯示異常信息。,下面看一個(gè)實(shí)例:,6.6 Servlet中異常設(shè)置(2),(1)創(chuàng)建兩個(gè)JSP頁面,名稱分別為“exception.jsp”和“notFind.jsp”,其中exception.j

21、sp用來處理數(shù)組下標(biāo)越界的異常,notFind.jsp用來處理404錯(cuò)誤代碼 。, 數(shù)組下標(biāo)越界異常頁面 請求中出現(xiàn)數(shù)組下標(biāo)越界異常 , 404錯(cuò)誤處理頁面 當(dāng)前請求的頁面不存在 ,notFind.jsp,exception.jsp,6.6 Servlet中異常設(shè)置(3),(2)創(chuàng)建Servlet類ExceptionServlet.ava,該類可產(chǎn)生一個(gè)數(shù)組下標(biāo)越界異常,代碼如下:,public class ExceptionServlet extends HttpServlet protected void doGet(HttpServletRequest req, HttpServletR

22、esponse resp) throws ServletException, IOException this.doPost(req, resp); protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException int num=new int2; num3=0; /數(shù)組下標(biāo)越界 ,6.6 Servlet中異常設(shè)置(4),(3)在web.xml中配置類ExceptionServlet和元素:,6.6 Servlet中異常設(shè)置(5),(4)運(yùn)行

23、結(jié)果,當(dāng)請求ExceptionServlet時(shí),則出現(xiàn)如圖1所示的頁面:,當(dāng)請求一個(gè)不存在的頁面時(shí),則出現(xiàn)如圖2所示的頁面:,圖1,圖2,返回,6.7 Servlet過濾器,6.7.1 Servlet過濾器工作原理,6.7.2 Servlet過濾器配置,6.7.3 Servlet過濾器典型應(yīng)用,返回,Servlet過濾器工作原理,Servlet過濾器其實(shí)就是一種小型的、可插入的Web組件,它能夠?qū)ervlet容器的請求和響應(yīng)進(jìn)行攔截和處理,不能生成請求和響應(yīng)。,Servlet過濾器介于與之相關(guān)的Servlet或JSP頁面與客戶端之間,工作原理:當(dāng)某個(gè)資源與Servlet過濾器關(guān)聯(lián)后,對(duì)該資源

24、的所有請求都會(huì)經(jīng)過Servlet過濾器,Servlet過濾器在Servlet被調(diào)用之前會(huì)檢查請求對(duì)象(Request對(duì)象),并決定是將請求轉(zhuǎn)發(fā)給過濾器鏈中的下一個(gè)資源還是中止該請求并響應(yīng)用戶。若請求被轉(zhuǎn)發(fā)給過濾器鏈中的下一個(gè)資源處理后,Servlet過濾器會(huì)檢查響應(yīng)對(duì)象(Response對(duì)象),進(jìn)行處理后返回給用戶,其工作原理如圖所示:,返回,Servlet過濾器配置 (1),配置Servlet過濾器包括下面兩個(gè)步驟:,(1)命名Servlet過濾器和指定Servlet 過濾器相應(yīng)的實(shí)現(xiàn)類,并且可選擇指定傳遞至Servlet過濾器的初始化參數(shù)。配置代碼如下:, FilterName packa

25、ge.className ParamName1 ParamValue1 ParamName1 ParamValue1 ,Servlet過濾器配置 (2),(2)將Servlet 過濾器映射至 URL 或 Servlet,這是通過元素來實(shí)現(xiàn)的。將Servlet 過濾器映射至 URL的配置代碼如下:, FilterName /path ,元素和元素的子元素一致。元素指定了過濾器的映射路徑,Servlet過濾器還可映射至Servlet :, FilterName ServletName ,元素和元素的子元素一致。元素指定過濾器映射的Servlet的名稱,返回,Servlet過濾器典型應(yīng)用(1),創(chuàng)建

26、過濾器須實(shí)現(xiàn)javax.servlet.Filter接口,該接口內(nèi)定義了3個(gè)方法:,init(FilterConfig config):用于初始化過濾器,并其內(nèi)獲取web.xml 文件中配置的過濾器初始化參數(shù)。 doFilter(ServletRequest reg, ServletResponse res,FilterChain chain): 用于進(jìn)行過濾操作,該方法的第一個(gè)參數(shù)為ServletRequest對(duì)象, 此對(duì)象給過濾器提供了對(duì)進(jìn)入的信息(包括表單數(shù)據(jù)、Cookie和 HTTP請求頭)的完全訪問;第二個(gè)參數(shù)為ServletResponse,用于 響應(yīng)使用ServletReques

27、t對(duì)象訪問的信息,通常在簡單的過濾器中 忽略此參數(shù);最后一個(gè)參數(shù)為 FilterChain,該參數(shù)用來調(diào)用過濾 器鏈中的下一個(gè)資源。 destroy():用于銷毀過濾器。,Servlet過濾器典型應(yīng)用(2),創(chuàng)建過濾器實(shí)例:,(1)創(chuàng)建Servlet過濾器“IPFilter.java”,它可以過濾用戶的IP地址,以進(jìn)行訪問控制。該過濾器IPFilter的關(guān)鍵代碼如下:,public class IPFilter implements Filter protected FilterConfig filterConfig; protected String filterIP;/需要過濾的IP地址

28、/*初始化過濾器*/ public void init(FilterConfig config) throws ServletException this.filterConfig=config; filterIP=config.getInitParameter(filterIP); /獲取被過濾的IP地址 if(filterIP=null)filterIP=; ,Servlet過濾器典型應(yīng)用(3),/*過濾操作*/ public void doFilter(ServletRequest reg, ServletResponse res, FilterChain chain) throws I

29、OException, ServletException RequestDispatcher reqDispatcher=reg.getRequestDispatcher(error.jsp); String remoteIP=reg.getRemoteAddr();/獲取本地IP地址 if(remoteIP.equals(filterIP)/如果該IP地址被過濾,將轉(zhuǎn)向錯(cuò)誤頁面 reqDispatcher.forward(reg, res); else /否則將請求轉(zhuǎn)發(fā)給過濾器鏈中的其他資源 chain.doFilter(reg, res); /*銷毀過濾器*/ public void de

30、stroy() this.filterConfig=null; ,Servlet過濾器典型應(yīng)用(4),(2)在web.xml文件中配置IPFilter過濾器,在配置文件中定義了一個(gè)名為filterIP的參數(shù),它的值為192.168.70.82,表示IP地址為192.168.70.82的用戶將被拒絕訪問。在web.xml文件中配置過濾器如下:, IPFilter sunyang.IPFilter filterIP 192.168.70.82 IPFilter /* ,Servlet過濾器典型應(yīng)用(5),(3)建立測試IPFilter過濾器的JSP頁面“success.jsp”和“error.js

31、p”。, 歡迎頁面 歡迎訪問吉林省三揚(yáng)科技咨詢有限 公司! , 拒絕訪問 對(duì)不起,您的IP地址禁止訪問該網(wǎng)站 ,success.jsp,error.jsp,Servlet過濾器典型應(yīng)用(6),(4)運(yùn)行結(jié)果:,當(dāng)IP地址非192.168.70.82的用戶訪問success.jsp時(shí),運(yùn)行結(jié)果 如圖1所示:,當(dāng)IP地址非192.168.70.82的用戶訪問success.jsp時(shí),運(yùn)行結(jié)果 如圖2所示:,圖1,圖2,返回,6.8 Servlet監(jiān)聽器,6.8.1 Servlet監(jiān)聽器工作原理,6.8.2 Servlet監(jiān)聽器類型,6.8.3 Servlet監(jiān)聽器典型應(yīng)用,返回,Servlet監(jiān)聽

32、器工作原理,Servlet監(jiān)聽器是Web應(yīng)用程序事件模型的一部分,當(dāng)Web應(yīng)用中的某些狀態(tài)發(fā)生改變時(shí),Servlet容器就會(huì)產(chǎn)生相應(yīng)的事件,比如創(chuàng)建ServletContext對(duì)象時(shí)觸發(fā)ServletContextEvent事件,創(chuàng)建HttpSession對(duì)象時(shí)觸發(fā)HttpSessionEvent事件,Servlet監(jiān)聽器可接收這些事件,并可以在事件發(fā)生前、發(fā)生后可以做一些必要的處理。,返回,Servlet監(jiān)聽器類型 (1),根據(jù)監(jiān)聽對(duì)象的不同,Servlet2.4規(guī)范將Servlet監(jiān)聽器劃分為以下3種:,ServletContext事件監(jiān)聽器:用于監(jiān)聽?wèi)?yīng)用程序環(huán)境對(duì)象。 HttpSessi

33、on事件監(jiān)聽器:用于監(jiān)聽用戶會(huì)話對(duì)象。 ServletRequest事件監(jiān)聽器:用于監(jiān)聽請求消息對(duì)象。,1ServletContext事件監(jiān)聽器,對(duì)ServletContext對(duì)象進(jìn)行監(jiān)聽的接口有ServletContextAttributeListener和ServletContextListener,其中ServletContextAttributeListener用于監(jiān)聽ServletContext對(duì)象中屬性的改變,包括增加屬性、刪除屬性和修改屬性。ServletContextListener用于監(jiān)聽ServletContext對(duì)象本身的改變,例如ServletContext對(duì)象的創(chuàng)建和

34、銷毀。,Servlet監(jiān)聽器類型 (2),ServletContext事件監(jiān)聽器中的接口和方法如表所示:,Servlet監(jiān)聽器類型 (3),2HttpSession事件監(jiān)聽器,對(duì)會(huì)話對(duì)象進(jìn)行監(jiān)聽的接口有HttpSessionAttributeListener、HttpSessionListener、HttpSessionActivationListener和HttpSessionBindingListener。其中HttpSessionAttributeListener用于監(jiān)聽HttpSession對(duì)象中屬性的改變,例如屬性的增加、刪除和修改。HttpSessionListener用于監(jiān)聽Ht

35、tpSession對(duì)象的改變,例如HttpSession對(duì)象的創(chuàng)建與銷毀,HttpSessionActivationListener用于監(jiān)聽HttpSession對(duì)象的狀態(tài),例如HttpSession對(duì)象是被激活還是被鈍化。HttpSessionBindingListener用于監(jiān)聽HttpSession對(duì)象的綁定狀態(tài),例如添加對(duì)象和移除對(duì)象。,Servlet監(jiān)聽器類型 (4),HttpSession事件監(jiān)聽器中的接口和方法如表所示:,Servlet監(jiān)聽器類型 (5),3ServletRequest事件監(jiān)聽器,對(duì)請求消息對(duì)象進(jìn)行監(jiān)聽的接口有ServletRequestListener和Serv

36、letRequestAttributeListener,其中ServletRequestListener用于監(jiān)聽ServletRequest對(duì)象的變化,例如ServletRequest對(duì)象的創(chuàng)建和銷毀。ServletRequestAttributeListener用于監(jiān)聽ServletRequest對(duì)象中屬性的變化,例如屬性的增加、刪除和修改。ServletRequest事件監(jiān)聽器的接口和方法如表所示:,返回,Servlet監(jiān)聽器典型應(yīng)用(1),(1)創(chuàng)建Servlet監(jiān)聽器OnlineListener,OnlineListener監(jiān)聽器用于監(jiān)聽網(wǎng)站的在線人數(shù),代碼如下:,public cla

37、ss OnlineListener implements HttpSessionListener private int onlineCount;/定義一個(gè)代表在線人數(shù)的變量 public OnlineListener()onlineCount=0; public void sessionCreated(HttpSessionEvent sessionEvent) /會(huì)話創(chuàng)建時(shí)的處理 onlineCount+; sessionEvent.getSession().getServletContext().setAttribute(online,new Integer(onlineCount);

38、public void sessionDestroyed(HttpSessionEvent sessionEvent) /會(huì)話銷毀時(shí)的處理 onlineCount-; sessionEvent.getSession().getServletContext().setAttribute(online,new Integer(onlineCount); ,Servlet監(jiān)聽器典型應(yīng)用(2),(2)在web.xml文件中配置OnlineListener監(jiān)聽器,相關(guān)代碼如下:,(3)創(chuàng)建JSP頁面“online.jsp”,測試OnlineListener監(jiān)聽器,代碼如下:, 使用監(jiān)聽器監(jiān)聽在線人數(shù)的例子 當(dāng)前的在線人數(shù): ,運(yùn)行程序,顯示結(jié)果如圖所示:, sunyang.OnlineListener ,返回,

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔

相關(guān)搜索

關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!