Is there a way to specify negative mappings in web.xml
? For example, I want to set a filter for ALL requests EXCEPT those matching \'/public/*
\'.
No, that's not possible. You'd have to do the URL pattern matching yourself inside the doFilter()
method. Map the filter on /*
and do the following job:
HttpServletRequest req = (HttpServletRequest) request;
if (req.getRequestURI().startsWith("/public/")) {
chain.doFilter(request, response);
return;
}
// ...
or when there's actually a context path:
HttpServletRequest req = (HttpServletRequest) request;
if (req.getRequestURI().startsWith(req.getContextPath() + "/public/")) {
chain.doFilter(request, response);
return;
}
// ...