如何使更具体的urlPattern使用注释覆盖更广泛的模式

时间:2013-09-15 13:56:13

标签: java jsp servlets annotations

我目前有一个带有以下注释的主控制器servlet:

@WebServlet(name="ControllerServlet", urlPatterns={"/", "/home"})

我项目中的/resources目录下有.js和.css文件,我的.jsp文件引用,链接被发送到我不想要的主控制器。我创建了第二个servlet来处理带有nn注释的.js .css文件:

@WevServlet(name="ResourceServlet", urlPatterns={"/resources"})

希望它能接收来自我的.jsp文件的请求,但是ControllerServlet仍在接收它们。如何将/ resources url定向到我的ResourceServlet?

1 个答案:

答案 0 :(得分:1)

url模式/匹配其他映射不匹配的任何内容。如果你有

@WebServlet(name="ResourceServlet", urlPatterns={"/resources"})

然后请求,例如。 localhost:8080/context/resources将处理ResourceServlet,但localhost:8080/context/resources/somescript.js的请求不会,因为它与ResourceServlet的网址格式不匹配。因此,ControllerServlet会处理它。

您需要将ResourceServlet映射更改为

@WebServlet(name="ResourceServlet", urlPatterns={"/resources/*"})