SpringBoot自定义Filter

SpringBoot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,当然我们可以自定
义Filter。

自定义Filter需要两个步骤:

  1. 实现Filter【javax.servlet.Filter】接口,实现Filter方法
  2. 添加 @Configuration 注解,将自定义Filter加入过滤链


【过滤打印请求URL】实例代码如下:

package xatu.zsl.Filter;

import org.apache.catalina.filters.RemoteIpFilter;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;

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

/*** Created by zsl on 2017/9/3.*/@Configurationpublic class ConfigurationFilter {@Beanpublic RemoteIpFilter remoteIpFilter() {return new RemoteIpFilter();}

@Beanpublic FilterRegistrationBean testFilterRegistration() {FilterRegistrationBean registration = new FilterRegistrationBean();registration.setFilter(new MyFilter());//添加过滤器registration.addUrlPatterns("/*");//设置过滤路径,/*所有路径registration.addInitParameter("name", "alue");//添加默认参数registration.setName("MyFilter");//设置优先级registration.setOrder(1);//设置优先级return registration;}

public class MyFilter implements Filter {@Overridepublic void destroy() {}

@Overridepublic void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChainfilterChain)

throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) srequest;//打印请求UrlSystem.out.println("this is MyFilter,url :" + request.getRequestURI());filterChain.doFilter(srequest, sresponse);}

@Overridepublic void init(FilterConfig arg0) throws ServletException {}}
}



有人好奇public FilterRegistrationBean testFilterRegistration() 这个方法返回的FilterRegistrationBean如何在Coltroller中获取?,(●’◡’●),我很好奇,,于是乎!搞了点事情


在Controller中获取刚才ConfigurationFilter中【registration.addInitParameter(“name”, “alue”);//添加默认参数】这个设置的参数。

在Controller中加入如下代码就能获取(刚才【testFilterRegistration()】方法加了注解@Bean,所以Spring容器中会有一个实例, @Autowired就理所应当的注入进来了。)

    @AutowiredFilterRegistrationBean registration;

@GetMapping("/getname")public Map<String, String> getName() {Map<String, String> initParameters = registration.getInitParameters();return initParameters;}

SpringBoot自定义Filter相关推荐

  1. springboot 自定义filter

    项目中会使用filters用于录调用日志.排除有XSS威胁的字符.执行权限验证等 解答:两个步骤 1实现Filter接口,实现Filter方法,代码如下 public class MyFilter i ...

  2. SpringBoot自定义Filter的三种方式

    方式一 : 使用OncePerRequestFilter OncePerRequestFilter该过滤器,是spring提供的.默认情况下,每一个请求都会经过该过滤器 方式二: @WebFilter ...

  3. 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener

    =================6.SpringBoot拦截器实战和 Servlet3.0自定义Filter.Listener ============ 1.深入SpringBoot2.x过滤器Fi ...

  4. 【SpringBoot】之自定义 Filter 过滤器

    目录 一.Filter 介绍 二.Filter 的拦截过程 三.自定义 Filter 一.Filter 介绍 Filter 过滤器主要用来过滤用户的请求,允许用户对请求进行前置处理和后置处理,比如实现 ...

  5. java filter注入,Spring-boot中Filter注入bean

    Spring-boot中Filter注入bean 在spring中使用Filter的方式不用再多说,但是通常情况下我们在使用filter中都可能会注入部分配置的类或者部分具有特殊功能的业务类. 在这种 ...

  6. SpringBoot之Filter过滤器的实现及排序问题

    相关文章: SpringBoot 之AOP切面的使用 SpringBoot之Listener注册到Spring容器中的多种方法 SpringBoot之Interceptor拦截器注入使用 Spring ...

  7. shiro学习系列:shiro自定义filter过滤器

    shiro学习系列:shiro自定义filter过滤器 自定义JwtFilter的hierarchy(层次体系) 上代码 package com.finn.springboot.common.conf ...

  8. SpringBoot 自定义全局异常处理器

    SpringBoot自定义全局异常处理器 一.maven依赖 二.GlobalExceptionHandler.java 三.ResponseStandard.java 四.logback.xml 五 ...

  9. SpringBoot的filter过滤器(内含源代码)

    SpringBoot的filter过滤器(内含源代码) 源代码下载地址:https://download.csdn.net/download/weixin_46411355/87399893 目录 S ...

最新文章

  1. 【C#实践】详解三层转七层:登录
  2. 如何高效维持网络长连接
  3. 获取计算机最大磁盘,Qt获取电脑磁盘容量(示例代码)
  4. 计算机科学与技术做什么实验,计算机科学与技术专业实验教学大纲
  5. WebHubBot 网络爬虫
  6. saliency filters精读之permutohedral lattice
  7. python希尔伯特变换_Hilbert变换提取信号特征的Python实现
  8. 11年电赛综合测评——单运放三角波发生器
  9. 微信怎样授权群相册服务器,怎么创建微信群相册?微信群相册设置与创建全攻略(图文)...
  10. Django rest framework之限流Throttling、内置过滤功能及第三方过滤功能及分页Pagination
  11. 《Total Commander:万能文件管理器》——第7.3节.总结与作业
  12. java工程师简历的潜规则你知道吗?
  13. 阿里云云原生数据湖体系全解读——元原生数据湖体系
  14. ION to SMMU
  15. redis分布式锁的原子保证
  16. 软件设计师:计算机系统
  17. 【面试经典】求解金矿问题(动态规划初级)
  18. 成功解决tensorflow.python.framework.errors_impl.InvalidArgumentError: slice index 1 of dimension 0 out o
  19. Java反序列化json内存溢出_fastjson反序列化使用不当致使内存泄露
  20. (UPCOJ暑期训练)Tally Counters

热门文章

  1. gearman mysql 扩展_Gearman的安装和使用
  2. Oracle B-tree、位图、全文索引三大索引性能比较及优缺点汇总(转载)
  3. 【HANA系列】SAP HANA XS创建XSJOB后台执行
  4. 怎么在activity里面操作listView的item里的组件的点击事件
  5. LeetCode:Balanced Binary Tree
  6. PHP操作Mongodb API 及使用类 封装好的MongoDB操作类
  7. Android之使用VideoView组件播放一个简单的视频
  8. Mysql(二)——简单查询及示例
  9. 计算机显示休眠状态进不去,解决方法:关闭计算机,或使其进入睡眠或休眠状态...
  10. flask简单登录注册