我正在使用Spring 4.3.4 + Spring MVC + Thymeleaf 3.0.2开发一个Webapp。顺便说一句,我还没有集成Spring Security,所以没有任何安全策略。

问题很简单:静态资源未加载到浏览器中(错误404)。

这是我的项目文件夹结构,即标准的Maven结构(我已将静态资源放在/ src / main / resources / static上,但我也尝试过/ src / main / webapp /或/ src / main / webapp / WEB -INF /):

css - Spring MVC 4 + Thymeleaf:静态资源404错误-LMLPHP
例如,这就是我如何在页面上链接CSS(相信我,文件/src/main/resources/static/assets/css/style.css实际上存在):

<link th:href="@{/assets/css/style.css}" type="text/css" />


据我所知,我不需要ResourceHandler来处理/ src / main / resourcess / static / assets /上的内容,该内容应该已经在/ assets /上可用,但是它不起作用,所以在我的Spring Java中配置我也做了一些尝试,如:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("classpath:/static/assets/**").addResourceLocations("/assets/");
    registry.addResourceHandler("classpath:/static/pages/**").addResourceLocations("/pages/");
}


在任何情况下,都无法访问CSS和JS文件。

我的调度程序servlet映射到根目录/:

<servlet-mapping>
    <servlet-name>myappDispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>


如果我在浏览器上检查HTML,则可以看到上面的标记变为:

<link href="/myapp/assets/css/style.css" rel="stylesheet" type="text/css">


对我来说看起来很正确,对吧?

那么,如果尝试访问CSS,为什么会收到404错误?我会忘记重要的事情吗?

谢谢,
路卡

最佳答案

为了解决该问题,我需要更改文件夹结构,将静态资源移动到/ webapp /文件夹中。我很确定有一种方法可以将CSS和JS放到/ resources /文件夹中,但是我没有使它起作用,所以这是我的新文件夹结构:

css - Spring MVC 4 &#43; Thymeleaf:静态资源404错误-LMLPHP

然后,我设置了资源处理程序映射:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    super.addResourceHandlers(registry);
    registry.addResourceHandler("/assets/**").addResourceLocations("/assets/");
}


这是HTML模板中使用的链接标记(可用于页面的动态和静态加载):

<link th:href="@{/assets/css/style.css}" href="../../assets/css/style.css"  rel="stylesheet" type="text/css" />

关于css - Spring MVC 4 + Thymeleaf:静态资源404错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40772391/

10-12 00:21
查看更多