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

Java 如何使用注释使更具体的urlPattern覆盖更广泛的模式,java,jsp,servlets,annotations,Java,Jsp,Servlets,Annotations,我目前有一个带有以下注释的主控制器servlet: @WebServlet(name="ControllerServlet", urlPatterns={"/", "/home"}) 在我的项目中,.jsp文件引用的/resources目录下有.js和.css文件,链接被发送到我不想要的主控制器。我制作了第二个servlet来处理带有nn注释的.js.css文件: @WevServlet(name="ResourceServlet", urlPatterns={"/resources"})

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

@WebServlet(name="ControllerServlet", urlPatterns={"/", "/home"})
在我的项目中,.jsp文件引用的
/resources
目录下有.js和.css文件,链接被发送到我不想要的主控制器。我制作了第二个servlet来处理带有nn注释的.js.css文件:

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

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

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

@WebServlet(name="ResourceServlet", urlPatterns={"/resources"})
然后,对
localhost:8080/context/resources
的请求将由
ResourceServlet
处理,但对
localhost:8080/context/resources/somescript.js
的请求不会处理,因为它与
ResourceServlet
的url模式不匹配。因此,
ControllerServlet
将处理它

您需要将
ResourceServlet
映射更改为

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