如果URL模式匹配多个Servlet怎么办?

11
<servlet-mapping>
  <servlet-name> s1</servlet-name>
  <url-pattern> /abc </url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name> s2</servlet-name>
  <url-pattern> /abc </url-pattern>
</servlet-mapping>

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

如果有一个请求 /abc,哪个Servlet会被调用?为什么?

1个回答

16

点击这里。简言之:

  • 若映射具有完全相同的模式,则无法保证哪个Servlet将被调用。请避免这种情况。
  • 如果模式重叠,则选择最具体的一个。(/abc/*更具体)

讲解得很好,提供的链接也很棒,易于理解。 - CuriousMind
过滤器映射中的url-pattern是否也适用相同的规则? - lads
@Bozho 这个链接已经失效了。这里有一个Wayback Machine的备份副本:https://web.archive.org/web/20160224184048/http://docs.roguewave.com/hydraexpress/3.5.0/html/rwsfservletug/4-3.html - Chris R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接