返回介绍

00-05、过滤器与监听器

发布于 2025-03-09 23:21:22 字数 1692 浏览 0 评论 0 收藏 0

过滤器

过滤器(Filter),并非必须,但很实用。

过滤器是一种设计模式,主要用来封装 Servlet 中一些通用的代码。在 web.xml 中配置哪些 URL 对应哪些过滤器。

一个过滤器的写法如下:

public void doFilter(ServletRequest request , ServletResponse response , FilterChain chain) {
  //处理 request
  chain.doFilter(request, response);
  //处理 response
}

假设针对一 URL 定义了 3 个过滤器,分别是 MyFilter1、MyFilter2、MyFilter3,在 web.xml 中也是按照这个顺序设置的, 那么过滤器和 Servlet 的执行顺序如下:

  • MyFilter1 中处理 request 的代码;
  • MyFilter2 中处理 request 的代码;
  • MyFilter3 中处理 request 的代码;
  • 相应的 Servlet;
  • MyFilter3 中处理 response 的代码;
  • MyFilter2 中处理 response 的代码;
  • MyFilter1 中处理 response 的代码;

之所以能达到这样的效果, chain.doFilter(request, response); 起到了很大的作用。 值得注意的是,如果每个 Filter 没有到达 chain.doFilter 就返回了,那么后续的 Filter 或者 Servlet 也就不会执行。

相关资料:
Tomcat 的过滤诀窍
三个有用的过滤器
Java Web 笔记 – Servlet 中的 Filter 过滤器的介绍和使用 编写过滤器
Intercepting HTTP Response using Servlet Filter
How to write response filter?
责任链模式

监听器

当某个事件发生时候,监听器里的方法会被调用。例如 Tomcat 容器启动时、销毁时,session 创建时、销毁时。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文