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