srtvlet filter
Filter,過(guò)濾器,顧名思義,即是對(duì)數(shù)據(jù)等的過(guò)濾,預(yù)處理過(guò)程。為什么要引入過(guò)濾器呢?在平常訪問(wèn)網(wǎng)站的時(shí)候,有時(shí)候發(fā)一些敏感的信息,發(fā)出后顯示時(shí) 就會(huì)將敏感信息用*等字符替代,這就是用過(guò)濾器對(duì)信息進(jìn)行了處理。這只是一個(gè)簡(jiǎn)單的例子,當(dāng)然,過(guò)濾器那么強(qiáng)大,它的功能也不可能局限于此,它不僅能預(yù)處 理數(shù)據(jù),只要是發(fā)送過(guò)來(lái)的請(qǐng)求它都是可以預(yù)處理的,同時(shí),它還可以對(duì)服務(wù)器返回的響應(yīng)進(jìn)行預(yù)處理,這樣,大大減輕了服務(wù)器的壓力。例如,實(shí)現(xiàn)URL級(jí)別的 權(quán)限訪問(wèn)控制、過(guò)濾敏感詞匯、壓縮響應(yīng)信息等一些高級(jí)功能。下面來(lái)詳細(xì)介紹一下過(guò)濾器。
過(guò)濾作用,對(duì)從客戶端向服務(wù)器端發(fā)送的請(qǐng)求進(jìn)行過(guò)濾,也可以對(duì)服務(wù)器端返回的響應(yīng)進(jìn)行處理。它使用戶可以改變一個(gè)request和修改一個(gè) response.。Filter 不是一個(gè)servlet,它不能產(chǎn)生一個(gè)response,但是它能夠在一個(gè)request到達(dá)servlet之前預(yù)處理request,也可以在 response離開(kāi)servlet時(shí)處理response。換句話說(shuō),filter其實(shí)是客戶端與servlet中間的一個(gè)傳遞者,并且它可以對(duì)要傳遞 的東西進(jìn)行修改。
?
?
?
過(guò)濾器如何實(shí)現(xiàn)攔截
- 當(dāng)客戶端發(fā)生請(qǐng)求后,在HttpServletRequest 到達(dá)Servlet 之前,過(guò)濾器攔截客戶的HttpServletRequest 。?
- 根據(jù)需要檢查HttpServletRequest ,也可以修改HttpServletRequest 頭和數(shù)據(jù)。?
- 在過(guò)濾器中調(diào)用doFilter方法,對(duì)請(qǐng)求放行。請(qǐng)求到達(dá)Servlet后,對(duì)請(qǐng)求進(jìn)行處理并產(chǎn)生HttpServletResponse發(fā)送給客戶端。
- 在HttpServletResponse 到達(dá)客戶端之前,過(guò)濾器攔截HttpServletResponse 。?
- 根據(jù)需要檢查HttpServletResponse ,可以修改HttpServletResponse 頭和數(shù)據(jù)。
- 最后,HttpServletResponse到達(dá)客戶端。
Filter的生命周期
(1)Filter接口中有三個(gè)重要的方法。
- init()方法:初始化參數(shù),在創(chuàng)建Filter時(shí)自動(dòng)調(diào)用。當(dāng)我們需要設(shè)置初始化參數(shù)的時(shí)候,可以寫(xiě)到該方法中。
- doFilter()方法:攔截到要執(zhí)行的請(qǐng)求時(shí),doFilter就會(huì)執(zhí)行。這里面寫(xiě)我們對(duì)請(qǐng)求和響應(yīng)的預(yù)處理。
- destroy()方法:在銷(xiāo)毀Filter時(shí)自動(dòng)調(diào)用。
?
(2)Filter的生命周期
?Filter的創(chuàng)建和銷(xiāo)毀由web服務(wù)器控制。
- 服務(wù)器啟動(dòng)的時(shí)候,web服務(wù)器創(chuàng)建Filter的實(shí)例對(duì)象,并調(diào)用其init方法,完成對(duì)象的初始化功能。filter對(duì)象只會(huì)創(chuàng)建一次,init方法也只會(huì)執(zhí)行一次。
- 攔截到請(qǐng)求時(shí),執(zhí)行doFilter方法。可以執(zhí)行多次。
- 服務(wù)器關(guān)閉時(shí),web服務(wù)器銷(xiāo)毀Filter的實(shí)例對(duì)象。
?
轉(zhuǎn)載于:https://www.cnblogs.com/pawn2018/p/10708764.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的srtvlet filter的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2019 The 19th Zhejia
- 下一篇: webapp优化