spring boot 2.1.5 @WebFilter 自己使用的问题
今天写了一个filiter,如下
import org.springframework.stereotype.Component;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;@Component
@WebFilter(urlPatterns = "/*", filterName = "simpleT")
public class SimpleTestFilter implements Filter {@Overridepublic void init(FilterConfig arg0) throws ServletException {System.out.println("过滤器初始化");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {System.out.printf("过滤器实现 start");System.out.println(((HttpServletRequest) servletRequest).getRequestURI());System.out.printf("过滤器实现 end");filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {System.out.println("过滤器销毁了");}}
发现的问题是重复打印了,然后打开debug 发现,我定义的filter被重复注册到调用链中了。
这肯定是自己的配置出了问题。于是,我选择了,第一是改变名称,让filterName 为类名的首字母小写。
import org.springframework.stereotype.Component;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;@Component
// @WebFilter(urlPatterns = "/*", filterName = "simpleT") 这是第一版的
@WebFilter(urlPatterns = "/*", filterName = "simpleTestFilter ")
public class SimpleTestFilter implements Filter {@Overridepublic void init(FilterConfig arg0) throws ServletException {System.out.println("过滤器初始化");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {System.out.printf("过滤器实现 start");System.out.println(((HttpServletRequest) servletRequest).getRequestURI());System.out.printf("过滤器实现 end");filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {System.out.println("过滤器销毁了");}}
这次就对了,只有一个fiiter, 哈哈对了。
但是但是 这肯定是错误的做法。因为既然可以让你自由命名,你却又不能自由命名这样的矛盾设计应该不会在成熟的社区软件中存在。肯定是我自己哪里做错了。于是有了下面的版本
import org.springframework.stereotype.Component;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;// @Component 第三版删除这个注解
// @WebFilter(urlPatterns = "/*", filterName = "simpleT") 这是第一版的
// @WebFilter(urlPatterns = "/*", filterName = "simpleTestFilter ") 这是第二版的
@WebFilter(urlPatterns = "/*", filterName = "simpleT") // 第三版和第一版相同
public class SimpleTestFilter implements Filter {@Overridepublic void init(FilterConfig arg0) throws ServletException {System.out.println("过滤器初始化");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {System.out.printf("过滤器实现 start");System.out.println(((HttpServletRequest) servletRequest).getRequestURI());System.out.printf("过滤器实现 end");filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {System.out.println("过滤器销毁了");}}
结果如下是对的
总结:待写
spring boot 2.1.5 @WebFilter 自己使用的问题相关推荐
- Spring Boot 解决跨域问题的 3 种方案!
以下文章来源方志朋的博客,回复"666"获面试宝典 作者:telami 来源:www.telami.cn/2019/springboot-resolve-cors/ 前后端分离大势 ...
- Spring Boot实战:拦截器与过滤器
一.拦截器与过滤器 在讲Spring boot之前,我们先了解一下过滤器和拦截器.这两者在功能方面很类似,但是在具体技术实现方面,差距还是比较大的.在分析两者的区别之前,我们先理解一下AOP的概念,A ...
- java按需读取word文件_干货分享:ASP.NET CORE(C#)与Spring Boot MVC(JAVA)异曲同工的编程方式总结...
我(梦在旅途,http://zuowj.cnblogs.com; http://www.zuowenjun.cn)最近发表的一篇文章<.NET CORE与Spring Boot编写控制台程序应有 ...
- Spring Boot 注册 Servlet 的三种方法,真是太有用了!
2019独角兽企业重金招聘Python工程师标准>>> 本文栈长教你如何在 Spring Boot 注册 Servlet.Filter.Listener. 你所需具备的基础 什么是 ...
- Spring Boot 添加拦截器的配置方式
在进行 Java Web 开发的时候我们经常会使用到过滤器,例如日志的记录.权限的验证等功能.以前使用 Spring MVC 的时候需要在 web.xml 中配置过滤器,现在使用 Spring Boo ...
- 熵增学院-Anders-剑走偏锋,了解Spring Boot内部Servlet容器
2019独角兽企业重金招聘Python工程师标准>>> 还记得大明湖畔的servlet吗?其实Spring Boot支持内嵌的Tomcat, Jetty和Undertow服务器,多数 ...
- springboot_4 spring boot 使用servlet,filter,listener和interceptor
上一篇我们学习了 spring boot 利用Controller响应数据与响应页面. 一般的Web开发使用 Controller 基本上可以完成大部分需求,但是有的时候我们还是会用到 Servlet ...
- Spring Boot下Druid连接池的使用配置分析
引言: 在Spring Boot下默认提供了若干种可用的连接池,Druid来自于阿里系的一个开源连接池,在连接池之外,还提供了非常优秀的监控功能,这里讲解如何与Spring Boot实现集成. 1. ...
- spring boot 拦截器获取controller返回的数据_高级码农Spring Boot实战与进阶之过滤器和拦截器的使用及其区别...
众所周知的Spring Boot是很优秀的框架,它的出现简化了新Spring应用的初始搭建以及开发过程,大大减少了代码量,目前已被大多数企业认可和使用.这个专栏将对Spring Boot框架从浅入深, ...
最新文章
- Android下PopupWindow隐藏及显示(showAtLocation/showAsDropDown)
- python文件操作的一般步骤_Python基础之文件操作
- 【算法系列之六】两整数之和
- [JZOJ P1288] [DP]矩阵取数
- c语言课程设计实验设备,C语言课程设计课程设计_力学实验设备管理系统
- Vue2.0以后,有哪些变化
- Git是目前世界上最先进的分布式版本控制系统(没有之一)。
- 图论500道题--评测平台+算法标签
- 电影数据集TMDB数据分析练习
- 大话数据结构-单链表勘误,计划调整
- linux某用户 计划任务,Linux计划任务管理
- 【局域网音频实时传输、屏幕单播及广播】
- java的关键业绩指标_SpreadJS前端开发案例:如何利用Javasrcipt创建财务关键业绩指标表...
- CNS文章代码学习(一)Immunity 三级淋巴结构
- 重t2加权是什么意思_魔兽世界怀旧服:为什么BWL打不腻,TAQ没多久大家都AFK了?...
- 什么是内联电子商务_什么是电子商务
- buddypress主题_如何在WordPress 3.0中启用BuddyPress
- 如何使用pip安装causalml
- 传统民间游戏于文化消费
- Android修行手册 - VideoView全解-下