SpringBoot过滤器的使用

网友投稿 784 2022-11-23

SpringBoot过滤器的使用

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, FilterChainhttp:// filterChain) throws IOException, ServletException {

UkcCBobE // 打印请求信息

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)。

三、测试结果

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python之文件处理
下一篇:第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~