在 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 是不是具有有效映射的主要内容,如果未能解决你的问题,请参考以下文章
jav怎样实现对soapUI mockService功能的模拟,需要代码
使用mybatis报错constructor found in com.atguigu.mybatis.bean.Department matching [java.lang.Integer, jav