我需要在两个不同的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>这是由tomcat5.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中的一个bug吗?其他容器接受什么语法?
发布于 2012-01-25 13:30:39
我想这更多地与容器/netbeans使用的servlet规范有关,而不是容器的问题。您的net beans似乎正在使用spec 2.5来构造servlet映射,因此您将获得
<servlet-mapping>
<servlet-name>fred</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>/url</url-pattern>
</servlet-mapping>阅读有关此here的更多信息。上面写着
以前版本的servlet模式只允许在一个筛选器mapping.For筛选器中使用一个url模式映射到多个url,这会导致不必要的整个映射子句重复。
发布于 2016-09-14 15:16:52
Tomcat容器将支持3种url模式:
/**. ext (星号表示任何字符)建议只对一个框架使用/*
如果你使用多个框架,那么推荐使用.*
https://stackoverflow.com/questions/8995353
复制相似问题