温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

什么是servlet过滤器

发布时间:2026-10-10 07:22:46 来源:亿速云 阅读:109 作者:小樊 栏目:编程语言

Servlet 过滤器(Filter) 是 Java Web 开发中 servlet 规范提供的一种拦截和处理请求/响应的组件,用于在请求到达 Servlet(或 JSP)之前,以及响应返回客户端之前,进行统一的处理。


一、Servlet 过滤器是什么?

Servlet 过滤器是:

  • 位于 客户端 ←→ Servlet 之间的一层
  • 可以对 HTTP 请求和响应 进行拦截、修改、校验、包装
  • 一个请求可以经过 多个过滤器(过滤器链)

可以理解为一个“请求安检通道”。


二、过滤器能做什么?

常见用途包括:

  • 登录校验 / 权限控制
  • 字符编码统一设置(UTF-8)
  • 请求参数过滤(防 XSS、SQL 注入)
  • 日志记录、性能监控
  • 跨域处理(CORS)
  • 压缩响应内容

三、过滤器生命周期

Servlet 容器负责管理 Filter:

  1. init(FilterConfig)
    容器启动时调用一次,用于初始化
  2. doFilter(request, response, chain)
    每次请求都会调用
  3. destroy()
    容器关闭时调用一次

四、核心接口

public interface Filter {
    void init(FilterConfig filterConfig);
    void doFilter(ServletRequest request, ServletResponse response,
                  FilterChain chain);
    void destroy();
}
  • FilterChain:用于放行请求
    chain.doFilter(request, response);
    

五、示例:字符编码过滤器

@WebFilter("/*")
public class EncodingFilter implements Filter {

    public void doFilter(ServletRequest req, ServletResponse resp,
                         FilterChain chain) throws IOException, ServletException {
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        chain.doFilter(req, resp);
    }
}

六、过滤器配置方式

1️⃣ 注解方式(推荐)

@WebFilter(urlPatterns = "/*")

2️⃣ web.xml 配置

<filter>
    <filter-name>encoding</filter-name>
    <filter-class>com.example.EncodingFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

七、过滤器 vs 拦截器(Interceptor)

对比项 Filter Interceptor
所属 Servlet 规范 Spring
作用范围 所有请求 Spring MVC 请求
执行顺序 更早 更晚

八、一句话总结

Servlet 过滤器是对请求和响应进行统一预处理和后处理的组件,是 Web 层非常重要的通用处理机制。

如果你愿意,我也可以帮你画一张请求流程图或对比 Filter / Listener / Servlet 的区别。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手