Catch-all(通配符)servlet url-pattern覆盖文件扩展名模式

时间:2012-12-03 22:14:27

标签: servlets web.xml zk url-pattern

我想实现以下目标:

/webapp-context/Page-1               -> Handled by my custom "ContentServlet"
/webapp-context/Another-Page         -> Handled by my custom "ContentServlet"
/webapp-context/Page-with-long-title -> Handled by my custom "ContentServlet"

/webapp-context/_cms/<something>.zul -> Handled by ZK framework

我的最新尝试看起来像这样(web.xml摘录):

  <servlet-mapping>
    <servlet-name>zkLoader</servlet-name>
    <url-pattern>*.zul</url-pattern>
  </servlet-mapping>

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

不幸的是现在我的内容servlet处理所有请求(我认为更具体的模式优先?)。

如果我将内容servlet映射到模式“/ webapp-context / content / *”,则不存在冲突,但这不是我想要的。

感谢您的时间。

1 个答案:

答案 0 :(得分:11)

我刚刚通过这个问题找到了解决方案:Difference between / and /* in servlet mapping url pattern

使用'/'代替'/ *'为我做了诀窍。

<servlet-mapping>
  <servlet-name>myContentServlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>