一、概念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