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("過濾器銷毀了"); } }