# 过滤器
# 什么是过滤器
- 过滤器(Filter)是 J2EE Servlet 模块下的组件
- Filter 的作用是对 URL 进行统一的拦截处理
- Filter 通常用于应用程序层面进行全局处理
# 过滤链
Request -> Filter1 -> Filter2 -> Servlet/JSP
Response <- Filter1 <- Filter2 <- Servlet/JSP
# 开发过滤器
- 任何过滤器都要实现 javax.servlet.Filter 接口
- 在 Filter 接口的 doFilter()方法中编写过滤器的功能代码
- 在 web.xml 中对过滤器进行配置,说明拦截 URL 的范围
package com.imooc.filter;
import javax.servlet.*;
import java.io.IOException;
public class MyFirstFilter 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("过滤器已生效");
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
}
# web.xml
<!--
filter标签用于说明哪个类是过滤器,并在应用启动时自动加载
-->
<filter>
<filter-name>MyFirstFilter</filter-name>
<filter-class>com.imooc.filter.MyFirstFilter</filter-class>
</filter>
<!--
filter-mapping标签用于说明过滤器对URL应用的范围,要点有二:
1. filter-name 过滤器名称与filter.filter-name保持一致
2. url-pattern 说明过滤器的作用范围, /*代表对所有URL进行过滤
-->
<filter-mapping>
<filter-name>MyFirstFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
← 监听器