我需要将相同的servlet映射到两个不同的URL。我使用netbeans 7.0.1来管理整个项目,因此我使用了它的友好界面来修改web.xml文件。netbeans创建的是这样的:
<servlet-mapping> <servlet-name>fred</servlet-name> <url-pattern>*.jsp</url-pattern> <url-pattern>/url</url-pattern> </servlet-mapping>
这是由tomcat 5.5读取的,没有发出任何错误,但是只有第二个模式有效,而第一个模式则被忽略。
谷歌搜索我发现适合使用tomcat的正确方法是:
<servlet-mapping> <servlet-name>fred</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>fred</servlet-name> <url-pattern>/url</url-pattern> </servlet-mapping>
所以,我的问题是:这是tomcat中的错误吗?其他容器接受什么语法?
我想这与容器/ netbeans正在使用的servlet规范有关,而不是与容器有关。您的Net Bean似乎正在使用规范2.5构造Servlet映射,因此您得到
在此处阅读有关此内容的更多信息。它说
以前版本的servlet模式只允许在过滤器映射中使用单个url模式,对于映射到多个URL的过滤器,这将导致不必要的整个映射子句重复。