温馨提示×

温馨提示×

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

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

什么是java Servlet过滤器

发布时间:2026-09-19 19:50:39 来源:亿速云 阅读:98 作者:小樊 栏目:编程语言

Java Servlet 过滤器(Filter) 是 Java Web 开发中用于在请求到达 Servlet 之前或响应返回客户端之前进行统一处理的组件。


一、什么是 Servlet 过滤器?

Servlet 过滤器是 javax.servlet.Filter 接口的实现类,它可以:

  • 拦截 HTTP 请求和响应
  • 对请求/响应进行预处理或后处理
  • 决定是否继续执行后续的 Servlet 或过滤器

可以理解为:请求和响应之间的“关卡”


二、过滤器的作用场景

常见用途包括:

  • 登录校验 / 权限控制
  • 字符编码设置(如 UTF-8)
  • 日志记录
  • 跨域处理(CORS)
  • XSS / SQL 注入防护
  • 性能监控

三、Filter 的核心方法

public interface Filter {
    void init(FilterConfig config);
    void doFilter(ServletRequest req, ServletResponse res, FilterChain chain);
    void destroy();
}

1. init

过滤器初始化时调用(只执行一次)

2. doFilter(核心)

  • 处理请求和响应
  • 调用 chain.doFilter() 才会继续往下走

3. destroy

过滤器销毁时调用


四、一个简单示例

字符编码过滤器

@WebFilter("/*")
public class EncodingFilter implements Filter {
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        req.setCharacterEncoding("UTF-8");
        res.setContentType("text/html;charset=UTF-8");
        chain.doFilter(req, res);
    }
}

五、过滤器的配置方式

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>

六、过滤器链(Filter Chain)

  • 多个过滤器可以按顺序形成过滤器链
  • 执行顺序:
请求 → Filter1 → Filter2 → Servlet → Filter2 → Filter1 → 响应

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

对比项 Filter Interceptor
所属 Servlet 规范 Spring
作用范围 所有请求 Spring MVC 请求
依赖 不依赖框架 依赖 Spring

如果你愿意,我也可以用 Spring Boot 示例 或 登录拦截实战 来进一步说明。

向AI问一下细节

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

AI
助
手