【SptingBoot必知必会 Filter和Listener】

Filter

1.Filter的简单介绍

Filter也称为过滤器,是处于客户端与服务器之间的一道过滤网。我们所熟知的资源文件,例如图片,HTML等,都能被其拦截。当然,它除了这个之外,还能实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

2.过滤器Filter的使用

首先,我们先在项目中创建filter包,之后在包里面创建我们的过滤器类。当然,在后续引入类的过程中系统可能提示了很多个import,我们需要选择的是javax.servlet。具体的代码如下:

@WebFilter(filterName = "userFilter",urlPatterns = "/*")
public class UserFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("---------init()初始化");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("doFilter()过滤");
        chain.doFilter(request,response);
    }

    @Override
    public void destroy() {
        System.out.println("---------destroy()销毁");
    }
}
  • @WebFilter:用于将一个类声明为过滤器,该注解将会在应用部署时被容器处理,容器根据具体的属性配置将相应的类部署为过滤器。在传统的SSM中,我们需要在web.xml中配置filterName urlPatterns value等。我们利用注解的话就不需要了,极大地节省了时间。
    我们编写好filter类之后是不能直接运行的,运行之后是看不到效果的。
    这是为什么呢?
    因为我们还少了一步重要的操作,要在入口类中添加@ServletComponentScan才是真正的大功告成。
    具体如下图所示(@EnableScheduling是我做定时任务的注解,读者可不理会):
    在这里插入图片描述
  • @ServletComponentScan:使用该注解后,Servlet、Filter、Listener可以直接通过相应的注解自动注册。(当然还有代码注册,但是我们先掌握一种)

3.Filter的测试

项目一启动便会调用初始化方法,在实际运用场景中可以进行数据的初始化。
在这里插入图片描述
调用前先执行doFilter方法
在这里插入图片描述
小结:在运行过程中,Filter会首先调用init方法,然后系统访问资源时会先调用doFilter。最后,应用关闭时会调用destory。

Listener

1.Listener的简单介绍

监听器也叫Listener,是Servlet的监听器,可以用于监听Web应用中某些对象、信息的创建、销毁、增加、修改、删除等动作的发生,然后做出相应的响应处理。服务对象状态变化时,服务器自动调用监听器对象中的方法,常用于统计在线人数和在线用户等。
监听器分3类:
ServletContext(对应application),HttpSession(对应session)、ServletRequest(对应request)。Application在整个Web服务中只有一个,在Web务关闭时销毁。Session 对应每个会话,在会话起始时创建,一端关闭会话时销毁。Request 对象是客户发送请求时创建的(一同创建的还有
Response),用于封装请求数据,在一次请求处理完毕时销毁。
根据监听的事件,可把监听器分为以下3类:
(1)监听对象创建与销毁,如 ServletContextListener。
(2)监听对象域中属性的增加和删除,如 HttpSessionListener和ServletRequestListener。
(3)监听绑定到 Session上的某个对象的状态,如 ServletContextAttributeListener、
HttpSessionAttributeListener、 ServletRequestAttributeListen等。

2.监听器Listener的使用

首先,我们先在项目中创建listener包,之后在包里面创建我们的过监听器类。具体的代码如下:

@WebListener
public class UserListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("---------Listener初始化");
    }
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("---------Listener销毁");
    }
}
  • @WebListener:用于将一个类声明为监听器,该注解将会在应用部署时被容器处理,容器根据具体的属性配置将相应的类部署为监听器。
  • ServletContextListener类:能够监听ServletContext对象的生命周期,实际上就是监听Web应用的生命周期。

3.Listener的测试

在应用启动时调用contextInitialized,在应用销毁时调用contextDestroyed。
在这里插入图片描述
推荐阅读:
(1)我的第一个SpringBoot项目

(2)springBoot必知必会 yml文件配置

(3)SpingBoot必知必会 Redis缓存

如果需要编程资源,可以关注公众号,当然是全免费的啦。
在这里插入图片描述

每天进步一点点,开心也多一点点

发布了60 篇原创文章 · 获赞 66 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_40169642/article/details/105427908
今日推荐