zoukankan      html  css  js  c++  java
  • (21)Spring Boot过滤器、监听器【从零开始学Spring Boot】

     

    Spring Boot 系列博客】

    0)前言【从零开始学Spring Boot :

    http://412887952-qq-com.iteye.com/blog/2291496

    1spring boot起步之Hello World【从零开始学Spring Boot:

    http://412887952-qq-com.iteye.com/blog/2291500

    2Spring Boot返回json数据【从零开始学Spring Boot

    http://412887952-qq-com.iteye.com/blog/2291508

    16Spring Boot使用Druid(编程注入)【从零开始学Spring Boot

    http://412887952-qq-com.iteye.com/blogs/2292376

    17Spring Boot普通类调用bean【从零开始学Spring Boot】:

    http://412887952-qq-com.iteye.com/blog/2292388

     

    更多查看博客:http://412887952-qq-com.iteye.com/blog

     

     

     

     

     

    上一篇文章已经对定义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 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:

    package com.kfit.listener;

     

    import javax.servlet.ServletContextEvent;

    import javax.servlet.ServletContextListener;

    import javax.servlet.annotation.WebListener;

     

    /**

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

     *

     * @author Angel(QQ:412887952)

     * @version v.0.1

     */

    @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

    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 注解。

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

     

    ServletContex初始化

    过滤器初始化

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

    执行过滤操作
    Session 被创建

     

    为什么无法看到session的过程:http://zhidao.baidu.com/link?url=EP-wlLvKpo8zI5NaIZrESzCdivq3Xg8VgOWQOvfpSLl3opTgvESerpo4wsG6tOs_dm6cQQMF_kQ6THNjNzr2Nq

     

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

     

  • 相关阅读:
    linux 常用命令行
    二叉搜索树(BST)
    pytorch Gradient Clipping
    python 读写文件
    我终于可以毕业啦!
    为什么有可执行文件还需要库文件
    java常识
    *args、*kwargs
    win终端命令
    import_module
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6147123.html
Copyright © 2011-2022 走看看