web.xml中的servlet映射(*。* vs * .any_pattern)

时间:2012-02-25 12:27:16

标签: servlets web.xml

我有以下网址格式:

    <servlet-mapping>
      <servlet-name>name_of_a_servlet</servlet-name>
      <url-pattern>*.some_pattern</url-pattern>
    </servlet-mapping>

如果我在网址格式中有多个模式,例如*.htm*.css*.do等,我可以在网址格式中使用*.*吗?或者我必须这样使用;

<url-pattern>*.htm</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>*.do</url-pattern>

3 个答案:

答案 0 :(得分:2)

*.*不是有效的网址格式。 *只能位于模式的开始结尾。如果您打算涵盖每个 HTTP请求,则需要使用/*

<servlet-mapping>
  <servlet-name>name_of_a_servlet</servlet-name>
  <url-pattern>/*</url-pattern>
</servlet-mapping>

但是我怀疑这个servlet是不是最好是filter

答案 1 :(得分:0)

URL映射语法在Servlet API规范(我引用2.4)中定义,以获取此信息:

  

以“/”字符开头并以“/ *”后缀结尾的字符串   用于路径映射。   以“*”开头的字符串prefix用作扩展映射。仅包含'/'字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet路径是请求URI减去上下文路径,路径信息为空   所有其他字符串用于完全匹配   仅

所以简短的回答是url-pattern意味着是一个url模式。你必须制作多个模式才能完全匹配这三个模式。

答案 2 :(得分:-1)

<url-pattern>*.some_pattern</url-pattern>
应该是 <url-pattern>/*.some_pattern</url-pattern> //在路径

之前斜杠


-pattern>/path-pattern</url-pattern>