监听器&&过滤器&&拦截器
监听器>过滤器>servlet>拦截器>controller
监听器
监听作用域 httpsession、servletrequest、servletContext的创建、销毁和内容的改变
web.xml配置
需要注册的lister
监听Request创建和销毁 ServletRequestListerner
requestInitialized(ServletRequestEvent sre)
requestDestroyed(ServletRequestEvent sre)
监听Request数据的变更 ServletRequestAttributeListener
attributeAdded
attributeRemoved
attributeReplaced
监听Session创建和销毁 ServletSessionListerner
监听Session数据的变更 ServletSessionAttributeListener
监听application创建和销毁 ServletContextListerner
监听application数据的变更 ServletContextAttributeListener
不需要注册的lister
httpSessionBindingListener
httpSessionActivationListener
使用场景:
servletContext:全局属性对象,全局数据库连接,定时器,加载缓存对象
httpSession统计当前在线人数和在线用户,记录访问日志
servletRequest读取参数、访问历史记录
系统启动时加载初始化
ServletContextListener和filter结合统计ip访问网站的量
过滤器
实现Filter接口
init()
destroy()
doFilter()
注解配置
@WebFilter("/")
或者FilterRegistrationBean.setFilter(encodingFilter())
xml配置
使用场景:
敏感字符
统一网站编码
url级别的访问权限控制
ip黑名单
压缩响应信息
只允许GET\\的请求
验证tocken,自动登录
拦截器
实现HandlerInterceptor
prehandler()
postHandle()
afterCompletion()
配置
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**","/js/**");
}
}
使用场景:
性能监控
验证资源访问权限
验证是否登录
日志记录

浙公网安备 33010602011771号