webjars 文件如何作为路径解析

How does webjars files get resolved as path

我正在使用 spring mvc 和 spring boot 来开发网络应用程序,我有一个关于 webjars 的问题。要在 thymeleaf 中添加 webjar 的路径,我们执行以下示例:th:href="@{/webjars/bootstrap/...}"

现在,当我在tomcat解析后查看页面源代码时,link标签中的实际href属性是:href="/webjars/bootstrap/..."

但是查看 tomcat 中 Web 应用程序的目录结构,没有这样的文件(无法在 3.3.6 中找到 bootstrap.min.js ...直到我们到达一个 webjars 文件夹).. 相反,这些文件位于 lib 文件夹中的 jar 文件内,该文件夹远离目录结构中的 html 文件.. 那么它是如何解决的? href 属性不是应该根据 html 文件的当前目录位置来引用文件吗?

WebJars 利用 Tomcat 中的自动静态资源处理。使用 Tomcat / Servlet 3,META-INF/resources 目录中 CLASSPATH 上的文件会自动作为静态资源暴露在 servlet 上下文中。因此,如果您在包含 META-INF/resources/foo.txt 的 CLASSPATH 上有一个 jar,并且您的 Web 应用程序在根上下文中是 运行,那么该文件将自动在以下位置提供:http://localhost:8080/foo.txt

因为 Bootstrap WebJar 有一个像这样的文件:
META-INF/resources/webjars/bootstrap/3.3.6/js/bootstrap.min.js
它位于:
http://localhost:8080/webjars/bootstrap/3.3.6/js/bootstrap.min.js