过滤器,监听器,拦截器

最近被这几个概念搞的很混,刚好今天有时间就缕一缕。
下面都是我参考过的博客:
参考-1-springBoot(6)—过滤器,监听器,拦截器
参考-2-springboot 整合 ServletRequestListener监听器
参考-3-过滤器,拦截器,监听器的配置与说明


以下个人总结,纯属个人笔记,有问题请指出

过滤器:在进入servlet前对请求进行拦截,主要处理编码和授权
拦截器:在web中拦截器是在mvc中对请求进行拦截,主要在进controller前和后进行拦截
监听器:servlet中的监听器主要用来监听某些对象的创建和销毁,如sessionrequest


springboot中实现过滤器,监听器,拦截器

一、过滤器:
  1. 实现filter接口,标注下面两个注解
@WebFilter(initParams = @WebInitParam(name =
"aa",value = "123",description = "哈哈"),urlPatterns = "/test")
@Order(1)
  1. 在启动类上标注servlet的扫描注解,这个注解不仅是配置扫描过滤器,配置监听器的时候也要在这里添加监听器所在的包
@ServletComponentScan(basePackages =
{"com.nihaosi.filterdemo.filter","com.nihaosi.filterdemo.lister"})

二、拦截器

这里以HandlerInterceptor拦截器为例

  1. 实现HandlerInterceptor接口并实现方法,下面是对应方法的解释
public class CosuIntercepteor implements HandlerInterceptor{
    /**
     * 简单理解:进入controller之前
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //该方法被调用的时机是,HandlerMapper根据url找到Handler之后,HandlerAdapter执行请求之前调用
        System.out.println("prehandle======");
        return true;
    }
    /**
     * 执行完controller之后,渲染视图之前
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //处理器执行完请求后,前端控制器渲染视图前
        System.out.println("postHandle======");
    }
    /**
     *  处理完请求并且渲染完视图后执行
     *  适用于资源清理
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion======");
    }
}
  1. 使用配置类添加拦截器
@Configuration
public class CustWebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加拦截器
        registry.addInterceptor(new CosuIntercepteor()).addPathPatterns("/test01");
    }
}

三、监听器
servlet的监听接口,
1)ServletContextListener监听web应用的启动和关闭
2)ServletContextAttributeListener监听ServletContext范围内属性的改变
3)ServletRequestListener监听用户的请求
4)ServletRequestAttributeListener监听ServletRequest范围内(request)内属性的变化
5)HttpSessionListener监听用户session的开始和结束
6)HttpSessionAttributeListener监听HttpSession范围内session内属性的改变。
springmvc的监听器ContextLoaderListener(实现ServletContextListener)用于加载spring容器的配置文件。
###2.2监听器配置流程(以ContextLoaderListener为例)   

以上来自参考-3-过滤器,拦截器,监听器的配置与说明

ServletRequestListener监听器为例

  1. 实现该接口
  2. 在启动类添加注解,配置监听器所在的包
@ServletComponentScan(basePackages = 
{"com.nihaosi.filterdemo.filter","com.nihaosi.filterdemo.lister"})

以上就是本次学习总结,每天进步一点点,加油!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值