我目前有一个带有以下注释的主 Controller servlet:
@WebServlet(name="ControllerServlet", urlPatterns={"/", "/home"})
我的项目中的 /resources
目录下有 .js 和 .css 文件,我的 .jsp 文件引用了这些文件,并且链接被发送到我不想要的主 Controller 。我制作了第二个 servlet 来处理 .js .css 文件,其 nn 注释为:
@WevServlet(name="ResourceServlet", urlPatterns={"/resources"})
希望它能接收来 self 的 .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/*"})
关于java - 如何使用注释使更具体的 urlPattern 覆盖更广泛的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18813201/