• 玩转 SpringBoot 2 快速整合 Filter


    概述

    SpringBoot 中没有 web.xml, 我们无法按照原来的方式在 web.xml 中配置 Filter 。但是我们可以通过 JavaConfig(@Configuration +@Bean)方式进行配置。通过FilterRegistrationBean 将自定义 Filter 添加到 SpringBoot 的过滤链中。

    实战操作

    实战操作通过定义一个拦截所有访问项目的URL的 Filter来进行演示的。

    首先定义一个统一访问 URL 拦截的 Filter。代码如下:

    public class UrlFilter implements Filter {
    	private Logger log =  LoggerFactory.getLogger(UrlFilter.class);
     
    	@Override
    	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    			throws IOException, ServletException {
    	HttpServletRequest httpServletRequest = (HttpServletRequest) request;
    		String requestURI = httpServletRequest.getRequestURI();
    		StringBuffer requestURL = httpServletRequest.getRequestURL();
    		log.info("requestURI:" +requestURI+" "+"requestURL:"+requestURL);
    		chain.doFilter(httpServletRequest, response);
    	}
     
    }
    

    通过 javaConfig方式配置 SpringBoot 过滤链类 FilterRegistrationBean,具体代码如下:

    @Configuration
    public class FilterConfig {
    	@Bean
    	public FilterRegistrationBean filterRegistration() {
    		FilterRegistrationBean registration = new FilterRegistrationBean();
    		registration.setFilter(new UrlFilter());
    		List<String> urlList = new ArrayList<String>();
    	    urlList.add("/*");
    	    registration.setUrlPatterns(urlList);
    		registration.setName("UrlFilter");
    		registration.setOrder(1);
    		return registration;
    	}
    }
    

    FilterRegistrationBean 中方法介绍:

    registration.setFilter(Filter filter):设置我们自定义Filter对象。

    registration.setUrlPatterns(Collection urlPatterns):设置自定义Filter需要拦截的URL的集合。

    registration.setName(String name): 设置自定义Filter名称。

    registration.setOrder(int order):设置自定义Filter拦截顺序。

    测试

    启动 SpirngBoot 项目并通过游览器访问我们的项目下的 index.html。
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    做题遇到的问题集合
    常见算法和数据结构存在的坑(updating)
    Loj#2090. 「ZJOI2016」旅行者(网格图分治)
    洛谷P3332 [ZJOI2013]K大数查询(整体二分板题)
    dij费用流模板
    KM求每个大小的匹配的最优解 模板
    JZOJ 5067. 【GDOI2017第二轮模拟day2】有理有据题 (KD-tree+历史最值问题)
    Codeforces 1186F. Vus the Cossack and a Graph(欧拉回路)
    bzoj#2095. [Poi2010]Bridges(二分+混合图欧拉回路)
    二维最小乘积生成树模板
  • 原文地址:https://www.cnblogs.com/jerry126/p/11460247.html
Copyright © 2020-2023  润新知