21. Spring Boot过滤器、监听器【从零开始学Spring Boot】

上一篇文章已经对定义Servlet 的方法进行了说明,过滤器(Filter)和 监听器(Listener)的注册方法和 Servlet 一样,不清楚的可以查看下上一篇文章(20): 本文将直接使用@WebFilter和@WebListener的方式,完成一个Filter 和一个 Listener;使用注解

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

过滤器(Filter)文件

com.kfit.filter.MyFilter.java

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模式是必选属性)

 *@author Angel(QQ:412887952)

 *@version v.0.1

 */

@WebFilter(filterName="myFilter",urlPatterns="/*")

publicclass MyFilterimplements Filter{

 

       @Override

   publicvoid init(FilterConfigconfig) throws ServletException {

        System.out.println("过滤器初始化");

   }

      

 

       @Override

   publicvoid doFilter(ServletRequestrequest, 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:

package com.kfit.listener;

 

importjavax.servlet.ServletContextEvent;

importjavax.servlet.ServletContextListener;

importjavax.servlet.annotation.WebListener;

 

/**

 * 使用@WebListener注解,实现ServletContextListener接口

 *

 * @author Angel(QQ:412887952)

 * @version v.0.1

 */

@WebListener

public class MyServletContextListenerimplements ServletContextListener {

 

       @Override

       publicvoid contextDestroyed(ServletContextEvent arg0) {

              System.out.println("ServletContex销毁");

       }

 

       @Override

       publicvoid contextInitialized(ServletContextEvent arg0) {

               System.out.println("ServletContex初始化");

       }

}

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

MyHttpSessionListener.java

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(HttpSessionEventse) {

        System.out.println("Session 被创建");

    }

 

    @Override

    publicvoid sessionDestroyed(HttpSessionEventse) {

        System.out.println("ServletContex初始化");

    }

 

}

 

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

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

ServletContex初始化

过滤器初始化

服务启动后,随便访问一个页面,会看到输出:





购买完整视频,请前往:http://www.mark-to-win.com/TeacherV2.html?id=287