SpringBoot过滤器的使用

作者:久曲键 时间:2023-08-28 21:28:56 

一、什么是过滤器

过滤器是对数据进行过滤,预处理过程,当我们访问网站时,有时候会发布一些敏感信息,发完以后有的会用*替代,还有就是登陆权限控制等,一个资源,没有经过授权,肯定是不能让用户随便访问的,这个时候,也可以用到过滤器。过滤器的功能还有很多,例如实现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过滤器的使用

来源:https://www.cnblogs.com/longronglang/p/15470032.html

标签:SpringBoot,过滤器
0
投稿

猜你喜欢

  • Java实现Http工具类的封装操作示例

    2021-08-14 10:27:57
  • JAVA使用hutool工具实现查询树结构数据(省市区)

    2021-11-04 18:30:09
  • 利用Thumbnailator轻松实现图片缩放、旋转与加水印

    2022-03-26 18:44:04
  • IDEA插件开发之环境搭建过程图文详解

    2022-01-17 14:04:08
  • Struts2 $,#,%详解及实例代码

    2021-09-10 04:18:40
  • WPF实现XAML转图片的示例详解

    2023-09-13 21:38:51
  • Android 属性动画ValueAnimator与插值器详解

    2023-04-12 19:05:33
  • Spring Boot 集成MyBatis 教程详解

    2021-10-12 04:49:21
  • Android界面设计(APP设计趋势 左侧隐藏菜单右边显示content)

    2023-05-20 04:54:24
  • Spring Boot 工程的创建和运行(图文)

    2022-06-26 15:39:49
  • OpenCV + MFC实现简单人脸识别

    2023-02-24 06:15:55
  • Java中超详细this与super的概念和用法

    2021-05-25 19:45:50
  • 详解springboot集成mybatis xml方式

    2022-08-05 09:04:54
  • Spring Boot插件spring tool suite安装及使用详解

    2021-12-15 03:29:23
  • RocketMQ特性Broker存储事务消息实现

    2022-07-10 20:42:13
  • Proxy实现AOP切面编程案例

    2023-07-23 06:44:52
  • Java计算文本MD5加密值的方法示例

    2023-11-15 13:18:48
  • java+jsp+struts2实现发送邮件功能

    2023-08-28 18:25:27
  • SpringBoot实用小技巧之如何动态设置日志级别

    2023-02-09 04:27:58
  • 一篇文章带你入门Java Script

    2023-09-12 06:09:24
  • asp之家 软件编程 m.aspxhome.com