Filter過(guò)濾器和Listener監(jiān)聽(tīng)器詳解
Filter過(guò)濾器和Listener監(jiān)聽(tīng)器詳解
Filter過(guò)濾器
Filter的簡(jiǎn)介
對(duì)資源的訪(fǎng)問(wèn)進(jìn)行過(guò)濾,相當(dāng)于小區(qū)的保安,進(jìn)去要檢查,出去還要檢查。
Filter的使用
編寫(xiě)一個(gè)類(lèi),繼承并實(shí)現(xiàn)javax.servlet.Filter。
package com.jyh.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class FilterDemo1 implements Filter {
private FilterConfig filterConfig;
public FilterDemo1(){
System.out.println("實(shí)例化了");
}
//初始化
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//通過(guò)這個(gè)獲取過(guò)濾器在web.xml里面的配置信息
this.filterConfig = filterConfig;
System.out.println("過(guò)濾器初始化了");
}
//執(zhí)行
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
//獲取在web.xml中本過(guò)濾器配置的名為encoding的參數(shù)
String encoding = filterConfig.getInitParameter("encoding");
if(encoding == null){
encoding = "UTF-8";
}
//設(shè)置編碼格式
req.setCharacterEncoding(encoding);
res.setContentType("text/html;charset=" + encoding);
System.out.println("過(guò)濾前");
//放行
chain.doFilter(req, res);
System.out.println("過(guò)濾后");
}
//銷(xiāo)毀
@Override
public void destroy() {
System.out.println("過(guò)濾器銷(xiāo)毀了");
}
}
在web.xml中配置Filter
<filter>
<filter-name>FilterDemo1</filter-name>
<filter-class>com.jyh.filter.FilterDemo1</filter-class>
<!-- 配置參數(shù) -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>FilterDemo1</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
過(guò)濾器是用來(lái)對(duì)訪(fǎng)問(wèn)進(jìn)去過(guò)濾的,所以需要在請(qǐng)求前做什么和請(qǐng)求之后做什么都可以用過(guò)濾器來(lái)做,例如編碼的設(shè)置,自動(dòng)登錄等。串聯(lián)過(guò)濾器什么的聽(tīng)著就知道是什么情況了。
Listener監(jiān)聽(tīng)器
編寫(xiě)一個(gè)類(lèi)繼承實(shí)現(xiàn)以下監(jiān)聽(tīng)器接口。
監(jiān)聽(tīng)ServletContext、HttpSession、ServletRequest對(duì)象的創(chuàng)建和銷(xiāo)毀的監(jiān)聽(tīng)器
ServletContextListener: HttpSessionListener: SerlvetRequestListener:
監(jiān)聽(tīng)ServletContext、HttpSession、ServletRequest屬性(attributes)變化的監(jiān)聽(tīng)器
ServletContextAttributeListener HttpSessionAttributeListener SerlvetRequestAttributeListener
1.感知型監(jiān)聽(tīng)器:不需要注冊(cè)。
HttpSessionBindingListener:實(shí)現(xiàn)該接口的類(lèi)的實(shí)例,能夠感知自己何時(shí)被放到了HttpSession域范圍中,和何時(shí)從HttpSession域范圍中刪除。
HttpSessionActivationListener:實(shí)現(xiàn)該接口的類(lèi)的實(shí)例,能夠感知自己何時(shí)隨著HttpSession鈍化和激活。
在web.xml配置一下
<listener> <!-- 指向自己縮寫(xiě)的監(jiān)聽(tīng)器類(lèi) --> <listener-class>com.jyh.listener.MyContextListener</listener-class> </listener>
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
用Flutter做桌上彈球(繪圖(Canvas&CustomPaint)API)
這篇文章主要介紹了用Flutter做桌上彈球 聊聊繪圖(Canvas&CustomPaint)API,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Jetpack Compose實(shí)現(xiàn)列表和動(dòng)畫(huà)效果詳解
這篇文章主要為大家詳細(xì)講講Jetpack Compose實(shí)現(xiàn)列表和動(dòng)畫(huà)效果的方法步驟,文中的代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-06-06
月下載量上千次Android實(shí)現(xiàn)二維碼生成器app源碼分享
既然是二維碼生成器那么我們?nèi)绾沃谱鞫S碼呢?這篇文章為大家分享了月下載量上千次Android實(shí)現(xiàn)二維碼生成器app源碼,希望大家喜歡2015-12-12
Android studio導(dǎo)入項(xiàng)目的方法詳解(簡(jiǎn)單快速)
最近開(kāi)課移動(dòng)互聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā),實(shí)驗(yàn)課老師發(fā)了代碼讓我們導(dǎo)入,在網(wǎng)上找了各種方法,發(fā)現(xiàn)不是每一個(gè)項(xiàng)目都適合,有些能夠成功,有些還是有錯(cuò),頭大的很。后面發(fā)現(xiàn)一個(gè)比較簡(jiǎn)單的方法,沒(méi)翻過(guò)車(chē),新手可以試試2017-06-06
Android為T(mén)iny4412設(shè)備驅(qū)動(dòng)在proc目錄下添加一個(gè)可讀版本信息的文件
今天小編就為大家分享一篇關(guān)于Android為T(mén)iny4412設(shè)備驅(qū)動(dòng)在proc目錄下添加一個(gè)可讀版本信息的文件,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
Android中的TimePickerView(時(shí)間選擇器)的用法詳解
這篇文章主要介紹了Android中的TimePickerView時(shí)間選擇器的用法,這是一個(gè)第三方從底部彈出來(lái)的日期選擇器,文中結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
Android Studio 4.0 正式發(fā)布在Ubuntu 20.04中安裝的方法
這篇文章主要介紹了Android Studio 4.0 正式發(fā)布如何在Ubuntu 20.04中安裝,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
android實(shí)現(xiàn)人臉識(shí)別技術(shù)的示例代碼
本篇文章主要介紹了android人臉識(shí)別技術(shù)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03

