《Java Web開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第6章 過(guò)濾器與監(jiān)聽(tīng)器_第1頁(yè)
《Java Web開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第6章 過(guò)濾器與監(jiān)聽(tīng)器_第2頁(yè)
《Java Web開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第6章 過(guò)濾器與監(jiān)聽(tīng)器_第3頁(yè)
《Java Web開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第6章 過(guò)濾器與監(jiān)聽(tīng)器_第4頁(yè)
《Java Web開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第6章 過(guò)濾器與監(jiān)聽(tīng)器_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第6章過(guò)濾器與監(jiān)聽(tīng)器學(xué)習(xí)目的與要求本章主要介紹過(guò)濾器與監(jiān)聽(tīng)器的概念、原理以及實(shí)際應(yīng)用。通過(guò)本章的學(xué)習(xí),理解過(guò)濾器與監(jiān)聽(tīng)器的原理,掌握過(guò)濾器與監(jiān)聽(tīng)器的實(shí)際應(yīng)用?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

學(xué)習(xí)目的與要求《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.1Filter類(lèi)與Filter對(duì)象6.2Filter對(duì)象的部署與運(yùn)行6.3過(guò)濾器的實(shí)際應(yīng)用6.4監(jiān)聽(tīng)器的分類(lèi)與創(chuàng)建6.5監(jiān)聽(tīng)器的實(shí)際應(yīng)用——統(tǒng)計(jì)在線(xiàn)用戶(hù)6.1Filter類(lèi)與Filter對(duì)象過(guò)濾器位于服務(wù)器處理請(qǐng)求之前或服務(wù)器響應(yīng)請(qǐng)求之前。也就是說(shuō),它可以過(guò)濾瀏覽器對(duì)服務(wù)器的請(qǐng)求,也可以過(guò)濾服務(wù)器對(duì)瀏覽器的響應(yīng)。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

瀏覽器Web服務(wù)器Servlet處理請(qǐng)求響應(yīng)請(qǐng)求HTTP請(qǐng)求HTTP響應(yīng)過(guò)濾后的請(qǐng)求圖6.1過(guò)濾器過(guò)濾器過(guò)濾器過(guò)濾前的響應(yīng)6.1Filter類(lèi)與Filter對(duì)象編寫(xiě)一個(gè)過(guò)濾器類(lèi)很簡(jiǎn)單,只要實(shí)現(xiàn)jakarta.servlet包中的Filter接口。實(shí)現(xiàn)Filter接口的類(lèi)習(xí)慣地稱(chēng)為一個(gè)Filter類(lèi),這樣的類(lèi)創(chuàng)建的對(duì)象又習(xí)慣地稱(chēng)為Filter對(duì)象。Filter接口與Servlet接口很類(lèi)似,同樣都有init()與destroy()方法,還有一個(gè)doFilter()方法類(lèi)似于Servlet接口的service()方法。 publicvoidinit(FilterConfig

fConfig)throwsServletException publicvoiddoFilter(ServletRequest

request,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException publicvoiddestroy()《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

init(FilterConfigfConfig) publicvoidinit(FilterConfigfConfig)throwsServletException該方法的功能是初始化過(guò)濾器對(duì)象。如果為過(guò)濾器設(shè)置了初始參數(shù),則可以通過(guò)FilterConfig的getInitParameter(StringparamName)方法獲得初始參數(shù)值?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

doFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain) publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException當(dāng)Web服務(wù)器使用Servlet對(duì)象調(diào)用service()方法處理請(qǐng)求前,發(fā)現(xiàn)應(yīng)用了某個(gè)過(guò)濾器時(shí),Web服務(wù)器就會(huì)自動(dòng)調(diào)用該過(guò)濾器的doFilter()方法。在doFilter()方法中有這樣一條語(yǔ)句:chain.doFilter(request,response);如果執(zhí)行了該語(yǔ)句,就會(huì)執(zhí)行下一個(gè)過(guò)濾器,如果沒(méi)有下一個(gè)過(guò)濾器,就返回請(qǐng)求目標(biāo)程序。如果因?yàn)槟硞€(gè)原因沒(méi)有執(zhí)行“chain.doFilter(request,response);”,則請(qǐng)求就不會(huì)繼續(xù)交給以后的過(guò)濾器或請(qǐng)求目標(biāo)程序,這就是所謂的攔截請(qǐng)求?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

