在 ServletRequests 上使用 java 过滤器时如何检查 url 是否具有有效映射

How to check if url has valid mapping when using java Filter on ServletRequests

我正在使用过滤器并保存包含所有 url 的映射(以及每个 url 被调用的次数)。

@WebFilter(filterName = "SessionFilter", urlPatterns = {"/*"})
public class SessionFilter implements Filter {...}

我有这个:@WebServlet(/test/aaa) 所以我希望过滤器能够获取请求并将其转发到我的服务。问题是,如果我发送一些 post 假请求,例如:"testing/lalalal" - 它通过了过滤器,然后我将它插入到我的地图中(如果我没有有效的映射,这不应该发生) )

我尝试使用 urlValidator 但它似乎没有帮助。我还尝试查找是否出现错误 (404) 但不知道去哪里查找。

谁能给点建议?

谢谢!

与其将过滤器映射到过于通用的 URL 模式,不如将其映射到 URLs and/or 实际感兴趣的 servlet。下面的示例将其映射到特定的 servlet。

@WebFilter(filterName = "sessionFilter", servletNames = {"yourServlet"})

不要忘记为您的 servlet 命名。

@WebServlet(servletName = "yourServlet", urlPatterns = {"/test/aaa"})