如何仅从应用程序上下文路径过滤请求?
How to filter requests ONLY from application context path?
环境:
- Jboss 5.2
- Servlet 2.4
- Java 7
我试图在调用应用程序上下文路径时 仅 执行过滤器请求,但我没有找到任何使用 url 模式的方法,因为url-pattern /* 接收所有请求。
我想在请求时执行过滤器 url http://localhost:8080/myapp 但是过滤器没有被触发。
<filter-mapping>
<filter-name>PrincipalFilter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
我也尝试使用空字符串,但在部署时解析 web.xml 时出错,可能是服务器太旧了。
有什么想法吗?
I also tried with emtpy string
这是正确的解决方案。另见 Difference between / and /* in servlet mapping url pattern。
but I got an error on parsing web.xml on deploying, maybe the server is too old
就这样吧。你真的需要升级任何比以前的主要版本更旧的东西(Servlet API 目前已经是 4.0,而 2.4 是在 2003 年发布的,所以它甚至有十多年的历史了!),否则你不会能够以最小的努力升级,并且您将被迫最终基本上重写整个应用程序。
如果您真的无法升级,那么最好的办法是改为在 /*
上收听,并在执行实际操作之前简单地检查 request.getRequestURI()
returns 是否只有 request.getContextPath()
逻辑,否则只继续过滤器链而不做任何更改。
环境:
- Jboss 5.2
- Servlet 2.4
- Java 7
我试图在调用应用程序上下文路径时 仅 执行过滤器请求,但我没有找到任何使用 url 模式的方法,因为url-pattern /* 接收所有请求。
我想在请求时执行过滤器 url http://localhost:8080/myapp 但是过滤器没有被触发。
<filter-mapping>
<filter-name>PrincipalFilter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
我也尝试使用空字符串,但在部署时解析 web.xml 时出错,可能是服务器太旧了。
有什么想法吗?
I also tried with emtpy string
这是正确的解决方案。另见 Difference between / and /* in servlet mapping url pattern。
but I got an error on parsing web.xml on deploying, maybe the server is too old
就这样吧。你真的需要升级任何比以前的主要版本更旧的东西(Servlet API 目前已经是 4.0,而 2.4 是在 2003 年发布的,所以它甚至有十多年的历史了!),否则你不会能够以最小的努力升级,并且您将被迫最终基本上重写整个应用程序。
如果您真的无法升级,那么最好的办法是改为在 /*
上收听,并在执行实际操作之前简单地检查 request.getRequestURI()
returns 是否只有 request.getContextPath()
逻辑,否则只继续过滤器链而不做任何更改。