java - 如何匹配 web.xml 中的 URL 模式,如/abc?path=xyz

标签 java regex servlets deployment-descriptor

我的环境中的某个位置有一个 html 文件,我需要限制所有用户访问该文件。所以我只是想添加一个过滤器并限制 html 页面或将其重定向到另一个页面。这是我正在使用的代码,

<filter>
    <filter-name>PageCheckFilter</filter-name>
    <filter-class>com.src.filter.PageCheckFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>PageCheckFilter</filter-name>
    <url-pattern>/app?asset=test&path=/xyz-0.1.2/page.html</url-pattern>
</filter-mapping>

我尝试了很多 URL 模式来匹配这个 URL,但都是徒劳。请向我提出一些建议,以便我可以限制此页面的访问。

最佳答案

您不能在过滤器映射中包含查询参数!根据servlet specification ,用于映射的 URL 路径是请求 URL 减去上下文路径和参数(请参阅第 12.1 章 - 使用或 URL 路径)。因此,在将查询字符串映射到您的模式之前,会从 URL 中删除查询字符串。

即使映射中可以包含查询字符串,它也只有在查询参数未重新排序时才有效(例如 /app?path=/xyz-0.1.2/page.html&asset=test)。

相反,您应该将过滤器映射到对 /app 的所有请求,并自行分析过滤器内的查询参数!

关于java - 如何匹配 web.xml 中的 URL 模式,如/abc?path=xyz,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20824118/

相关文章:

Java多维散列/矩阵

regex - MATLAB 中的动态正则表达式

java - 将数据从 servlet 发送到客户端的最佳方式?

java - 只知道我当前 JSESSIONID 的人可以冒充/劫持我的 session (Tomcat 7/Glassfish 3.2))吗?

java - 将变量访问到方法声明中

java - 类方法未执行正确的计算

java - Git merge/pull 后使用 Maven 进行部分全新安装

Ruby Regex,获取所有可能的匹配项(不截断字符串)

javascript - 需要了解一些正则表达式

java - 封闭实例无效时的封闭类型行为