Filter過濾器和Listener監(jiān)聽器詳解
Filter過濾器和Listener監(jiān)聽器詳解
Filter過濾器
Filter的簡(jiǎn)介
對(duì)資源的訪問進(jìn)行過濾,相當(dāng)于小區(qū)的保安,進(jìn)去要檢查,出去還要檢查。
Filter的使用
編寫一個(gè)類,繼承并實(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 {
//通過這個(gè)獲取過濾器在web.xml里面的配置信息
this.filterConfig = filterConfig;
System.out.println("過濾器初始化了");
}
//執(zhí)行
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
//獲取在web.xml中本過濾器配置的名為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("過濾前");
//放行
chain.doFilter(req, res);
System.out.println("過濾后");
}
//銷毀
@Override
public void destroy() {
System.out.println("過濾器銷毀了");
}
}
在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>
過濾器是用來對(duì)訪問進(jìn)去過濾的,所以需要在請(qǐng)求前做什么和請(qǐng)求之后做什么都可以用過濾器來做,例如編碼的設(shè)置,自動(dòng)登錄等。串聯(lián)過濾器什么的聽著就知道是什么情況了。
Listener監(jiān)聽器
編寫一個(gè)類繼承實(shí)現(xiàn)以下監(jiān)聽器接口。
監(jiān)聽ServletContext、HttpSession、ServletRequest對(duì)象的創(chuàng)建和銷毀的監(jiān)聽器
ServletContextListener: HttpSessionListener: SerlvetRequestListener:
監(jiān)聽ServletContext、HttpSession、ServletRequest屬性(attributes)變化的監(jiān)聽器
ServletContextAttributeListener HttpSessionAttributeListener SerlvetRequestAttributeListener
1.感知型監(jiān)聽器:不需要注冊(cè)。
HttpSessionBindingListener:實(shí)現(xiàn)該接口的類的實(shí)例,能夠感知自己何時(shí)被放到了HttpSession域范圍中,和何時(shí)從HttpSession域范圍中刪除。
HttpSessionActivationListener:實(shí)現(xiàn)該接口的類的實(shí)例,能夠感知自己何時(shí)隨著HttpSession鈍化和激活。
在web.xml配置一下
<listener> <!-- 指向自己縮寫的監(jiān)聽器類 --> <listener-class>com.jyh.listener.MyContextListener</listener-class> </listener>
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Android實(shí)現(xiàn)直播聊天區(qū)域中頂部的漸變效果
最近在研究直播的彈幕,東西有點(diǎn)多,準(zhǔn)備記錄一下免得自己忘了又要重新研究,下面這篇文章主要給大家介紹了關(guān)于Android如何實(shí)現(xiàn)直播聊天區(qū)域中頂部漸變效果的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2018-04-04
Android Studio實(shí)現(xiàn)井字游戲
這篇文章主要為大家詳細(xì)介紹了Android Studio實(shí)現(xiàn)井字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Android動(dòng)態(tài)給ViewPager添加Indicator導(dǎo)航
這篇文章主要為大家詳細(xì)介紹了Android動(dòng)態(tài)給ViewPager添加Indicator導(dǎo)航的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
android實(shí)現(xiàn)上下滾動(dòng)的TextView
android實(shí)現(xiàn)上下滾動(dòng)的TextView,需要的朋友可以參考一下2013-05-05
Android實(shí)現(xiàn)簡(jiǎn)單的城市列表功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡(jiǎn)單的城市列表功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
Android自定義view實(shí)現(xiàn)拖拽選擇按鈕
這篇文章主要為大家詳細(xì)介紹了Android自定義view實(shí)現(xiàn)拖拽選擇按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
說說Android的UI刷新機(jī)制的實(shí)現(xiàn)
這篇文章主要介紹了說說Android的UI刷新機(jī)制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Android寫一個(gè)實(shí)時(shí)輸入框功能
這篇文章主要介紹了Android寫一個(gè)實(shí)時(shí)輸入框功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04

