spring boot自定义过滤器

自定义Filter

spring boot中实现Filter有两种方式

1、利用@WebFilter注解实现
@WebFilter(urlPatterns = "*", filterName = "myFilter", initParams = { @WebInitParam(name = "name1", value = "wfs"), @WebInitParam(name =
        "name2", value = "gqq") })
public class MyFilter implements Filter{
	@Override
    public void init(FilterConfig filterConfig) throws ServletException {
    	//todo 初始化
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
            throws IOException, ServletException {
        // todo  自定义操作
        filterChain.doFilter(servletRequest, servletResponse);
    }
    @Override
    public void destroy() {
		//销毁
    }

@WebFilter常用属性

属性类型描述
filterNameStringFilter名称
urlPatterns/valueString[]指定拦截的url
servletNamesString[]指定拦截的servlet名称
initParamsWebInitParam[]初始化参数
displayNameString用于显示的Filter名称
asyncSupportedboolean是否支持异步
dispatcherTypesDispatcherType[]指定Filter对哪种方式的请求进行过滤。支持的属性:ASYNC、ERROR、FORWARD、INCLUDE、REQUEST;默认过滤所有方式的请求

注意:需要在启动类增加注解@ServletComponentScan来启用
使用此方法实现的Filter的执行顺序是按照过滤器类名称顺序执行,所以推荐第二种实现方式

2、使用java config来实现
@Configuration
public class WebMvcConfiguration {
    @Bean
    public FilterRegistrationBean filterRegistrationBean() {
       	FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new MyFilter());
        filterRegistrationBean.addInitParameter("name1", "123");
        filterRegistrationBean.addInitParameter("name2", "hhh");
        filterRegistrationBean.setOrder(1);
        filterRegistrationBean.addUrlPatterns("/*");
    }
}

推荐使用第二种方法实现,可以设置执行顺序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值