版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第六章過濾器與監(jiān)聽器回顧了解Servlet的多線程機(jī)制.多線程單實(shí)例如何開發(fā)線程安全的Servlet.使用局部變量代替實(shí)例變量Servlet3.0的異步處理機(jī)制.異步處理允許Servlet
重新發(fā)起一條新線程去調(diào)用耗時(shí)業(yè)務(wù)方法,這樣就可以避免等待目標(biāo)過濾器及過濾器鏈監(jiān)聽器概念與應(yīng)用Servlet3.0的過濾器與監(jiān)聽器的使用過濾器概念:從J2EE1.3開始,Servlet2.3規(guī)范中加入了對(duì)Filter的支持。Filter就稱之為過濾器,它是Servlet技術(shù)中最激動(dòng)人心的技術(shù),WEB開發(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í)功能,ServletAPI提供了一個(gè)Filter接口,實(shí)現(xiàn)這個(gè)接口的Servlet就是一個(gè)過慮器過濾器及過濾器鏈過濾器案例:第一步:編寫過濾器類(實(shí)現(xiàn)Filter
接口,并重寫方法)第二步:修改web.xml第三步:編譯和部署過濾器過濾器及過濾器鏈第一步:編寫過濾器類public
class
Utf8Filter
implements
Filter{public
void
doFilter(ServletRequest
request,
ServletResponseresponse,FilterChain
chain)
throws
IOException,
ServletException
{request.setCharacterEncoding("utf-8");chain.doFilter(request,
response);}過濾器及過濾器鏈Filter的方法介紹1、Filter的init(FilterConfig
filterConfig)方法:與Servlet的Init方法一樣,在創(chuàng)建時(shí)被調(diào)用,之后被保存在內(nèi)存中直至服務(wù)器重啟或關(guān)閉時(shí)Filter實(shí)例才會(huì)被銷毀。與Servlet不同之處在于,服務(wù)器啟動(dòng)時(shí)就會(huì)實(shí)例化所有Filter,而Servlet中有當(dāng)用戶第一次訪問它時(shí)才會(huì)被實(shí)例化。我們通過在web.xml使用<init-param>對(duì)Filter配置的初始化參數(shù),可以通過FilterConfig來獲得。FilterConfig的方法有:String
getFilterName():得到filter的名稱。String
getInitParameter(String
name):返回在部署描述中指定名稱的初始化參數(shù)的值。如果不存在返回null.Enumeration
getInitParameterNames():返回過濾器的所有初始化參數(shù)的名字的枚舉集合。public
ServletContext
getServletContext():返回Servlet上下文對(duì)象的引用。過濾器及過濾器鏈Filter的方法介紹2.Filter的destroy()方法:當(dāng)服務(wù)器重啟或關(guān)閉時(shí),在銷毀Filter之前調(diào)用此方法。過濾器及過濾器鏈第二步:修改web.xml<filter><filter-name>utf8</filter-name><filter-class>filter.Utf8Filter</filter-class></filter><filter-mapping><filter-name>utf8</filter-name><url-pattern>/*</url-pattern></filter-mapping>過濾器及過濾器鏈第三步:編譯和部署過濾器訪問servlet
過濾器已經(jīng)能夠?qū)λ姓?qǐng)求,
進(jìn)行字符集的設(shè)定解決中文亂碼問題。過濾器及過濾器鏈思考?在實(shí)際web開發(fā)中,需要解決中文亂碼,然后過濾特殊字符,怎么做過濾器?過濾器鏈過濾器及過濾器鏈過濾器鏈?zhǔn)纠哼^濾器及過濾器鏈<filter><filter-name>utf8</filter-name><filter-class>filter.Utf8Filter</filter-class></filter><filter-mapping><filter-name>utf8</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>feifa</filter-name><filter-class>filter.FeifaFilter</filter-class></filter><filter-mapping><filter-name>feifa</filter-name><url-pattern>/*</url-pattern></filter-mapping>結(jié)論用戶的訪問需要根據(jù)web.xml過濾器的順序經(jīng)過過濾器1過濾然后再經(jīng)過過濾器2過濾。doFilter中有一個(gè)FilterChain參數(shù),這個(gè)參數(shù)是服務(wù)器根據(jù)web.xml中配置的過濾器,按照先后順序生成的過濾器鏈。當(dāng)我們?cè)赿oFilter方法中調(diào)用
chain.doFilter(request,
response);方法時(shí),服務(wù)器會(huì)查找過濾鏈中是否還有過濾器,如果有繼續(xù)調(diào)用下一個(gè)過濾器,如果沒有將調(diào)用相應(yīng)的Servlet處理用戶請(qǐng)求。過濾器及過濾器鏈?zhǔn)裁词潜O(jiān)聽器Servlet監(jiān)聽器用于監(jiān)聽一些重要事件的發(fā)生,監(jiān)聽器對(duì)象可以在事情發(fā)生前、發(fā)生后可以做一些必要的處理。下面將介紹幾種常用的監(jiān)聽器監(jiān)聽器概念與應(yīng)用開發(fā)監(jiān)聽器的步驟1、實(shí)現(xiàn)Servlet的監(jiān)聽器接口public
class
SessionListener
implements
HttpSessionListener
{public
void
sessionCreated(HttpSessionEvent
arg0)
{
}public
void
sessionDestroyed(HttpSessionEvent
event)HttpSession
session
=
event.getSession();User
user
=
(UcmSession)
session.getAttribute("currUser");if
(user
!=
null)
{//TODO
something}}監(jiān)聽器概念與應(yīng)用開發(fā)監(jiān)聽器的步驟2、web.xml配置<listener><listener-class>com.lisenter.MySessionListener</listener-class></listener>監(jiān)聽器概念與應(yīng)用監(jiān)聽器概念與應(yīng)用事件類型描述監(jiān)聽接口Servlet
Context
事件Lifecycle(生命周期)servletcontext剛剛創(chuàng)建并且可用,在第一次請(qǐng)求時(shí)提供服務(wù),或者servletcontext
將要被關(guān)閉時(shí)觸發(fā).javax.servlet.ServletContextListenerChanges
toattributes(屬性改變)servletservletcontext中一個(gè)屬性添加移除或替換時(shí)觸發(fā).javax.servlet.ServletContextAttributeListenerHTTP
Session
Events(會(huì)話事件)Lifecycle(生命周期)一個(gè)會(huì)話建立,失效,或超時(shí)的時(shí)候觸發(fā).javax.servlet.http.HttpSessionListenerChanges
toattributes(屬性改變)HttpSession中一個(gè)屬性添加移除或替換時(shí)觸發(fā).javax.servlet.httpHttpSessionAttributeListenerServlet
Request
Events(請(qǐng)求事件)Lifecycle(生命周期)一個(gè)請(qǐng)求被網(wǎng)絡(luò)組件進(jìn)行處理時(shí)觸發(fā).javax.servlet.ServletRequestListenerChanges
toattributes(屬性改變)HttpRequest中一個(gè)屬性添加移除或替換時(shí)觸發(fā)javax.servlet.ServletRequestAttributeListenerServletContextListener:用于監(jiān)聽WEB應(yīng)用啟動(dòng)和銷毀的事件,監(jiān)聽器類需要實(shí)現(xiàn)javax.servlet.ServletContextListener接口。ServletContextAttributeListener:用于監(jiān)聽WEB應(yīng)用屬性
改變的事件,包括:增加屬性、刪除屬性、修改屬性,監(jiān)聽器類需要實(shí)現(xiàn)javax.servlet.ServletContextAttributeListener接口。HttpSessionListener:用于監(jiān)聽Session對(duì)象的創(chuàng)建和銷毀,監(jiān)聽器類需要實(shí)現(xiàn)javax.servlet.http.HttpSessionListener接口
或者javax.servlet.http.HttpSessionActivationListener接口,或
者兩個(gè)都實(shí)現(xiàn)。監(jiān)聽器概念與應(yīng)用HttpSessionActivationListener:用于監(jiān)聽Session對(duì)象的鈍化/活化事件,監(jiān)聽器類需要實(shí)現(xiàn)
javax.servlet.http.HttpSessionListener接口或者
javax.servlet.http.HttpSessionActivationListener接口,或者兩個(gè)都實(shí)現(xiàn)。HttpSessionAttributeListener:用于監(jiān)聽Session對(duì)象屬性的改變事件,監(jiān)聽器類需要實(shí)現(xiàn)
javax.servlet.http.HttpSessionAttributeListener接口。監(jiān)聽器概念與應(yīng)用HttpSessionActivationListener:用于監(jiān)聽Session對(duì)象的鈍化/活化事件,監(jiān)聽器類需要實(shí)現(xiàn)
javax.servlet.http.HttpSessionListener接口或者
javax.servlet.http.HttpSessionActivationListener接口,或者兩個(gè)都實(shí)現(xiàn)。HttpSessionAttributeListener:用于監(jiān)聽Session對(duì)象屬性的改變事件,監(jiān)聽器類需要實(shí)現(xiàn)
javax.servlet.http.HttpSess
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44966-2024橄欖油中脂肪酸乙酯含量的測(cè)定氣相色譜-質(zhì)譜法
- GB/T 18375-2024假肢下肢假肢的結(jié)構(gòu)檢驗(yàn)要求和試驗(yàn)方法
- 廣東省深圳市2025屆高三第二次診斷考試語文試題及答案
- 抗利尿激素分泌失調(diào)綜合征的臨床護(hù)理
- ADME/T工程細(xì)胞株的構(gòu)建調(diào)研報(bào)告
- 產(chǎn)后肚子疼的健康宣教
- 低磷性佝僂病的臨床護(hù)理
- 孕期肺結(jié)核的健康宣教
- 兒童精神分裂癥的健康宣教
- 口技公開課課件
- 感染性休克指南解讀
- 曼娜回憶錄完整版三篇
- (正式版)HG∕T 21633-2024 玻璃鋼管和管件選用規(guī)定
- NCCN 非小細(xì)胞肺癌指南2024
- 個(gè)體工商戶設(shè)立(變更)登記審核表
- 一般自我效能感量表及計(jì)分方式
- 世界旅游夏威夷英文介紹簡介English introduction of Hawaii(課堂PPT)
- 安全生產(chǎn)中長期規(guī)劃
- 日標(biāo)歐標(biāo)英標(biāo)O型圈匯總
- 777F02板型尺寸及ULD組裝高教知識(shí)
- 土木工程可持續(xù)發(fā)展調(diào)查報(bào)告
評(píng)論
0/150
提交評(píng)論