当前位置:首页 > 编程教程 > java技术文章 > SpringBoot 2 快速整合 Filter过程解析

SpringBoot 2 快速整合 Filter过程详解

  • 发布时间:
  • 作者:码农之家
  • 点击:118

这篇文章主要知识点是关于springboot、2、filter、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Spring Boot 2+Thymeleaf企业应用实战
  • 类型:Spring Boot大小:215.6 MB格式:PDF作者:杨恩雄
立即下载

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。

SpringBoot 2 快速整合 Filter过程解析

SpringBoot 2 快速整合 Filter过程解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

您可能感兴趣的文章:

  • 实例分析django 自定义过滤器(filter)处理较为复杂的变量方法
  • JS中的 map, filter, some, every, forEach, for in, for of 用法
  • filter()与find()的用法以及children()与find()的区别整理
  • Django中利用filter与simple_tag为前端自定义函数的方法详解
  • 相关电子书
    学习笔记
    网友NO.169256

    浅谈SpringMVC中Interceptor和Filter区别

    Interceptor 主要作用:拦截用户请求,进行处理,比如判断用户登录情况、权限验证,只要针对Controller请求进行处理,是通过HandlerInterceptor。 Interceptor分两种情况,一种是对会话的拦截,实现spring的HandlerInterceptor接口并注册到mvc的拦截队列中,其中preHandle()方法在调用Handler之前进行拦截(上图步骤3),postHandle()方法在视图渲染之前调用(上图步骤5),afterCompletion()方法在返回相应之前执行;另一种是对方法的拦截,需要使用@Aspect注解,在每次调用指定方法的前、后进行拦截。 Filter 主要作用:过滤字符编码、做一些业务逻辑判断,主要用于对用户请求进行预处理,同时也可进行逻辑判断。 Filter在请求进入servlet容器执行service()方法之前就会经过filter过滤(上图步骤1),不像Intreceptor一样依赖于springmvc框架,只需要依赖于servlet。Filter启动是随WEB应用的启动而……

    网友NO.314117

    SpringBoot中使用Filter和Interceptor的示例代码

    一、Filter(过滤器) Filter接口定义在javax.servlet包中,是Servlet规范定义的,作用于Request/Response前后,被Servlet容器调用,当Filter被Sring管理后可以使用Spring容器资源。 实现一个Filter 自定义的过滤器需要实现javax.servlet.Filter,Filter接口中有三个方法: init(FilterConfig filterConfig):过滤器初始化的被调用。 doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain):在doFilter()方法中,chain.doFilter()前的一般是对request执行的过滤操作,chain.doFilter后面的代码一般是对response执行的操作,chain.doFiter()执行下一个过滤器或者业务处理器。 destory():过滤器销毁的时候被调用。 在Spring容器中使用过滤器 通过FilterRegistrationBean @Configuration public class WebConfig{ @Bean public FilterRegistrationBean xxxFilter() { FilterRegistrationBean registrationBean = new FilterRegistrationBean(); registrationBean.setFil……

    网友NO.511290

    springboot扫描自定义的servlet和filter代码详解

    这几天使用spring boot编写公司一个应用,在编写了一个filter,用于指定编码的filter,如下: /** * Created by xiaxuan on 16/11/1. */@WebFilter(urlPatterns = "/*",filterName="CharacterEncodeFilter", initParams={ @WebInitParam(name="encoding",value="UTF-8"), @WebInitParam(name = "forceEncoding", value = "true") })@Singletonpublic class CharacterEncodingFilter implements Filter { private String encoding = "UTF-8"; private boolean forceEncoding = true; @Override public void init(FilterConfig filterConfig) throws ServletException { this.encoding = filterConfig.getInitParameter("encoding"); String force = filterConfig.getInitParameter("forceEncoding"); this.forceEncoding = (force == null) || Boolean.valueOf(force); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (this.forceEncoding || request.getCharacterEncoding() == null) { request.setCharacterEncoding(this.encoding); ……

    <
    1
    >

    Copyright 2018-2020 www.xz577.com 码农之家

    投诉 / 推广 / 赞助:QQ:520161757