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

标签 java jsp servlets annotations

我目前有一个带有以下注释的主 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/

相关文章:

java - CrudRepository 保存方法不会在数据库中保存任何内容

java - 如何隐藏浏览器检查器中的字段

java - Jetty:Servlet 无法转发到 JSP

java - 如何将表行值传递给 servlet?

java - 无法从 JSP 执行 servlet,但可以从直接 URL 访问(mvc mysql tomcat)

java - Jtree removeFromParent() 创建空白

Java nio套接字通信位于一台机器或两台机器上的两个进程

java - 无法从 Spring Boot 应用程序 Autowiring yml 配置类

servlets - Apache CXF 和 servlet 映射

jakarta-ee - 在 Tomcat 和 Jersey 中提供同一个静态页面的多个 URL?