监听器&&过滤器&&拦截器

监听器>过滤器>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/**");
}

}

使用场景:

性能监控
验证资源访问权限
验证是否登录
日志记录

posted @ 2023-05-16 22:37  必行之码  阅读(7)  评论(0)    收藏  举报