我需要在两个不同的URL上映射相同的servlet。我使用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中的一个错误吗?其他容器接受什么语法?
答案 0 :(得分:42)
我想它更多地与容器/ netbeans使用的servlet规范有关,而不是容器的问题。您的网络bean似乎使用规范2.5来构建servlet映射,因此您得到
<servlet-mapping>
<servlet-name>fred</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>/url</url-pattern>
</servlet-mapping>
详细了解此here。它说
以前版本的servlet架构只允许使用单个url-pattern 过滤器映射。对于映射到多个URL的过滤器,这会导致不必要的 重复整个映射条款。
答案 1 :(得分:1)
Tomcat容器将支持3个url模式:
/*
*.
分机(明星意味着什么) /*
如果您使用多个框架,则建议使用.*