一、什么是过滤器?

过滤器是对数据进行过滤,预处理过程,当我们访问网站时,有时候会发布一些敏感信息,发完以后有的会用*替代,还有就是登陆权限控制等,一个资源,没有经过授权,肯定是不能让用户随便访问的,这个时候,也可以用到过滤器。过滤器的功能还有很多,例如实现URL级别的权限控制、压缩响应信息、编码格式等等。

过滤器依赖servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤。

二、过滤器的使用

下面简单的说说Spring Boot里面如何增加过滤器。

过滤器使用实例

具体示例代码如下:

 package com.rongrong.wiki.filter;

 import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException; @Component
public class LogFilter implements Filter { private static final Logger LOG = LoggerFactory.getLogger(LogFilter.class); @Override
public void init(FilterConfig filterConfig) throws ServletException { } @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// 打印请求信息
HttpServletRequest request = (HttpServletRequest) servletRequest;
LOG.info("------------- LogFilter 开始 -------------");
LOG.info("请求地址: {} {}", request.getRequestURL().toString(), request.getMethod());
LOG.info("远程地址: {}", request.getRemoteAddr()); long startTime = System.currentTimeMillis();
filterChain.doFilter(servletRequest, servletResponse);
LOG.info("------------- LogFilter 结束 耗时:{} ms -------------", System.currentTimeMillis() - startTime);
} /**
* 在销毁Filter时自动调用。
*/
@Override
public void destroy() {
System.out.println("我是过滤器的被销毁时调用的方法!,活不下去了................" );
}
}

过滤器里面的三个方法

  • init : filter对象只会创建一次,init方法也只会执行一次。
  • doFilter : 主要的业务代码编写方法,可以多次重复调用
  • destroy : 在销毁Filter时自动调用(程序关闭或者主动销毁Filter)。

三、测试结果

重新启动服务,刷新页面,查看结果如下图:

到此,SpringBoot过滤器的使用介绍完,有兴趣的同学自行尝试。

最新文章

  1. equals变量在前面或者在后面有什么区别吗?这是一个坑点
  2. ActiveMQ 复杂类型的发布与订阅
  3. ASP.NET连接远程Oracle数据库,提示试图加载格式不正确的程序
  4. [oracle] 解决ORA-30036:无法按8扩展段(在还原表空间‘XXXX’中)
  5. Struts2之Action
  6. 欧拉函数 cojs 2181. 打表
  7. SQLite.net发布后找不到"SQLite.Interop.dll"的问题
  8. C读取文件
  9. 位图字体生成工具Bitmap Font Generator的使用
  10. Contiki学习入门之概览
  11. QList 和std::list的比较
  12. spring boot 打war包部署,打jar包
  13. 06_Linux系统常用命令
  14. UOJ#450. 【集训队作业2018】复读机 排列组合 生成函数 单位根反演
  15. Java学习目录(持续更新中)
  16. Emmet 简介
  17. python一个命令开启http服务器
  18. java基础1(二)
  19. [uboot] (第一章)uboot流程——概述
  20. Raft知识图谱

热门文章

  1. Python - 3.8 新特性之仅位置参数 & 仅关键字参数
  2. Android线程池使用介绍
  3. JS004. 获取数组最后一个元素且不改变数组的四种方法
  4. finally方法体
  5. SpringBoot-初见
  6. 使用manacher算法解决最长回文子串问题
  7. html jquey的选择器checkbox,select
  8. svn的应用
  9. python多线程与_thread模块
  10. english note [6.3to6.9]