Spring 4加载静态资源

Sak*_*Big 5 css java spring spring-mvc

我有一个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/");

    }

}
Run Code Online (Sandbox Code Playgroud)

这里是我的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>
Run Code Online (Sandbox Code Playgroud)

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

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

Jam*_*ers 9

您说您的样式表和JavaScript文件位于"/ assets"下.我假设你有目录"/ assets/css"和"/ assets/js".然后,给定以下资源处理程序定义:

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

您可以在HTML中加载这些资源,如下所示:

<link href="/assets/css/style.css" rel="stylesheet" />
<script src="/assets/js/general.js"></script>
Run Code Online (Sandbox Code Playgroud)