项目结构:
AFilter:
packagecn.itcast.web.filter;
import javax.servlet.*;
importjava.io.IOException;
public class AFilter implementsFilter {
/**
* init方法在filter创建之后立即执行,用来做初始化
* @param filterConfig
* @throws ServletException
*/@Override
public void init(FilterConfig filterConfig) throwsServletException {
System.out.println("过滤器初始化!");
}
/**
* 每次过滤时都会执行
* @param servletRequest
* @param servletResponse
* @param filterChain
* @throws IOException
* @throws ServletException
*/@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throwsIOException, ServletException {
System.out.println("过滤器拦截。。。");
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("回来执行doFilter方法。。。");
}
/**
* destroy方法在销毁之前执行,用来对非内存资源释放
*/@Override
public voiddestroy() {
System.out.println("过滤器销毁!");
}
}
web.xml配置
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_3_1.xsd"
version="3.1">
AServlet
cn.itcast.web.servlet.AServlet
AServlet
/AServlet
AFilter
cn.itcast.web.filter.AFilter
AFilter
/*
index.jsp页面
Titleindex.jsp页面
控制台输出:
项目启动时执行init方法
执行doFilter方法
关闭服务器销毁filter
销毁filter之前会调用destroy方法