Servlet 过滤器和 Servlet 上下文侦听器有什么区别?

2023-11-26

使用 Servlet 过滤器与 Servlet 上下文侦听器有什么区别?

你什么时候会使用其中之一?


A Filter拦截与其 URL 模式匹配的 HTTP 请求并允许您修改它们。另请参阅其javadoc:

过滤器是一个对象,它对资源(servlet 或静态内容)的请求或来自资源的响应或两者执行过滤任务。

过滤器执行过滤doFilter方法。每一个Filter可以访问FilterConfig对象,从中可以获取其初始化参数,以及对ServletContext例如,它可以用来加载过滤任务所需的资源。

过滤器在 Web 应用程序的部署描述符中配置。

此设计已确定的示例包括:

  • 身份验证过滤器
  • 记录和审核过滤器
  • 图像转换过滤器
  • 数据压缩过滤器
  • 加密过滤器
  • 标记过滤器
  • 触发资源访问事件的过滤器
  • XSL/T 过滤器
  • 哑剧型链式过滤器

A ServletContextListener拦截 webapp 的启动和关闭,并允许您在启动和/或关闭时执行一些代码。另请参阅其javadoc:

接收通知事件的接口ServletContext生命周期变化。

为了接收这些通知事件,必须在 Web 应用程序的部署描述符中声明实现类,并用注释WebListener,或通过其中之一注册addListener定义于的方法ServletContext.

该接口的实现被调用contextInitialized(javax.servlet.ServletContextEvent)方法按照它们被声明的顺序,并且在它们的contextDestroyed(javax.servlet.ServletContextEvent)方法以相反的顺序进行。

何时使用其中之一现在应该很明显了。用一个Filter如果您想拦截与特定 URL 模式匹配的 HTTP 请求,因为您想检查/修改 HTTP 请求/响应。用一个ServletContextListener如果你想拦截 webapp 的启动和/或关闭。

请知道在哪里可以找到 javadoc 以及如何解释它们。它们包含此类琐碎问题的所有答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Servlet 过滤器和 Servlet 上下文侦听器有什么区别? 的相关文章

