您好,登錄后才能下訂單哦!
Filter過濾器和Listener監聽器詳解
Filter過濾器
Filter的簡介
對資源的訪問進行過濾,相當于小區的保安,進去要檢查,出去還要檢查。
Filter的使用
編寫一個類,繼承并實現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("實例化了"); } //初始化 @Override public void init(FilterConfig filterConfig) throws ServletException { //通過這個獲取過濾器在web.xml里面的配置信息 this.filterConfig = filterConfig; System.out.println("過濾器初始化了"); } //執行 @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { //獲取在web.xml中本過濾器配置的名為encoding的參數 String encoding = filterConfig.getInitParameter("encoding"); if(encoding == null){ encoding = "UTF-8"; } //設置編碼格式 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> <!-- 配置參數 --> <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>
過濾器是用來對訪問進去過濾的,所以需要在請求前做什么和請求之后做什么都可以用過濾器來做,例如編碼的設置,自動登錄等。串聯過濾器什么的聽著就知道是什么情況了。
Listener監聽器
編寫一個類繼承實現以下監聽器接口。
監聽ServletContext、HttpSession、ServletRequest對象的創建和銷毀的監聽器
ServletContextListener: HttpSessionListener: SerlvetRequestListener:
監聽ServletContext、HttpSession、ServletRequest屬性(attributes)變化的監聽器
ServletContextAttributeListener HttpSessionAttributeListener SerlvetRequestAttributeListener
1.感知型監聽器:不需要注冊。
HttpSessionBindingListener:實現該接口的類的實例,能夠感知自己何時被放到了HttpSession域范圍中,和何時從HttpSession域范圍中刪除。
HttpSessionActivationListener:實現該接口的類的實例,能夠感知自己何時隨著HttpSession鈍化和激活。
在web.xml配置一下
<listener> <!-- 指向自己縮寫的監聽器類 --> <listener-class>com.jyh.listener.MyContextListener</listener-class> </listener>
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。