在我的 java web 应用程序中,我有以下过滤器的 url-pattern:
<url-pattern>*-template</url-pattern>
它在 jetty 9 中工作正常,但 tomcat 8 拒绝它说它无效。怎么会?另外,我无法让 tomcat 理解像 /*/*-template
这样的 url-pattern(如果我指定了确切的 url /foo/bar-template
,只有 tomcat 使用我的过滤器。但我不想指定每个网址。我有哪些选择?
最佳答案
可能是因为 Tomcat 正在更严格地执行规范。来自 Java Servlet 规范 3.1(第 12.2 节):
In the Web application deployment descriptor, the following syntax is used to define mappings:
- A string beginning with a ‘/’ character and ending with a ‘/*’ suffix is used for path mapping.
- A string beginning with a ‘*.’ prefix is used as an extension mapping.
- The empty string ("") is a special URL pattern that exactly maps to the application's context root, i.e., requests of the form
http://host:port/<contextroot>/
. In this case the path info is ’/’ and the servlet path and context path is empty string (““).- A string containing only the ’/’ character indicates the "default" servlet of the application. In this case the servlet path is the request URI minus the context path and the path info is null.
- All other strings are used for exact matches only.
关于tomcat - tomcat 和 jetty 中的 url 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24652893/