zoukankan      html  css  js  c++  java
  • 寻找写代码感觉(八)之SpringBoot过滤器的使用

    一、什么是过滤器?

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

    优秀不够,你是否无可替代

    软件测试交流QQ群:721256703,期待你的加入!!

    欢迎关注我的微信公众号:软件测试君


  • 相关阅读:
    用户代理列表--爬虫伪装浏览器访问用
    python爬虫解析页面数据的三种方式
    requests模块的使用
    Python pip源更改
    个人博客项目开发
    Django之中间件
    Django之发送邮件
    Django组件之用户认证组件
    Django之Cookie与session
    Django组件之分页器
  • 原文地址:https://www.cnblogs.com/longronglang/p/15470032.html
Copyright © 2011-2022 走看看