springboot之过滤器,监听器的使用

我们在上一章节已经介绍了 spring boot如何注入servlet,其中就涉及到过滤器(Filter)和监听器(Listener)  ,其实spring boot使用过滤器和监听器的注册方法和 Servlet 一样,本文将直接使用@WebFilter和@WebListener的方式,完成一个Filter 和一个 Listener;

使用注解

1
@ServletComponentScan //这个就是扫描相应的Servlet包;

过滤器(Filter)文件

com.kfit.filter.MyFilter.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package  com.kfit.filter;
  
import  java.io.IOException;
  
import  javax.servlet.Filter;
import  javax.servlet.FilterChain;
import  javax.servlet.FilterConfig;
import  javax.servlet.ServletException;
import  javax.servlet.ServletRequest;
import  javax.servlet.ServletResponse;
import  javax.servlet.annotation.WebFilter;
  
/**
  *
  * 使用注解标注过滤器
  * @WebFilter将一个实现了javax.servlet.Filter接口的类定义为过滤器
  * 属性filterName声明过滤器的名称,可选
  * 属性urlPatterns指定要过滤的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性)
 
  * @version v.0.1
  */
@WebFilter (filterName= "myFilter" ,urlPatterns= "/*" )
publicclass MyFilter  implements  Filter{
  
     @Override
     publicvoid init(FilterConfig config)  throws  ServletException {
         System.out.println( "过滤器初始化" );
     }
    
  
     @Override
     publicvoid doFilter(ServletRequest request, ServletResponse response,
             FilterChain chain)  throws  IOException, ServletException {
         System.out.println( "执行过滤操作" );
         chain.doFilter(request, response);
     }
    
     @Override
     publicvoid destroy() {
         System.out.println( "过滤器销毁" );
     }
}


ServletContext监听器(Listener)文件

com.kfit.listener.MyServletContextListener:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package  com.kfit.listener;
  
import  javax.servlet.ServletContextEvent;
import  javax.servlet.ServletContextListener;
import  javax.servlet.annotation.WebListener;
  
/**
  * 使用@WebListener注解,实现ServletContextListener接口
  *
 
  */
@WebListener
public  class  MyServletContextListener  implements  ServletContextListener {
  
          @Override
          public  void  contextDestroyed(ServletContextEvent arg0) {
                    System.out.println( "ServletContex销毁" );
          }
  
          @Override
          public  void  contextInitialized(ServletContextEvent arg0) {
                     System.out.println( "ServletContex初始化" );
          }
}

ServletContext监听器(Listener)文件(HttpSessionListener)

MyHttpSessionListener.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package  com.kfit.listener;
  
import  javax.servlet.annotation.WebListener;
import  javax.servlet.http.HttpSessionEvent;
import  javax.servlet.http.HttpSessionListener;
  
/**
  * 监听Session的创建与销毁
  *
  */
@WebListener
publicclassMyHttpSessionListenerimplementsHttpSessionListener {
  
     @Override
     publicvoid sessionCreated(HttpSessionEvent se) {
         System.out.println( "Session 被创建" );
     }
  
     @Override
     publicvoid sessionDestroyed(HttpSessionEvent se) {
         System.out.println( "ServletContex初始化" );
     }
  
}

注意不要忘记在 SpringBootSampleApplication.java 上添加 @ServletComponentScan 注解。

启动的过程中我们会看到输出:

1
2
3
4
5
6
ServletContex初始化
过滤器初始化
 
服务启动后,随便访问一个页面,会看到输出:
执行过滤操作
Session 被创建

至于如何使用代码的方式注册Filter和Listener,请参考上一篇文章关键Servlet的介绍。不同的是需要使用 FilterRegistrationBean 和 ServletListenerRegistrationBean 这两个类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值