在 ServletRequests 上使用 java Filter 时如何检查 url 是不是具有有效映射

Posted

技术标签:

【中文标题】在 ServletRequests 上使用 java Filter 时如何检查 url 是不是具有有效映射【英文标题】:How to check if url has valid mapping when using java Filter on ServletRequests在 ServletRequests 上使用 java Filter 时如何检查 url 是否具有有效映射 【发布时间】:2016-05-19 12:03:57 【问题描述】:

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

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

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

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

谁能给点建议?

谢谢!

【问题讨论】:

你能详细说明你的问题是什么吗?根据您的过滤器 URL 模式,应该为每个请求调用过滤器,即使对于那些没有显式 servlet 映射的请求也是如此。如果这不是您想要的,您应该限制过滤器 URL 模式。 【参考方案1】:

不要将过滤器映射到过于通用的 URL 模式,而是将其映射到实际感兴趣的 URL 和/或 servlet。下面的示例将其映射到特定的 servlet。

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

别忘了给你的 servlet 起个名字。

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

【讨论】:

以上是关于在 ServletRequests 上使用 java Filter 时如何检查 url 是不是具有有效映射的主要内容,如果未能解决你的问题,请参考以下文章

JAV07接口与继承之动手动脑问题解决

jav的流行型

jav的流行型

jav怎样实现对soapUI mockService功能的模拟,需要代码

使用mybatis报错constructor found in com.atguigu.mybatis.bean.Department matching [java.lang.Integer, jav

为啥弄不到jav的力量