SpringBoot自定义Filter


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 {    @Bean    public RemoteIpFilter remoteIpFilter() {        return new RemoteIpFilter();    }

@Bean    public 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 {        @Override        public void destroy() {        }

@Override        public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain                filterChain)

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

@Override        public void init(FilterConfig arg0) throws ServletException {        }    }}


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



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

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

    @Autowired    FilterRegistrationBean registration;

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

原文地址:https://www.cnblogs.com/jpfss/p/9070834.html

时间: 2024-10-08 22:37:11

SpringBoot自定义Filter的相关文章

Spring-Boot使用嵌入式容器,那怎么配置自定义Filter呢

Listener.Filter和Servlet是Java Web开发过程中常用的三个组件,其中Filter组件的使用频率最高,经常被用来做简单的权限处理.请求头过滤和防止XSS攻击等.如果我们使用的是传统的Spring MVC进行开发,那么只需要在Tomcat的web.xml文件中进行如下配置即可: <!-- 配置Listener --> <listener> <listener-class>org.springframework.web.util.WebAppRoot

springboot(八)自定义Filter

自定义Filter 我们常常在项目中会使用filters用于录调用日志.排除有XSS威胁的字符.执行权限验证等等. Spring Boot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,并且我们可以自定义Filter. 两个步骤: 实现Filter接口,实现Filter方法 添加@Configurationz 注解,将自定义Filter加入过滤链 package cn.cnki.ref.filter; import org.a

SpringBoot(8) SpringBoot过滤器Filter

1.SpringBoot启动默认加载的Filter characterEncodingFilter hiddenHttpMethodFilter httpPutFormContentFilter requestContextFilter 2.Filter优先级(Ordered.HIGHEST_PRECEDENCE  Ordered.LOWEST_PRECEDENCE) 低位值意味着更高的优先级 Higher values are interpreted as lower priority 自定义

Spring Boot使用嵌入式容器,自定义Filter如何配置?

Listener.Filter和Servlet是Java Web开发过程中常用的三个组件,其中Filter组件的使用频率最高,经常被用来做简单的权限处理.请求头过滤和防止XSS***等.如果我们使用的是传统的Spring MVC进行开发,那么只需要在Tomcat的web.xml文件中进行如下配置即可: <!-- 配置Listener --> <listener> <listener-class>org.springframework.web.util.WebAppRoo

Atitit.struts排除url&#160;的设计and&#160;原理&#160;自定义filter&#160;排除特定url

Atitit.struts排除url 的设计and 原理 自定义filter 排除特定url 1.1. 原理流程1 2. Invoke1 3. StrutsX2 1.1. 原理流程 读取struts配置xml文件内容 得到多个regexpress规则,匹配规则与uri <constant name="struts.action.excludePattern" value="/com.attilax/core/approot_js.jsp,.*\.jsp,/api.jsp

angular自定义filter

angular自定义filter angular除了几个自带的常用的filter,还可以自定义filter,以满足不同的需求,简单研究了一下自定义filter,记录一下. 有如下场景,后台返回的数据中,status可能是英文字符串,如果在html中使用if进行挨个判断,则显得有些啰嗦,这样我们就可以使用自定义的filter实现 javasc代码: var myapp = angular.module('demoApp', []); myapp.controller('filterControll

Asp.net mvc自定义Filter简单使用

自定义Filter的基本思路是继承基类ActionFilterAttribute,并根据实际需要重写OnActionExecuting,OnActionExecuted,OnResultExecuting,OnResultExecuted这四个中的一个或多个方法. 注意类名一定要以Attribute结尾. 故名思义,Action执行前,执行后,结果返回前,结果返回后.所以它们的执行先后顺序就是OnActionExecuting,OnActionExecuted,Action,OnResultEx

DirectX:在graph自动连线中加入自定义filter

为客户提供的视频播放的filter的测试程序中,采用正向手动连接的方式(http://blog.csdn.net/mao0514/article/details/40535791),由于不同的视频压缩格式,导致这种方式的缺点是不能及时的播放任意的视频文件.现在,采用在自动连线的graph中添加自己的filter: 过程如下: 1. 构建自动连线graph: 2. 在graph中查找render filter: 3.在renderf ilter上查找输入m_r_in_pin的上位连接m_n_out

Spring-Security 自定义Filter完成验证码校验

Spring-Security的功能主要是由一堆Filter构成过滤器链来实现,每个Filter都会完成自己的一部分工作.我今天要做的是对UsernamePasswordAuthenticationFilter进行扩展,新增一个Filter,完成对登录页面的校验码的验证.下面先给一张过滤器的说明,接下来讲自定义的登录验证Filter.  https://docs.spring.io/spring-security/site/docs/3.2.8.RELEASE/reference/htmlsin