destroy()

publicvoiddestroy()當(dāng)Web服務(wù)器終止服務(wù)時(shí),destroy()方法會(huì)被執(zhí)行,使Filter對(duì)象消亡?!纠?-1】在Web項(xiàng)目ch6中,編寫(xiě)一個(gè)簡(jiǎn)單的Filter類(lèi)FirstFilter,F(xiàn)ilter類(lèi)的功能要求:無(wú)論用戶(hù)請(qǐng)求該Web項(xiàng)目的哪個(gè)頁(yè)面或Servlet,都會(huì)在瀏覽器中先出現(xiàn)“首先執(zhí)行過(guò)濾器”這樣的響應(yīng)信息?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

學(xué)習(xí)目的與要求《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.1Filter類(lèi)與Filter對(duì)象6.2Filter對(duì)象的部署與運(yùn)行6.3過(guò)濾器的實(shí)際應(yīng)用6.4監(jiān)聽(tīng)器的分類(lèi)與創(chuàng)建6.5監(jiān)聽(tīng)器的實(shí)際應(yīng)用——統(tǒng)計(jì)在線(xiàn)用戶(hù)6.2.1在web.xml中部署過(guò)濾器<filter> <filter-name>firstFilter</filter-name> <filter-class>filter.FirstFilter</filter-class></filter><filter-mapping> <filter-name>firstFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

