springboot2.1中添加过滤器配置

1:构造一个实现 Filter 接口的过滤器,并在类上添加@component注释:

notice1:若不添加,则需在spring中注入该bean,不然会报错。

package com.dev.filter;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;

/**
 * Created by zgq7 on 2019/6/6.
 */
@Component
public class BaseFilter implements Filter {
    private static final Logger log = LoggerFactory.getLogger(BaseFilter.class);

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Map<Object, Object> map = new LinkedHashMap<>(10);
        map.put("filterName", filterConfig.getFilterName());

        log.info("filter config indclude :{}", map);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;

        String uri = request.getRequestURI();

        Map<Object, Object> map = new HashMap<>(10);
        map.put("url", request.getRequestURL());
        map.put("uri", uri);
        map.put("requestType", request.getMethod());
        log.info("{}", map);

        filterChain.doFilter(request, response);
    }

    @Override
    public void destroy() {
        log.info("filter destroyed ...");
    }
}

2:编写过滤器配置类,并在类上添加@Configuration注释,告诉spring声明这是一个配置类:

package com.dev.config;

import com.dev.filter.BaseFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.*;
/**
 * Created by zgq7 on 2019/6/6.
 */
@Configuration
public class SpringConfig {

    @Bean
    public FilterRegistrationBean<BaseFilter> filterFilterRegistrationBean(BaseFilter baseFilter) {
        FilterRegistrationBean<BaseFilter> filterFilterRegistrationBean = new FilterRegistrationBean<>();

        //拦截路径配置
        List<String> uriList = new ArrayList<>(10);
        uriList.add("/dev/*");

        filterFilterRegistrationBean.setFilter(baseFilter);
        filterFilterRegistrationBean.setEnabled(true);
        filterFilterRegistrationBean.setUrlPatterns(uriList);
        filterFilterRegistrationBean.setName("baseFilter");
        filterFilterRegistrationBean.setOrder(1);

        return filterFilterRegistrationBean;
    }

}

3:编写一个controller进行测试:

package com.dev.controller;

import com.google.common.collect.ImmutableMap;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * Created by zgq7 on 2019/6/6.
 */
@RestController
@RequestMapping(value = "/dev")
public class BaseController {

    @GetMapping(value = "")
    public Map<Object, Object> get() {
        return ImmutableMap.of("code", "get");
    }

    @PutMapping(value = "t")
    public Map<Object, Object> t() {
        return ImmutableMap.of("code", "put");
    }

    @PostMapping(value = "s")
    public Map<Object, Object> s() {
        return ImmutableMap.of("code", "post");
    }

}

4:使用psotMan进行测试:

5:控制台如下:

输出该日志是因为过滤器拦截到了 /dev 路径下的请求才输出的。可自行测试哦~~~

原文地址:https://www.cnblogs.com/zgq7/p/11077426.html

时间: 2024-10-10 05:00:43

springboot2.1中添加过滤器配置的相关文章

CLion 中添加 release 配置

CLion 中添加 release 配置 CLion 自 2016.3 版本开始更改了 CMake 的工作流程, CLion 不再直接构建 CMake 支持的 4 种配置模式. 用户可以通过 File > Settings... > Build, Execution, Deployment > CMake 面板添加其余三种配置. 点 + 号,然后在 Build type 下拉栏中选择所需的类型. 参考文献 [1] Stack Overflow 原文地址:https://www.cnblo

vue中添加less配置,用于计算div高度

需求:左边垂直的菜单栏高度设置为 100% - 导航栏的高度(3.6rem) 首先,从vue-cli脚手架里的安装的webpack模板中并没有less的依赖配置,得自己手动添加安装 安装命令::npm install less less-loader --save 安装完后packahe.json中出现如图添加的配置: 然后可以在 .vue 的文件中书写less代码了, 结果:

AJAX跨域访问如何再服务器中添加过滤器

1.再工程文件中新建filter package com.TestFilter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import

springboot环境中,可能会出现使用font-Awesome结果图标不显示的问题,在webService的pom文件中添加如下配置代码

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> &

angularjs表达式中添加过滤器-lowercase

html结构 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title></title> <link rel="stylesheet" href=""

maven中添加json-lib的jar包

在maven配置文件pom.xml中添加如下配置信息: <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> 注: 在maven官网中的提示添加

asp.net中web.config配置节点大全详解【转】

web.config 文件查找规则: (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找. (2)如果当前页面所在目录下不存在web.config文件或者web.config文件中不存在该结点名,则查找它的上级目录,直到网站的根目录. (3)如果网站根目录下不存在web.config文件或者web.config文件中不存在该节点名则在%windir%"Microsoft.NET"Framework"v2.0.

(转)如何在maven的pom.xml中添加本地jar包

1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下所示: 1 groupId 2 artifactId 3 version 4 jar包的依赖 如果要将maven本地仓库中的jar包添加到项目中,直接打开4 xx.pom文件,将改jar包的相关依赖复制pom.xml文件中即可. 2 将本地jar包添加到本地仓库 2.1 添加jar到本地仓库 原则上Maven的设计是不需要这么做的,因为pom.xml中依赖的jar包会自动实现从中央仓库下载到本地仓库

duilib中添加自定义控件之后怎么能够在xml文件中配置使用

添加自定义控件可能有两种不同的情况: 1.  在duilib库中添加的自定义控件. 2.  在我们的应用程序中自己重写了一个控件. 下面开始讲解不同的情况下怎么才能支持在xml文件配置控件: 1.  库中情况 假如自定义的控件是CGifUI类. 库中情况相对是比较简单的,只需在分析xml文件时候将控件创建出来就行了,所以我找到的函数是CControlUI* CDialogBuilder::_Parse(CMarkupNode* pRoot, CControlUI* pParent, CPaint