A API Servlet padrão não suporta esse recurso. Você pode usar um filtro de URL de reescrita como o de Tuckey (que é muito semelhante ao HTTPD do Apache mod_rewrite) ou adicionar uma verificação no doFilter()método de escuta do filtro /*.
String path = ((HttpServletRequest) request).getRequestURI();
if (path.startsWith("/specialpath/")) {
chain.doFilter(request, response); // Just continue chain.
} else {
// Do your business stuff here for all paths other than /specialpath.
}
Se necessário, é possível especificar os caminhos a serem ignorados como um init-paramfiltro, para que você possa controlá-lo da mesma web.xmlmaneira. Você pode obtê-lo no filtro da seguinte maneira:
private String pathToBeIgnored;
public void init(FilterConfig config) {
pathToBeIgnored = config.getInitParameter("pathToBeIgnored");
}
Se o filtro fizer parte da API de terceiros e, portanto, você não puder modificá-lo, mapeie-o de forma mais específica url-pattern, por exemplo, /otherfilterpath/*e crie um novo filtro no /*qual encaminha para o caminho correspondente ao filtro de terceiros.
String path = ((HttpServletRequest) request).getRequestURI();
if (path.startsWith("/specialpath/")) {
chain.doFilter(request, response); // Just continue chain.
} else {
request.getRequestDispatcher("/otherfilterpath" + path).forward(request, response);
}
Para evitar que esse filtro se auto-identifique em um loop infinito, é necessário deixá-lo ouvir (despachar) REQUESTapenas e o filtro de terceiros FORWARDsomente.
Veja também: