赞
赏
研究 JavaEE Filter 的生命周期。
使用代码说明 JavaEE Filter 的生命周期。
Servlet 代码:
@WebServlet("/demo01")
public class ServletDemo extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Servlet程序执行...");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
FilterDemo 代码:
@WebFilter("/demo01")
public class FilterDemo implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("过滤器初始化...");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("拦截请求...");
// 向下执行
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
System.out.println("过滤器销毁...");
}
}
服务器启动时,Filter init() 方法运行,如下图:
浏览器访问 Servlet,如下图:
当浏览器发送请求后,会先触发 Filter 的 doFilter() 方法,再执行 Servlet ,如下图:
关闭服务器后,Filter 会执行 destroy() 方法销毁过滤器,如下图:
以上案例可以得出当服务器启动后,Filter 会执行初始化方法,然后当浏览器发送请求到服务器后,请求会被 Filter 拦截,然后继续向下运行,当服务器关闭后,Filter 会进行销毁,这就是 Filter 的生命周期。