<filter> <filter-name>TestFilter</filter-name> <!--定义filter名称 和filter类 --> <filter-class>com.jiafeng.filter.TestFilter</filter-class> </filter> <filter-mapping> <filter-name>TestFilter</filter-name> <url-pattern>/*</url-pattern> <!--设置filter拦截路径 --> <init-param> <param-name>paramName</param-name> <!-- 添加初始参数 --> <param-value>paramValue</param-value> </init-param> </filter-mapping>
先定义Filter类:Myfilter,而后经过FilterRegistrationBean将filter注册到调用链中。web
@Configuration //至关于spring中的<beans>标签 public class WebConfiguration { @Bean //至关于spring中<bean>标签 public FilterRegistrationBean<MyFilter> testFilterRegistration() { FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>(); registration.setFilter(new MyFilter()); registration.addUrlPatterns("/*");//配置过滤路径 registration.addInitParameter("paramName", "paramValue");//添加初始值 registration.setName("myFilter");//设置filter名称 registration.setOrder(1);//请求中过滤器执行的前后顺序,值越小越先执行 return registration; } public class MyFilter implements Filter { @Override public void destroy() { System.out.println("销毁MyFilter"); } @Override public void doFilter(ServletRequest sRequest, ServletResponse sResponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) sRequest; System.out.println("this is MyFilter url :" + request.getRequestURI()); chain.doFilter(sRequest, sResponse); } @Override public void init(FilterConfig arg0) throws ServletException { System.out.println("初始化MyFilter"); } } }
定义过滤器类:HelloFilter,在过滤器类上添加@WebFilter注解配置过滤器名称、过滤路径等属性,经过@Order配置过滤器执行顺序。spring
注意使用@WebServlet、@WebFilter、@WebListener等servlet注解时须要在springboot的启动类上添加@ServletComponentScan注解,不然不会生效。springboot
@WebFilter(urlPatterns="/*",filterName="helloFilter",initParams= {@WebInitParam(name="paramName",value="paramValue"),@WebInitParam(name="paramName2",value="paramValue2")}) @Order(2) public class HelloFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { System.out.println("执行过滤器Hello Filter !"); filterChain.doFilter(request, response); } @Override public void init(FilterConfig arg0) throws ServletException { System.out.println("初始化HelloFilter!"); } }
启动类app
@SpringBootApplication @ServletComponentScan public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }