二、SpringBoot-Filter过滤器
1、创建过滤器,创建包com.hugh.filter用来存放过滤器,在该包下创建PCFilter类
package com.hugh.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; /** * @description PC端过滤器 * @author Hugh.liu * @date 2018年11月26日 * @version 1.0 */ public class PCFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) srequest; System.out.println("PC端拦截器:" + request.getRequestURI()); filterChain.doFilter(srequest, sresponse); } @Override public void init(FilterConfig arg0) throws ServletException { } }
2、为了演示多个过滤器的配置特加了两个过滤器,在com.hugh.filter包下创建MobileFilter类
package com.hugh.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; /** * @description Mobile端过滤器 * @author Hugh.liu * @date 2018年11月26日 * @version 1.0 */ public class MobileFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) srequest; System.out.println("Mobile端拦截器:" + request.getRequestURI()); filterChain.doFilter(srequest, sresponse); } @Override public void init(FilterConfig arg0) throws ServletException { } }
3、创建配置类并配置两个过滤器,创建包com.hugh.config用来存放配置类,在该包下创建FilterConfig类
package com.hugh.config; 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 com.hugh.filter.MobileFilter; import com.hugh.filter.PCFilter; /** * @description 过滤器配置类 * @author Hugh.liu * @date 2018年11月26日 * @version 1.0 */ @Configuration public class FilterConfig { @Bean public RemoteIpFilter remoteIpFilter() { return new RemoteIpFilter(); } /** * PC端过滤器 * @return */ @Bean public FilterRegistrationBean pcFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new PCFilter()); registration.addUrlPatterns("/*"); registration.addInitParameter("paramName", "paramValue"); registration.setName("PCFilter"); registration.setOrder(1); return registration; } /** * Mobile过滤器 * @return */ @Bean public FilterRegistrationBean mobileFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new MobileFilter()); registration.addUrlPatterns("/*"); registration.addInitParameter("paramName", "paramValue"); registration.setName("MobileFilter"); registration.setOrder(2); return registration; } }
说明:@Configuration注解,将自定义Filter加入过滤链
registration.setOrder(1);过滤器顺序按order的大小排序,数字越小越先执行
4、再执行http://localhost:8080/helloWorld,控制台输出如下证明已成功:


浙公网安备 33010602011771号