随机推荐

  • Emacsclient 钩子上的kill

    我试图在 Emacs 中找到一个钩子 它应该在 emacs 服务器正常关闭之前触发 我尝试使用 elisp 来执行kill emacs query functions kill emacs hook server done hook 如下所
  • 如何在打乱的连续整数数组中查找重复元素?

    我最近在某处遇到一个问题 假设您有一个包含 1001 个整数的数组 整数按随机顺序排列 但您知道每个整数都在 1 到 1000 含 之间 此外 除了一个数字出现两次之外 每个数字在数组中只出现一次 假设您只能访问数组的每个元素一次 描述一种
  • JavaScript内部方法实现源码

    有没有办法查看 JavaScript 方法背后的代码 不是网站 html 或 js 文件中的 javascript 方法 而是 JavaScript 的内部方法 例如 我怎样才能看到JavaScript如何计算offsetTop一个元素的
  • MySQL DATETIME DIFF 查询

    我有一个 MySQL 查询 每 30 分钟通过 cron 运行一次以删除旧的属性列表 查询是 DELETE FROM wpdb gt posts WHERE post type rentals AND DATEDIFF NOW post d
  • 在 vuejs2 数据中动态插入子组件(无需 $compile 或滥用 v-html)

    我想在不一定是预定义的 HTML 块中的任意点动态插入新的 vuejs 组件 这是一个稍微做作的示例 演示了我正在尝试做的事情 Vue component child pretend I do something useful templa
  • 将字符串、整数和浮点数序列化为字符数组,以便在没有库的情况下进行网络连接

    我想通过网络传输数据 但我不想使用任何外部库 标准C C 就可以 例如 unsigned int x 123 char y 3 h i 0 float z 1 23f 我想要这个 char xyz 11 array 笔记 为了通过网络传输它
  • 编程 QGraphicsView 滚动未正确更新

    我有一个从 QGraphicsView 派生的自定义类 它实现了一个槽调用scrollHorizo ntal int dx 里面的代码很简单 void CustomView scrollHorizontal int dx scrollCon
  • Google Chart API 中的数字类型不匹配

    我有一个数组和第二列 其值如下2050 878456在我的 javascript 函数中创建面积图我做了以下内容 function drawVisualization var data null data new google visual
  • 如何将node.js日期转换为SQL Server兼容的日期时间?

    我有一个 Web Api 使用express and Tedious在 Azure SQL 数据库上存储一些数据 和nvarchar类型和int类型它运行良好 但是当我尝试保存时DateTime值我收到一条错误消息 Insert into
  • 如何使用 MPAndroidChart 库更改图表背景?

    我正在使用令人惊叹的图书馆MPAndroid图表 它的工作原理就像一个魅力 除非我试图更改 BarData 的背景颜色 默认颜色是白色 我想将其更改为透明 我试过这个 Paint p1 mChart getPaint Chart PAINT
  • 在 Node 应用程序之间共享代码

    我们的应用程序由两个组件组成 API 和客户端 两者都是独立的 Node 应用程序 虽然除了文档之外 API 实际上没有任何前端组件 但它们仍然共享一些通用文件 例如 Jade 组件 规范化 CSS 实用程序模块以及最重要的 Mongoos
  • 如何在 mac osx 中隐藏终端窗口?

    我有一个在 Windows Linux Android 和 Mac 上运行的多平台应用程序 它在所有平台上使用 g 编译 对于 Windows 我创建了一个安装程序 并通过添加链接器标志摆脱了终端窗口 Wl subsystem window
  • 获取团队列表时 Xcode 崩溃

    所以基本上 Xcode 6 1 每当尝试获取团队列表时都会崩溃 从主屏幕的常规选项卡中 当尝试将应用程序提交到 iTunes 时 尝试验证应用程序 每当它尝试获取团队列表时 它就会崩溃 一小时前它运行良好 但当我们在 iTunes 帐户中添
  • 未找到符号:_BIO_new_CMS

    我是 mac 新手 我不明白为什么我的 scrapy 似乎不再工作了 我怀疑 openssl 在我的 el Captain 中无效 I tried pip install cryptography pip install pyOpenSSL
  • 调用 URL - c#

    我正在尝试在 C 中调用 URL 我只对调用感兴趣 并不关心响应 当我出现以下内容时 是否意味着我正在调用该 URL HttpWebRequest request HttpWebRequest WebRequest Create url 您
  • 将百分比添加到数字中

    如何将百分比添加到总和中 我努力了var sum 3 25 3 4 但没有成功 我刚刚得到0 00作为答案 给一个数字加上一个百分比 的意思是 将该数字乘以 1 pct var sum 3 25 sum sum 1 0 034 您可以等效地
  • 适用于多种环境的 Google Cloud App Engine app.yaml

    我目前已经启动并运行了我的应用程序 app yaml and dispatch yaml位于应用程序的根目录中 我通过 Google Cloud CLI 进行部署 目前这很有效 尽管当我开始拥有一个dev staging and prod环
  • 如何在 Javascript 中捕获有关文本选择更改的 iOS Safari 事件?

    以下场景 在 iOS Safari 上选择文本 假设是 正常 html 页面 时 会出现蓝色叠加层 表明您已选择特定段落 此外 您可以更改该选择 以更正您的初始选择区域 我有兴趣在选择区域更改完成时准确捕获该事件 是否有可能 如果是的话 如
  • 类成员的自定义属性

    我使用自定义属性来定义类的成员如何映射到属性以作为表单帖子 支付网关 发布 我的自定义属性工作得很好 并且能够通过 名称 获取属性 但希望通过成员本身获取属性 例如 getFieldName name vs getFieldName obj
  • Servlet 过滤器和 Servlet 上下文侦听器有什么区别?

    使用 Servlet 过滤器与 Servlet 上下文侦听器有什么区别 你什么时候会使用其中之一 A Filter拦截与其 URL 模式匹配的 HTTP 请求并允许您修改它们 另请参阅其javadoc 过滤器是一个对象 它对资源 servl