2.運(yùn)行Filter只要用戶(hù)請(qǐng)求的URL和<filter-mapping>的子標(biāo)記<url-pattern>指定的模式匹配的話(huà),Web服務(wù)器就會(huì)自動(dòng)調(diào)用該Filter的doFilter()方法。如6.1節(jié)中的FirstFilter過(guò)濾器在web.xml中的<url-pattern>指定值為/*,“/*”代表任何頁(yè)面或Servlet的請(qǐng)求。為了測(cè)試過(guò)濾器,在web項(xiàng)目ch6中新建一個(gè)JSP頁(yè)面test.jsp,運(yùn)行test.jsp顯示如圖6.2的結(jié)果?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.2.2基于注解的方式部署過(guò)濾器從Servlet3.0開(kāi)始提供了注解@WebFilter,使得不再需要在web.xml文件中進(jìn)行Filter的部署描述。但在實(shí)際的Web項(xiàng)目中,不需要大量開(kāi)發(fā)Filter,因此,采用哪種方式部署過(guò)濾器都不太麻煩。@WebFilter用于將一個(gè)類(lèi)聲明為過(guò)濾器,該注解將會(huì)在部署時(shí)被容器處理,容器將根據(jù)具體的屬性配置,將相應(yīng)的類(lèi)部署為過(guò)濾器。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

屬性名類(lèi)

型描

述filterNameString指定過(guò)濾器的name屬性,等價(jià)于<filter-name>。valueString[]該屬性等價(jià)于urlPatterns屬性,但兩個(gè)屬性不能同時(shí)使用。urlPatternsString[]指定一組過(guò)濾器的URL匹配模式。等價(jià)于<url-pattern>標(biāo)簽。servletNamesString[]指定過(guò)濾器將應(yīng)用于哪些Servlet。取值是@WebServlet中的name屬性的取值,或者是web.xml中<servlet-name>的取值。initParamsWebInitParam[]指定一組過(guò)濾器初始化參數(shù),等價(jià)于<init-param>標(biāo)簽。6.2.2基于注解的方式部署過(guò)濾器【例6-2】基于注解的Filter——SecondFilter。@WebFilter(filterName

="secondFilter",urlPatterns={"/*"})publicclassSecondFilterimplementsFilter{}《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.2.3過(guò)濾器的執(zhí)行順序?yàn)榱蓑?yàn)證過(guò)濾器的執(zhí)行順序,新建SecondFilter、ThreeFilter、FourFilter和ZFilter。其中SecondFilter、ThreeFilter和FourFilter使用注解的方式部署,它們的urlPatterns都是"/*";而ZFilter在web.xml中部署,并部署在FirstFilter的前面。從圖6.3可以看出,過(guò)濾器攔截路徑相同時(shí),首先按照<filter-mapping>標(biāo)記在web.xml中出現(xiàn)的先后順序執(zhí)行過(guò)濾器,然后再按照過(guò)濾器類(lèi)名的字典順序執(zhí)行注解的過(guò)濾器?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.2.4實(shí)踐環(huán)節(jié)——過(guò)濾器的初始化參數(shù)給6.2.3節(jié)中的SecondFilter添加初始化參數(shù),并在該過(guò)濾器的init()方法中獲取這些參數(shù)。@WebInitParam注解給過(guò)濾器添加參數(shù)的示例代碼如下:@WebFilter(filterName="xxxFilter",urlPatterns={"/*"},initParams={ @WebInitParam(name="firstParam",value="one"), @WebInitParam(name="secondParam",value="two")})《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

學(xué)習(xí)目的與要求《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.1Filter類(lèi)與Filter對(duì)象6.2Filter對(duì)象的部署與運(yùn)行6.3過(guò)濾器的實(shí)際應(yīng)用6.4監(jiān)聽(tīng)器的分類(lèi)與創(chuàng)建6.5監(jiān)聽(tīng)器的實(shí)際應(yīng)用——統(tǒng)計(jì)在線(xiàn)用戶(hù)6.3.1字符編碼過(guò)濾器在本書(shū)的3.1.3節(jié)中,介紹了中文亂碼的解決方法,其中一種解決方法是:在獲取表單信息之前,使用request對(duì)象調(diào)用setCharacterEncoding(String

code)方法設(shè)置統(tǒng)一字符編碼。使用該方法解決中文亂碼問(wèn)題時(shí),接受參數(shù)的每個(gè)頁(yè)面或Servlet都需要執(zhí)行request.setCharacterEncoding("XXX")語(yǔ)句。為了避免每個(gè)頁(yè)面或Servlet都編寫(xiě)request.setCharacterEncoding("XXX")語(yǔ)句,可以使用過(guò)濾器進(jìn)行字符編碼處理。【例6-3】字符編碼過(guò)濾器——SetCharacterEncodingFilter。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.3.2登錄驗(yàn)證過(guò)濾器在Web項(xiàng)目中,某些頁(yè)面或Servlet只有用戶(hù)登錄成功才能訪(fǎng)問(wèn)。如果直接在應(yīng)用程序每個(gè)相關(guān)的源代碼中進(jìn)行判斷用戶(hù)是否登錄成功,并不是科學(xué)的做法。這時(shí)可以實(shí)現(xiàn)一個(gè)登錄驗(yàn)證過(guò)濾器,不用在每個(gè)相關(guān)的源代碼中驗(yàn)證用戶(hù)是否登錄成功?!纠?-4】按照1.2.2節(jié)的操作步驟,創(chuàng)建一個(gè)Web項(xiàng)目loginValidate,并為loginValidate添加Tomcat依賴(lài)。在該Web項(xiàng)目中至少編寫(xiě)兩個(gè)JSP頁(yè)面:login.jsp與loginSuccess.jsp,一個(gè)Servlet(由LoginServlet.java負(fù)責(zé)創(chuàng)建)。用戶(hù)在login.jsp頁(yè)面中輸入用戶(hù)名和密碼后,提交給Servlet,在Servlet中判斷用戶(hù)名和密碼是否正確,若正確跳轉(zhuǎn)到loginSuccess.jsp,若錯(cuò)誤回到login.jsp頁(yè)面。但該Web項(xiàng)目有另外一個(gè)要求:除了訪(fǎng)問(wèn)login.jsp頁(yè)面和LoginServlet外,別的頁(yè)面或Servlet都不能直接訪(fǎng)問(wèn),必須先登錄成功才能訪(fǎng)問(wèn)。在設(shè)計(jì)這個(gè)Web項(xiàng)目時(shí),編寫(xiě)了一個(gè)登錄驗(yàn)證過(guò)濾器并在該Web項(xiàng)目中使用?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

學(xué)習(xí)目的與要求《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.1Filter類(lèi)與Filter對(duì)象6.2Filter對(duì)象的部署與運(yùn)行6.3過(guò)濾器的實(shí)際應(yīng)用6.4監(jiān)聽(tīng)器的分類(lèi)與創(chuàng)建6.5監(jiān)聽(tīng)器的實(shí)際應(yīng)用——統(tǒng)計(jì)在線(xiàn)用戶(hù)6.4監(jiān)聽(tīng)器的分類(lèi)與創(chuàng)建創(chuàng)建不同功能的監(jiān)聽(tīng)器類(lèi),需要實(shí)現(xiàn)不同的監(jiān)聽(tīng)接口。一個(gè)監(jiān)聽(tīng)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,即可以多種功能的監(jiān)聽(tīng)器一起工作。根據(jù)監(jiān)聽(tīng)的對(duì)象可將監(jiān)聽(tīng)器劃分為:ServletContext對(duì)象監(jiān)聽(tīng)器、HttpSession對(duì)象監(jiān)聽(tīng)器以及ServletRequest對(duì)象監(jiān)聽(tīng)器。根據(jù)監(jiān)聽(tīng)的事件可將監(jiān)聽(tīng)器劃分為:對(duì)象自身的創(chuàng)建和銷(xiāo)毀的監(jiān)聽(tīng)器、對(duì)象中屬性的創(chuàng)建、修改和消除的監(jiān)聽(tīng)器以及session中某個(gè)對(duì)象狀態(tài)變化的監(jiān)聽(tīng)器。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.4.1監(jiān)聽(tīng)對(duì)象自身創(chuàng)建和銷(xiāo)毀的監(jiān)聽(tīng)器HttpSessionListener、ServletContextListener和ServletRequestListener監(jiān)聽(tīng)接口分別監(jiān)聽(tīng)session、context和request對(duì)象的創(chuàng)建與銷(xiāo)毀。

HttpSessionListener:監(jiān)聽(tīng)session的創(chuàng)建與銷(xiāo)毀。創(chuàng)建session時(shí)執(zhí)行sessionCreated(HttpSessionEvent

se)方法。超時(shí)或執(zhí)行session.invalidate()時(shí)執(zhí)行sessionDestroyed(HttpSessionEvent

se)方法。該監(jiān)聽(tīng)器可用于統(tǒng)計(jì)在線(xiàn)人數(shù)、記錄訪(fǎng)問(wèn)日志等。

ServletContextListener:監(jiān)聽(tīng)context的創(chuàng)建與銷(xiāo)毀。context代表當(dāng)前Web應(yīng)用程序。服務(wù)器啟動(dòng)時(shí)執(zhí)行contextInitialized(ServletContextEventsce)方法。服務(wù)器關(guān)閉時(shí)執(zhí)行contextDestroyed(ServletContextEvent

sce)方法。該監(jiān)聽(tīng)器可用于啟動(dòng)時(shí)獲取web.xml中配置的初始化參數(shù),可作為定時(shí)器、加載全局屬性對(duì)象、創(chuàng)建全局?jǐn)?shù)據(jù)庫(kù)連接、加載緩存信息等。

ServletRequestListener:監(jiān)聽(tīng)request的創(chuàng)建與銷(xiāo)毀。用戶(hù)每次請(qǐng)求request都將執(zhí)行requestInitialized(ServletRequestEvent

sre)方法。request處理完畢自動(dòng)銷(xiāo)毀前執(zhí)行requestDestroyed(ServletRequestEvent

sre)方法。該監(jiān)聽(tīng)器可用于讀取request參數(shù),記錄訪(fǎng)問(wèn)歷史。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.4.1監(jiān)聽(tīng)對(duì)象自身創(chuàng)建和銷(xiāo)毀的監(jiān)聽(tīng)器【例6-5】在ch6的src目錄下創(chuàng)建一個(gè)名為listener的包,并在包中創(chuàng)建一個(gè)名為MyObjectListener的監(jiān)聽(tīng)器類(lèi),該監(jiān)聽(tīng)器類(lèi)實(shí)現(xiàn)HttpSessionListener、ServletContextListener和ServletRequestListener監(jiān)聽(tīng)接口。在web.xml文件中部署監(jiān)聽(tīng)器,示例代碼如下:<listener>

<listener-class>完整類(lèi)名</listener-class></listener>監(jiān)聽(tīng)器的啟動(dòng)順序是按照web.xml的配置順序來(lái)啟動(dòng);加載順序是按照“監(jiān)聽(tīng)器->過(guò)濾器->Servlet”順序加載?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.4.2監(jiān)聽(tīng)對(duì)象屬性變化的監(jiān)聽(tīng)器監(jiān)聽(tīng)對(duì)象屬性變化的監(jiān)聽(tīng)器,分別為HttpSessionAttributeListener、ServletContextAttributeListener、ServletRequestAttributeListener。此3個(gè)監(jiān)聽(tīng)接口分別用于監(jiān)聽(tīng)session、context和request的屬性變化。當(dāng)向被監(jiān)聽(tīng)對(duì)象中添加、更新、移除屬性時(shí),將分別執(zhí)行attributeAdded、attributeReplaced、attributeRemoved方法?!纠?-6】在ch6的listener包中創(chuàng)建一個(gè)名為MyAttributeListener的監(jiān)聽(tīng)器類(lèi),該監(jiān)聽(tīng)器類(lèi)實(shí)現(xiàn)HttpSessionAttributeListener監(jiān)聽(tīng)接口。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.4.3監(jiān)聽(tīng)session中某個(gè)對(duì)象狀態(tài)變化的監(jiān)聽(tīng)器監(jiān)聽(tīng)綁定到HttpSeesion域中某個(gè)對(duì)象狀態(tài)的事件監(jiān)聽(tīng)器有HttpSessionBindingListener和HttpSessionActivationListener。HttpSession中對(duì)象的狀態(tài)有:綁定→解除綁定,鈍化→活化。綁定,通過(guò)setAttribute保存到session對(duì)象當(dāng)中。解除綁定,通過(guò)removeAttribue去除綁定。鈍化,將session對(duì)象持久化到存儲(chǔ)設(shè)備上?;罨瑢ession對(duì)象從存儲(chǔ)設(shè)備上進(jìn)行恢復(fù)。被實(shí)現(xiàn)鈍化和活化的監(jiān)聽(tīng)器對(duì)象必須實(shí)現(xiàn)Serializable接口,不需要在web.xml中部署。

HttpSessionBindingListener:當(dāng)對(duì)象被放到session里時(shí),執(zhí)行valueBound(HttpSessionBindingEvent

event)方法。當(dāng)對(duì)象被從session里移除時(shí),執(zhí)行valueUnbound(HttpSessionBindingEvent

event)方法。對(duì)象必須實(shí)現(xiàn)該監(jiān)聽(tīng)接口。

HttpSessionActivationListener:當(dāng)session里的對(duì)象被鈍化時(shí),執(zhí)行sessionWillPassivate(HttpSessionEvent

se)方法。當(dāng)對(duì)象被重新加載(活化)時(shí),執(zhí)行sessionDidActivate(HttpSessionEventse)方法。對(duì)象必須實(shí)現(xiàn)該監(jiān)聽(tīng)接口?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

6.4.3監(jiān)聽(tīng)session中某個(gè)對(duì)象狀態(tài)變化的監(jiān)聽(tīng)器【例6-7】在ch6的listener包中創(chuàng)建一個(gè)名為MySeesionListener的監(jiān)聽(tīng)器類(lèi),該監(jiān)聽(tīng)器類(lèi)實(shí)現(xiàn)HttpSessionBindingListener、HttpSessionAc

溫馨提示

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

評(píng)論

0/150

提交評(píng)論