小编典典

Spring 4加载静态资源

spring

我得到了一个Spring MVC应用程序,该应用程序当前在src/main/java/resources/assets目录中放置了一堆CSS和JS文件。

我通读了Spring Docs和一些有关如何使用ResourceHandlerRegistry类为模板加载这些文件的教程。我特别认为本教程中的代码段完全适合我的项目结构。

但是我的资源文件上总是显示404。

这是我当前正在使用的Application / Configuration类:

@Configuration
@EnableAutoConfiguration
@ImportResource("/applicationContext.xml") // only used for jpa/hibernate
@EnableWebMvc
@ComponentScan(basePackages = "at.sustain.docutools.viewer.presentation")
public class Application extends WebMvcConfigurerAdapter {

    public static void main(String args[]) {
        SpringApplication.run(Application.class);
    }

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

    }

}

这是我的HTML文件中使用的HEADer(放置在资源/模板中):

<head>
    <!-- local Stylesheet -->
    <link href="css/style.css" rel="stylesheet" />
    <!-- local Javascript files -->
    <script src="js/general.js"></script>
    <script src="js/xmlhttp.js"></script>
    <!-- local Javascript libraries -->
    <script src="js/lib/filter.js"></script>
    <script src="js/lib/jquery.fs.zoomer.js"></script>
    <script src="js/lib/jquery.validate.js"></script>
</head>

该html文件已通过我的控制器类正确加载,但是当尝试点击例如我的style.css文件(http://localhost:8080/css/style.css)时,我得到了一个404,如上所述。

我似乎找不到更多资源可以为Spring 4提供有关此主题的更多信息。我会错过一些配置文件吗?还是资源处理程序注册不适合我的结构?期待你的回复。


阅读 465

收藏
2020-04-21

共1个答案

小编典典

你说样式表和JavaScript文件在“ / assets”下。我假设你有目录“ / assets / css”和“ / assets / js”。然后,给出以下资源处理程序定义:

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

你可以像这样在HTML中加载这些资源:

<link href="/assets/css/style.css" rel="stylesheet" />
<script src="/assets/js/general.js"></script>
2020-04-21