使用 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(使用前将#替换为@)