工作专题java学习

SpringBoot自定义 Filter并配置

2017-11-27  本文已影响461人  我弟是个程序员

过滤器不用说了,项目中很多常用的地方,比如用户登录认证等。下面来看看如何创建一个Filter并交给Spring容器管理

1.新建MyFilter,要做的校验,可以在doFilter重载函数中进行

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

public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        System.out.println("this is MyFilter,url :"+request.getRequestURI());
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }
}
2.将自定义 Filter 加入过滤链
import com.sqlb.qiqi.filter.MyFilter;
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;

@Configuration
public class FilterConfiguration {

    @Bean
    public RemoteIpFilter remoteIpFilter() {
        return new RemoteIpFilter();
    }

    @Bean
    public FilterRegistrationBean testFilterRegistration() {

        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new MyFilter());
        registration.addUrlPatterns("/*");
        registration.addInitParameter("paramName", "paramValue");
        registration.setName("MyFilter");
        registration.setOrder(1);
        return registration;
    }
}

添加完后启动项目,就可以生效了。访问任意的 Url,都会看到控制台打印如下信息:

this is MyFilter,url :/xxx
上一篇 下一篇

猜你喜欢

热点阅读