# 过滤器

# 什么是过滤器

  • 过滤器(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>
上次更新: 2/13/2025, 3:29:47 AM