首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在web.xml中使用Servlet url映射?

如何在web.xml中使用Servlet url映射?
EN

Stack Overflow用户
提问于 2013-03-13 12:38:19
回答 1查看 70.1K关注 0票数 24

我有一个包含内容的web.xml文件:

代码语言:javascript
复制
<servlet>
    <servlet-name>servlet1</servlet-name>
    <servlet-class>org.mycompany.test1</servlet-class>
</servlet>
<servlet>
    <servlet-name>servlet2</servlet-name>
    <servlet-class>org.mycompany.test2</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>servlet1</servlet-name>
    <url-pattern>/path/test</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>servlet2</servlet-name>
    <url-pattern>/path/test/*</url-pattern>
</servlet-mapping>

我试过请求

代码语言:javascript
复制
.../path/test/abc 
.../path/test

这两个请求都由Servlet2处理。为什么?

更新

谢谢你们的帮助。我意识到行为取决于servlet映射声明的顺序。我试过这个web.xml

代码语言:javascript
复制
<servlet>
    <servlet-name>servlet1</servlet-name>
    <servlet-class>org.mycompany.test1</servlet-class>
</servlet>
<servlet>
    <servlet-name>servlet2</servlet-name>
    <servlet-class>org.mycompany.test2</servlet-class>
</servlet>
<servlet>
    <servlet-name>servlet3</servlet-name>
    <servlet-class>org.mycompany.test3</servlet-class>
</servlet>
<servlet>
    <servlet-name>servlet4</servlet-name>
    <servlet-class>org.mycompany.test4</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>servlet1</servlet-name>
    <url-pattern>/path/test</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>servlet2</servlet-name>
    <url-pattern>/path/test/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>servlet3</servlet-name>
    <url-pattern>/path/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>servlet4</servlet-name>
    <url-pattern>/path</url-pattern>
</servlet-mapping>

结果:

代码语言:javascript
复制
.../path/test/abc - servlet2
.../path/test/ - servlet2
.../path/test - servlet2

.../path/abc - servlet3
.../path/ - servlet4
.../path - servlet4
EN

回答 1

Stack Overflow用户

发布于 2013-03-13 13:28:23

你的道路冲突。

这两条路的意思都是一样的,'/*‘并没有什么区别。显然,当您尝试路径时,将执行最后一个匹配(servlet2)。

通常输入一个带有Servlet名称的路径,例如:

代码语言:javascript
复制
/path/test/servlet1
/path/test/servlet2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15385596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档