filter的生命周期?

Filter 的生命周期主要包含三个阶段:初始化、请求处理和销毁。

  1. 初始化:当 web 应用启动时,容器会创建并初始化 Filter 对象。这个过程中,init(FilterConfig) 方法会被调用一次。FilterConfig 对象包含了 Filter 的配置信息,比如初始参数。在 init 方法中,你可以执行一些只需要进行一次的操作,例如加载配置或初始化资源。
public void init(FilterConfig filterConfig) throws ServletException {
    // 初始化操作
    System.out.println("Filter initialized");
}
  1. 请求处理:每当一个请求到达 Filter 的映射路径时,doFilter 方法就会被调用。这是 Filter 的核心方法,你可以在这里执行诸如检查用户身份、修改请求或响应等操作。此外,你需要调用 FilterChain.doFilter 方法来将请求传递给 Filter 链中的下一个 Filter 或 Servlet。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    // 请求处理
    System.out.println("Filter processing request");
    chain.doFilter(request, response);
}
  1. 销毁:当 web 应用关闭时,容器会销毁 Filter 对象,destroy 方法会被调用一次。这是在 Filter 生命周期结束时释放资源的地方。
public void destroy() {
    // 释放资源
    System.out.println("Filter destroyed");
}

需要注意的是,虽然 Filter 的生命周期方法(initdestroy)只会被调用一次,但是 doFilter 方法会被多次调用,每次请求都会触发。因此,Filter 必须能够在多线程环境下安全地执行。

发表评论

后才能评论