如何避免匹配没有servlet-mappings斜杠的路径?

时间:2015-03-17 19:10:03

标签: java servlets servlet-mapping

我尝试设置一个servlet,以便/foo/*的任何请求都会转到我的Foo servlet,但/foo/bar/*形式的请求除外到Bar一个。但是,我希望/foo/bar转到Foo servlet,而不是Bar servlet。有没有办法用web.xml中的url-patterns来做到这一点?

我的映射:

<servlet-mapping>
    <servlet-name>Bar</servlet-name>
    <url-pattern>/foo/bar/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Foo</servlet-name>
    <url-pattern>/foo/*</url-pattern>
</servlet-mapping>

我尝试删除星号并尝试其他一些模式,但我能看到的唯一方法是为/foo/bar设置一个特定的映射,尽管看起来应该有一个更好的方式。

1 个答案:

答案 0 :(得分:0)

如果您使用的是servlet规范v2.5或更高版本,则可以为同一 servlet-mapping 提供多个 url-pattern 元素,如:

<servlet-mapping>
  <servlet-name>Foo</servlet-name>
  <url-pattern>/foo/*</url-pattern>
  <url-pattern>/foo/bar</url-pattern>
</servlet-mapping>