多個filter攔截的同一個請求,按web.xml配置順序進行過濾
返回的響應的從最后配置的filter開始過濾
具體配置步驟:
編寫Filter實現類
1 package cn.kihyou.b2c.filter; 2 3 import java.io.IOException; 4 5 import javax.servlet.Filter; 6 import javax.servlet.FilterChain; 7 import javax.servlet.FilterConfig; 8 import javax.servlet.ServletException; 9 import javax.servlet.ServletRequest; 10 import javax.servlet.ServletResponse; 11 12 //實現接口:javax.servlet.Filter; 13 public class AdminFilter implements Filter { 14 15 // 三個重要方法:初始化:init();攔截到要執行的方法:doFilter();銷毀:destroy(); 16 17 @Override 18 public void init(FilterConfig filterConfig) throws ServletException { 19 // TODO Auto-generated method stub 20 // Filter.super.init(filterConfig); 21 } 22 23 @Override 24 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 25 throws IOException, ServletException { 26 // TODO Auto-generated method stub 27 // 1.攔截客戶端/上一個filter發來的請求,是否放行到Servlet/下一個Filter 28 System.out.println("AdminFilter攔截到請求"); 29 // 放行(放不放行您可以自己看着辦) 30 chain.doFilter(request, response); 31 // 2.攔截servlet/filter發回的響應,是否放行到客戶端/上一個filter 32 System.out.println("AdminFilter攔截到響應"); 33 34 } 35 36 @Override 37 public void destroy() { 38 // TODO Auto-generated method stub 39 // Filter.super.destroy(); 40 } 41 42 }
配置web.xml
1 <!-- Filter,過濾器 --> 2 <filter> 3 <!-- filter名,隨便起 --> 4 <filter-name>AdminFilter</filter-name> 5 <!-- 實現類所在目錄 --> 6 <filter-class>cn.kihyou.b2c.filter.AdminFilter</filter-class> 7 <!-- 初始化參數 --> 8 <!-- 設置字符集,charset:UTF-8 --> 9 <init-param> 10 <!-- 參數名 --> 11 <param-name>charset</param-name> 12 <!-- 參數值 --> 13 <param-value>UTF-8</param-value> 14 </init-param> 15 16 <!-- 設置內容類型及其字符集,contentType:text/html;charset=UTF-8 --> 17 <init-param> 18 <param-name>contentType</param-name> 19 <param-value>text/html;charset=UTF-8</param-value> 20 </init-param> 21 </filter> 22 23 <!-- filter的映射 --> 24 <filter-mapping> 25 <!-- 對應的filter名 --> 26 <filter-name>AdminFilter</filter-name> 27 <!-- 要進行攔截過濾的目錄 --> 28 <url-pattern>/web/admin/*</url-pattern> 29 </filter-mapping> 30 31 <session-config> 32 <!-- 超時時間,單位:分鍾 --> 33 <session-timeout>30</session-timeout> 34 </session-config>