由于我没有在资源文件夹中保留任何文件,为什么我们需要映射到资源文件夹以加载所有静态资源?

As i ahve not kept any file in resource folder why we need to map to resource folder to load all static Resource?

its contains a tag mvc:resource tag我正在开发一个 spring mvc 应用程序,我在其中使用基于 xml configuration.I 想要加载我的静态 resource.To 这样做我是使用标签 <mvc:resources location="/assets/" mapping="/resources/**"/>.

我所有的静态资源都在 assets 文件夹中,所以我给出了位置。但是在映射中为什么是mapping="/resources/**"?我没有在资源文件夹中保留任何内容,**代表什么?

谁能解开我的疑惑吗?

<mvc:resources location="/assets/" mapping="/assets/**"/>

更新mapping="/assets/**",它将正常工作。在 Mapping 属性中,您应该保留匹配的 url 模式以访问资产文件夹。

** :- 表示此路径中的多个目录或资产目录后的零个目录。

举个例子:-

<script type="text/javascript" src="${contextRoot}/assets/js/login.js"></script>

您想在页面中添加 java 脚本文件。要添加此 js 文件,服务器请求变为:http://localhost:8090/Aashayein/assets/js/login.js。当您使用 spring-mvc 时,请求会通过调度程序 servlet(前端控制器)。这个请求Uri没有对应的handler marked(@RequestMapping("/assets/js/login.js")),所以会报404错误。所以你必须告诉 spring 如果任何请求带有 uri 模式“/assets/**”,那么直接查看 webapp 目录中的资产文件夹。要在 xml 中这样做,我们必须写:-

<mvc:resources location="/assets/" mapping="/assets/**"/>

注释中:-

/*
 * Any request with url mapping /assets/** will directly look for /assets
 * folder.
*/
public void addResourceHandlers(final ResourceHandlerRegistry registry) {

   registry.addResourceHandler("/assets/**").addResourceLocations("/assets/");
}