`

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

阅读更多

 à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr 

 

上一篇文章已经对定义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 这两个类。

 

Spring Boot 系列博客】

à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

 

网易云课堂视频最新更新

第十一章 Spring Boot 日志

1、spring boot日志—理论

2、Spring Boot日志-logback

3、Spring Boot日志-log4j2

第十二章 Spring Boot 知识点2

1、spring boot 服务配置和部署

2、Spring Boot 定制URL匹配规则

 

 

历史章节

 

第一章 快速开始

1、Spring Boot之Hello World

2、Spring Boot之Hello World访问404

 

第二章 Spring Boot之JSON

1、spring boot返回json数据

2、Spring Boot完美使用FastJson解析JSON数据

 

第三章 Spring Boot热部署

1、Spring Boot热部署(springloader)

2、springboot + devtools(热部署)

 

第四章 Spring Boot数据库

1、Spring Boot JPA/Hibernate/Spring Data概念

2、Spring Boot JPA-Hibernate

3、Spring Boot Spring Data JPA介绍

4、Spring Boot JdbcTemplate

5、Spring Boot集成MyBatis

 

第五章 web开发

1、全局异常捕捉

2、配置server信息

3、spring boot使用thymeleaf

4、Spring Boot 使用freemarker

5、Spring Boot添加JSP支持

 

第六章 定时任务

1、Spring Boot定时任务

2、Spring Boot 定时任务升级篇(动态修改cron参数)

3、Spring Boot 定时任务升级篇(动态添加修改删除定时任务)

4、Spring Boot 定时任务升级篇(集群/分布式下的定时任务说明)

5、Spring Boot Quartz介绍

6、Spring Boot Quartz在Java Project中使用

7、Spring Boot 集成Quartz普通使用

8、Spring Boot 集成Quartz升级版

9、Spring Boot 集成Quartz二次升级版

10、Spring Boot 集成Quartz-Job如何自动注入Spring容器托管的对象

 

第七章 Spring Boot MyBatis升级篇

1、Spring Boot MyBatis升级篇-注解

2、Spring Boot MyBatis升级篇-注解-自增ID

3、Spring Boot MyBatis升级篇-注解-增删改查

4、Spring Boot MyBatis升级篇-注解-分页查询

5、Spring Boot MyBatis升级篇-注解-分页PageHelper不生效

6、Spring Boot MyBatis升级篇-注解- mybatic insert异常:BindingException: Parameter 'name' not found

7、Spring Boot MyBatis升级篇-注解- #和$符号特别篇

8、Spring Boot MyBatis升级篇-注解-@Result

9、Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案一:<script>

10、Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案二:@Provider

11、Spring Boot MyBatis升级篇-注解-动态SQL-参数问题

12、Spring Boot MyBatis升级篇-注解-特别篇:@MapperScan和@Mapper

13、Spring Boot MyBatis升级篇-XML

14、Spring Boot MyBatis升级篇-XML-自增ID

15、Spring Boot MyBatis升级篇-XML-增删改查

16、Spring Boot MyBatis升级篇-XML-分页查询

17、Spring Boot MyBatis升级篇-XML-分页PageHelper不生效

18、Spring Boot MyBatis升级篇-XML-动态SQL(if test)

19、Spring Boot MyBatis升级篇-XML-注解-初尝试

20、Spring Boot MyBatis升级篇- pagehelper替换为pagehelper-spring-boot-starter

 

第八章 Spring Boot 知识点1

1、Spring Boot 拦截器HandlerInterceptor

2、Spring Boot启动加载数据CommandLineRunner

3、Spring Boot环境变量读取和属性对象的绑定

4、Spring Boot使用自定义的properties

5、Spring Boot使用自定义的properties

6、Spring Boot使用@SpringBootApplication

7、Spring Boot 监控和管理生产环境

 

第十章 Spring Boot 打包部署

1、Spring Boot打包部署((提供Linux的sh文件))

 

第十一章 Spring Boot 日志

1、spring boot日志—理论

2、Spring Boot日志-logback

 

3、Spring Boot日志-log4j2

分享到:
评论
2 楼 ylsn1982 2016-12-13  
楼主,为什么注册CharacterEncodingFilter时使用FilterRegistrationBean不起作用呢?
1 楼 mgs2002 2016-10-28  
我用@WebFilter配置过滤器有个问题,就是如果配置多个过滤器的时候执行顺序是否能指定,网上说是按A-Z字母的顺序执行,但是我实际测试下来是按照创建时间先后执行,能否解惑,谢谢

相关推荐

Global site tag (gtag.js) - Google Analytics