当前位置: 首页 > 知识库问答 >
问题:

在spring boot中添加静态资源

欧桐
2023-03-14

我是spring boot架构的新手。它说,为了让索引页面找到像js这样的静态资源,我们需要将其保留在“src/main/resources/static”下。

目录结构:

Html文件:src/main/webapp/WEB-INF/jsp/

js文件:src/main/resources/static/js/

这是我的索引页:

<html ng-app="RollbackApp">

<head>
    <title>My Rollback View</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.js"></script>
    <script type="text/javascript" src = "js/app.js"></script>
</head>

<body>
<div ng-controller="rollbackController"><p>
    <button ng-click="rollback()">RollBack</button>
</p></div>

</body>
</html>

我的Mvc配置类如下:

package com.manoj;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

/**
 * Created by manojma on 10/13/2017.
 */
@Configuration
@EnableWebMvc
public class ApplicationWebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/static/");
    }

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".html");
        return resolver;
    }

}

我找不到原因,为什么找不到我的js文件。

请帮帮我。!!

共有1个答案

靳彦
2023-03-14

问题是您的资源处理程序配置不正确。您已经将/resources/static/设置为您的资源位置。但是,考虑到src/main/resources完全放在类路径上,应该省略/resources部分。另外,您应该提到您正在查看类路径,因此您可能应该使用classpath://static/

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**").addResourceLocations("/static/");
}

此外,您还定义了资源处理程序来转发从/resources/**开始的请求。这意味着,如果您相对请求js/app.js,它将不起作用,因为它不会触发资源处理程序。您需要使用资源/js/app.js:

 <script type="text/javascript" src="resources/js/app.js"></script>

但是,如果您的目标是静态地服务某些HTML页面,那么将HTML页面放入src/main/resources/static文件夹中也会容易得多。Spring boot默认情况下已经将index.html作为欢迎页面提供,但是可以对其进行自定义

 类似资料:
  • 我在浏览器中得到的是: 我想要的是:

  • 我的问题很简单。我无法在Spring中加载静态资源,下面是我的配置文件。 dispatcher servlet。xml 网状物xml 我已将js和css文件放入/webapp/resources/css和/webapp/resources/js中。 我知道这个问题已经被解决了很多次,但我无法加载静态资源。我得到405浏览器上没有方法错误。 在网上尝试了所有其他解决方案。请告诉我哪里出了问题。对这些

  • 4.1 原生koa2实现静态资源服务器 4.2 koa-static中间件

  • 问题内容: 我得到了一个Spring MVC应用程序,该应用程序当前在目录中放置了一堆CSS和JS文件。 我通读了Spring Docs和一些有关如何使用ResourceHandlerRegistry类为模板加载这些文件的教程。我特别认为本教程中的代码段完全适合我的项目结构。 但是我的资源文件上总是显示404。 这是我当前正在使用的Application / Configuration类: 这是我

  • 动态的 web 应用也需要静态文件,一般是 CSS 和 JavaScript 文件。理想情况下你的 服务器已经配置好了为你的提供静态文件的服务。在开发过程中, Blade 也能做好这个工作。我们在 resources 目录下创建一个名为 static 的文件夹存储静态资源文件,静态文件位于 应用的 /static 中。 Blade 默认设置了 static、assets、webjars、uploa

  • 每个网站都需要静态资源:图片、样式表、网站图标(favicon)等。在这种情况下,您可以在项目的根目录下创建一个名为 static 的目录。 放入 该目录中的每个文件都将被复制到 生成的 build 文件夹中,并保留目录的层级结构。例如,如果您将名为 sun.jpg 的文件添加到 static 文件夹中,则该文件将被复制到 build/sun.jpg 路径。 这意味着: 对于 baseUrl: '