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

时间:2019-03-04 13:37:46

标签: spring spring-mvc xml-configuration

its contains a tag mvc:resource tag我正在开发一个spring mvc应用程序,其中iam使用基于xml的配置。我想加载我的静态资源。为此,我正在使用标签<mvc:resources location="/assets/" mapping="/resources/**"/>.

我所有的静态资源都存在于Assets文件夹中,因此我正在提供此机。但是在映射中为什么是mapping="/resources/**"?我没有在资源文件夹中保留任何内容,**代表什么?

有人可以在这里消除我的所有疑问吗?

1 个答案:

答案 0 :(得分:0)

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

更新mapping="/assets/**",它将正常工作。在“映射”属性中,应保留匹配的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,没有标记相应的处理程序(@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/");
}