Bes*_*ces 7 jsf servlets servlet-filters servlet-listeners
使用Servlet过滤器与Servlet上下文侦听器之间有什么区别?
你什么时候使用其中一个?
Bal*_*usC 11
一个Filter在HTTP请求拦截匹配的URL模式,并允许您对其进行修改.另见它的javadoc:
过滤器是对资源请求(servlet或静态内容)或资源响应(或两者)执行过滤任务的对象.
过滤器在
doFilter方法中执行过滤.每个人Filter都可以访问一个FilterConfig对象,从中可以获取其初始化参数,以及ServletContext对它可以使用的引用,例如,加载过滤任务所需的资源.过滤器在Web应用程序的部署描述符中配置.
已为此设计确定的示例包括:
- 验证过滤器
- 记录和审核过滤器
- 图像转换过滤器
- 数据压缩过滤器
- 加密过滤器
- 标记过滤器
- 触发资源访问事件的过滤器
- XSL/T过滤器
- Mime型链式过滤器
一个ServletContextListener对Web应用程序的启动和关闭,并截取允许你在启动和/或关机执行一些代码.另见它的javadoc:
用于接收有关
ServletContext生命周期更改的通知事件的接口为了接收这些通知事件,必须在Web应用程序的部署描述符中声明实现类
WebListener,通过其中一个addListener定义的方法注释或注册ServletContext.此接口的实现按其
contextInitialized(javax.servlet.ServletContextEvent)声明的顺序在其方法中调用,并以contextDestroyed(javax.servlet.ServletContextEvent)相反的顺序在其方法中调用.
何时使用这一个或另一个现在应该是显而易见的.Filter如果要拦截处理特定URL模式的HTTP请求,请使用a ,因为您要检查/修改HTTP请求/响应.ServletContextListener如果要拦截webapp的启动和/或关闭,请使用a .
请知道在哪里可以找到javadoc以及如何解释它们.它们包含了这类琐碎问题的所有答案.