【问题标题】:How to avoid matching paths that don't have a slash with servlet-mappings?如何避免匹配没有带有 servlet 映射的斜线的路径?
【发布时间】:2015-05-20 09:22:14
【问题描述】:

我正在尝试设置一个 servlet,以便对 /foo/* 的任何请求都将转到我的 Foo servlet,除了 /foo/bar/* 形式的请求,它转到 Bar 之一。但是,我希望/foo/bar 转到Foo servlet,而不是Bar。有没有办法只使用 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 提供特定映射,尽管似乎应该有更好的方法。

【问题讨论】:

    标签: java servlets servlet-mapping


    【解决方案1】:

    如果您使用的是 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>
    

    【讨论】:

      猜你喜欢
      • 2012-01-19
      • 2021-02-02
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多