版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java WebJava Web開發(fā)開發(fā)第五課第五課 FilterFilter與與ListenerListener講師:李玉明講師:李玉明目標(biāo)lFilterlListenerFilterlFilter技術(shù)是servlet2.3增加的功能;lWEB開發(fā)人員通過Filter技術(shù),對(duì)web服務(wù)器管理的所有web資源:例如Jsp,Servlet,靜態(tài)圖片文件或靜態(tài)html文件等進(jìn)行攔截,從而實(shí)現(xiàn)一些特殊的功能。例如實(shí)現(xiàn)URL級(jí)別的權(quán)限訪問控制、過濾敏感詞匯、壓縮響應(yīng)信息等一些高級(jí)功能。示意圖lFilter和servlet的對(duì)應(yīng)關(guān)系為多對(duì)多的關(guān)系:可以配置一個(gè)filter到一個(gè)或多個(gè)servlet;一個(gè)
2、servlet可以有多個(gè)filter。l一個(gè)filter必須實(shí)現(xiàn)javax.servlet.Filter接口并定義三個(gè)方法:1.voidinit(FilterConfigconfig);2.voiddestroy();3.voiddoFilter(ServletRequestreq,ServletResponseres,FilterChainchain)FilterFileter生命周期Filter的創(chuàng)建和銷毀由WEB服務(wù)器負(fù)責(zé)。1在應(yīng)用啟動(dòng)的時(shí)候裝載Filter類(與Servlet的load-on-startup配置效果相同)。2容器創(chuàng)建好Filter對(duì)象,調(diào)用init()方法。接著被Web
3、容器保存進(jìn)應(yīng)用級(jí)的集合容器中,等待用戶訪問資源。3當(dāng)用戶訪問的資源正好被Filter的url-pattern攔截時(shí),容器會(huì)取出Filter類調(diào)用doFilter方法,下次或多次訪問被攔截的資源時(shí),Web容器會(huì)直接取出指定Filter對(duì)象實(shí)例調(diào)用doFilter方法(Filter對(duì)象常駐留Web容器了)。4當(dāng)應(yīng)用服務(wù)被停止或重新裝載了,則會(huì)執(zhí)行Filter的destroy方法,F(xiàn)ilter對(duì)象銷毀。init與destroy方法只會(huì)執(zhí)行一次。示例publicclassLogFilterimplementsFilterFilterConfigconfig;publicvoidinit(FilterC
4、onfigconfig)this.config=config;publicFilterConfiggetFilterConfig()returnconfig;publicvoiddoFilter(ServletRequestreq,ServletResponseres,FilterChainchain)ServletContextcontext=getFilterConfig().getServletContext();longbef=System.currentTimeMillis();chain.doFilter(req,res);/nochainparameterneededherelo
5、ngaft=System.currentTimeMillis();context.log(Requestto+req.getRequestURI()+:+(aft-bef);在web.xml中配置logcom.mrk.LogFilterlogservletname部署注意事項(xiàng)1filter-mapping標(biāo)簽中servlet-name與url-pattern。Filter不僅可以通過url-pattern來指定攔截哪些url匹配的資源。還可以通過servlet-name來指定攔截哪個(gè)指定的servlet(專門為某個(gè)servlet服務(wù)了,servlet-name對(duì)應(yīng)Servlet的相關(guān)配置)部署
6、注意事項(xiàng)2filter-mapping標(biāo)簽中dispatcher。指定過濾器所攔截的資源被Servlet容器調(diào)用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默認(rèn)REQUEST。用戶可以設(shè)置多個(gè)子元素用來指定Filter對(duì)資源的多種調(diào)用方式進(jìn)行攔截。REQUEST:當(dāng)用戶直接訪問頁面時(shí),Web容器將會(huì)調(diào)用過濾器。如果目標(biāo)資源是通過RequestDispatcher的include()或forward()方法訪問或ERROR情況時(shí),那么該過濾器就不會(huì)被調(diào)用。INCLUDE:如果目標(biāo)資源是通過RequestDispatcher的include()方法訪問時(shí),則過濾器
7、被調(diào)用。除此之外,不會(huì)被調(diào)用。FORWARD:如果目標(biāo)資源是通過RequestDispatcher的forward()方法訪問時(shí),則過濾器將被調(diào)用,除此之外,不會(huì)被調(diào)用。ERROR:在跳轉(zhuǎn)到error.jsp時(shí),若過濾器配置了ERROR的dispather那么則會(huì)攔截,否則不會(huì)攔截。Listenerl目前Servlet中提供了兩類6種事件的觀察者接口:4個(gè)EventListeners類型接口ServletContextAttributeListenerServletRequestAttributeListenerServletRequestListenerHttpSessionAttribut
8、eListener2個(gè)LifecycleListeners類型接口ServletContextListenerHttpSessionListener。用HttpSessionListener統(tǒng)計(jì)在線用戶數(shù)l思考:當(dāng)一個(gè)用戶登入一個(gè)WEB應(yīng)用時(shí),就開始一個(gè)會(huì)話;當(dāng)會(huì)話被銷毀,則表示用戶離開了WEB應(yīng)用。publicclassOnlineCounterListenerimplementsHttpSessionListenerpublicvoidsessionCreated(HttpSessionEventevent)HttpSessionsession=event.getSession();Ser
9、vletContextcontext=session.getServletContext();Integercount=(Integer)context.getAttribute(count);if(null=count)count=newInteger(1);elsecount=newInteger(count+1);context.setAttribute(count,count);session.setMaxInactiveInterval(60);System.out.println(Anewsessioniscreated.sessionidis+session.getId();pu
10、blicvoidsessionDestroyed(HttpSessionEventevent)HttpSessionsession=event.getSession();ServletContextcontext=session.getServletContext();Integercount=(Integer)context.getAttribute(count);if(null=count)return;elsecount=newInteger(count-1);context.setAttribute(count,count);/session.setMaxInactiveInterva
11、l(60);System.out.println(Anewsessionistobedestroyed.sessionidis+session.getId();Listener.jsp當(dāng)前在線人數(shù)為:Web.xmlcom.mrk.listener.OnlineCounterListener用HttpSessionBindingListeners統(tǒng)計(jì)在線用戶人數(shù)l單例類OnlineUsers:表示在線用戶名單lUser類實(shí)現(xiàn)了HttpSessionBindingListeners接口(不需要在web.xml中注冊(cè))publicclassOnlineUsersprivatestaticfinalO
12、nlineUsersonlineUsers=newOnlineUsers();privateListusers=newArrayList();publicstaticOnlineUsersgetInstance() returnonlineUsers;publicvoidadd(Stringname)users.add(name);publicvoidremove(Stringname)users.remove(name);publicListgetUsers() returnusers;publicintgetCount() returnusers.size();publicclassUse
13、rimplementsHttpSessionBindingListenerprivateOnlineUsersonlineUsers=OnlineUsers.getInstance();privateStringname=null;publicUser(Stringname) =name;publicvoidsetName(Stringname) =name;publicStringgetName() ;publicvoidvalueBound(HttpSessionBindingEventevent)onlineUsers.add(name);System.out.println(name+isboundwithasession);publicvoidvalueUnbound(HttpSessionBindingEventevent)onlineUsers.remove(name);System.out.println(name+isunboundwithasess
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國川菜餐飲行業(yè)資本規(guī)劃與股權(quán)融資戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國新型煙草行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 建設(shè)工程資料歸檔規(guī)范
- 2024年月亮灣教案
- 石門縣黨建知識(shí)培訓(xùn)課件
- 吉林省扶余市(一實(shí)驗(yàn)、二實(shí)驗(yàn))2023-2024學(xué)年九年級(jí)上學(xué)期期末化學(xué)測(cè)試卷
- 現(xiàn)代企業(yè)制度的局限性與大型企業(yè)經(jīng)營模式
- 二零二五年度廢棄塑料清運(yùn)及資源化利用合同3篇
- 醫(yī)院醫(yī)患溝通技巧培訓(xùn)
- 2025版二零二五年度智能家居研發(fā)工程師勞動(dòng)合同書3篇
- 2023年非標(biāo)自動(dòng)化工程師年度總結(jié)及來年計(jì)劃
- 2023-2024學(xué)年甘肅省嘉峪關(guān)市酒鋼三中高三上數(shù)學(xué)期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
- 水利機(jī)械施工方案
- 懸挑式腳手架驗(yàn)收記錄表
- 主變壓器試驗(yàn)報(bào)告模板
- 電動(dòng)叉車安全操作規(guī)程
- 靜鉆根植樁施工組織設(shè)計(jì)
- 工程精細(xì)化管理
- 柴油供貨運(yùn)輸服務(wù)方案
- 2022年長(zhǎng)春市中小學(xué)教師筆試試題
- 肉牛肉羊屠宰加工項(xiàng)目選址方案
評(píng)論
0/150
提交評(píng)論