- @WebFilter(urlPatterns = "/*")
- @Order(value = 1)
- public class TestFilter implements Filter {
-
- private static final Set<String> ALLOWED_PATHS = Collections.unmodifiableSet(new HashSet<>(
- Arrays.asList("/main/excludefilter", "/login", "/logout", "/register")));
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
- System.out.println("init-----------filter");
- }
-
- @Override
- public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
- HttpServletRequest request = (HttpServletRequest) req;
- HttpServletResponse response = (HttpServletResponse) res;
- String path = request.getRequestURI().substring(request.getContextPath().length()).replaceAll("[/]+$", "");
- boolean allowedPath = ALLOWED_PATHS.contains(path);
-
- if (allowedPath) {
- System.out.println("这里是不需要处理的url进入的方法");
- chain.doFilter(req, res);
- }
- else {
- System.out.println("这里是需要处理的url进入的方法");
- }
- }
-
- @Override
- public void destroy() {
- System.out.println("destroy----------filter");
- }
- }
@Order中的value越小,优先级越高。
ALLOWED_PATHS这个是一个集合,存放的是需要排出的URL,用来判断是否是需要排除的URL。
关于为什么SpringBoot中使用了@WebFilter但是过滤器却没有生效:一定要加上@Configuration注解,@Service其实也可以,其他类似。