一、概念java
二、過濾器的功能web
三、過濾器的基本原理tomcat
四、用法服務器
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!--配置過濾器--> <filter> <filter-name>filter</filter-name> <filter-class>com.syf.filter.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>FilterServlet</servlet-name> <servlet-class>com.syf.FilterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FilterServlet</servlet-name> <url-pattern>/filter</url-pattern> </servlet-mapping> </web-app>
package com.syf.filter; import javax.servlet.*; import java.io.IOException; /** * 自定義過濾器,完成請求攔截及資源統一管理功能 * 實現方式及生命週期: * 定義java類實現Filter接口 * 重寫接口方法 * init:初始化 tomcat啓動的時候執行一次 * doFilter:進行攔截處理 每次請求都會執行 * destroy:銷燬 Tomcat關閉的時候執行 */ public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("第一個過濾器初始化"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("第一個過濾器執行開始"); //調用對應的Servlet filterChain.doFilter(servletRequest,servletResponse); System.out.println("第一個過濾器執行結束"); } @Override public void destroy() { System.out.println("第一個過濾器銷燬"); } }
FilterChain接口用於調用過濾器鏈中的一系列過濾器
增長一個過濾器MyFilter2session
public class MyFilter2 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("第二個過濾器初始化"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("第二個過濾器執行開始"); //調用對應的Servlet filterChain.doFilter(servletRequest, servletResponse); System.out.println("第二個過濾器執行結束"); } @Override public void destroy() { System.out.println("第二個過濾器銷燬"); } }
配置web.xmlapp
<filter> <filter-name>filter2</filter-name> <filter-class>com.syf.filter.MyFilter2</filter-class> </filter> <filter-mapping> <filter-name>filter2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
/*:匹配全部請求
/*.xx:匹配後綴爲xx的請求
/xx.xx:匹配請求爲xx.xx的請求ide
一、做用
監聽做用域對象的建立與銷燬及屬性的相關配置,能夠添加一些公共的屬性配置,作邏輯判斷等
主要監聽三種做用域:ServletContext、session、requesturl