为servlet映射指定负路径匹配

Jac*_*sey 9 servlets servlet-filters

有没有办法指定负映射web.xml?例如,我想为所有请求设置一个过滤器,除了匹配' /public/*'.

Bal*_*usC 3

不,那不可能。您必须在doFilter()方法内自己进行 URL 模式匹配。映射过滤器/*并执行以下操作:

HttpServletRequest req = (HttpServletRequest) request;

if (req.getRequestURI().startsWith("/public/")) {
    chain.doFilter(request, response);
    return;
}

// ...
Run Code Online (Sandbox Code Playgroud)

或者当实际上存在上下文路径时:

HttpServletRequest req = (HttpServletRequest) request;

if (req.getRequestURI().startsWith(req.getContextPath() + "/public/")) {
    chain.doFilter(request, response);
    return;
}

// ...
Run Code Online (Sandbox Code Playgroud)