概念:當訪問服務器的資源是,過濾器能夠將請求攔截下來,完成一些特殊的功能html
快速入門:java
package com.data.web.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; @WebFilter("/*")//訪問全部資源以前,都會執行該過濾器 public class FilterDemo1 implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("Filter被執行了");//當訪問資源是,過濾器就會被執行 //放行 filterChain.doFilter(servletRequest,servletResponse);//放行以後才能夠訪問資源 } @Override public void destroy() { } }
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <% System.out.println("執行index.jsp....."); %> </body> </html>
package com.data.web.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; @WebFilter("/*") public class FilterDemo2 implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //放行前能夠對請求數據加強 System.out.println("filterDemo2執行了...."); filterChain.doFilter(servletRequest,servletResponse); //放行後能夠對響應的數據加強 System.out.println("filterDemo2回來了...."); } @Override public void destroy() { } }
filterDemo2執行了.... 執行index.jsp..... filterDemo2回來了....
init方法:在服務器啓動後,會建立Filter對象,而後調用init方法。只執行一次,用於加載資源web
doFilter方法:每一次請求被攔截資源時,會執行,執行屢次瀏覽器
destroy:在服務器關閉後,Filter對象銷燬。若是服務器正常關閉,則會執行destroy方法,只執行一次,用於釋放資源服務器
攔截路徑配置app
具體資源路徑:/index.jsp 只有訪問index.jsp資源時,過濾器纔會執行異步
攔截目錄:/user/* 訪問/user下的全部資源時,過濾器都會被執行jsp
後綴名攔截: *.jsp 訪問全部後綴名爲jsp資源時,過濾器都會被執行ide
攔截全部資源: /* 訪問全部資源時,過濾器都會被執行spa
攔截方式配置:
註解配置:過濾器會根據設置dispatcherTypes屬性的值來決定要不要執行
REQUEST:默認值。瀏覽器直接請求資源
FORWARD:只有是轉發訪問的資源,過濾器纔會執行
INCLUDE:包含訪問資源
ERROR:錯誤跳轉資源
ASYNC:異步訪問資源
web.xml配置:設置
標籤便可
執行順序:若是有兩個過濾器:過濾器1和過濾器2
1.過濾器1
2.過濾器2
3.資源執行
4.過濾器2
5.過濾器1
1.註解配置:按照類名的字符串比較規則比較,值小的先執行
2.web.xml配置: