原創 2017年07月03日 19:40:42 標籤: filter / exclude / spring boot [java] view plain copy

    @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其實也可以,其他類似。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章