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

如何使用@EnableWebMvc在Spring boot中提供静态资源

茹正初
2023-03-14

在这上面开个头。文件说明:

默认情况下,Spring Boot将提供来自类路径中名为 /static(或 /public或 /resources或 /META-INF/resources)的目录或ServletContext根目录的静态内容。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@SpringBootApplication
@EnableWebMvc
public class Main {
    public static void main(final String[] args) {
        SpringApplication.run(Main.class, args);
    }
}

并创建一个目录,将静态资源放在那里。当我运行应用程序时,我只得到404。当我删除EnableWebMvc时,资源将按预期提供。

/**
 * @see org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter#addResourceHandlers(org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry)
 */
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/public/**").addResourceLocations("/public/");
}

application.properties中添加:

spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

所以我的问题是:当我想使用EnableWebMvc注释时,我需要配置什么来服务静态资源?

共有2个答案

汪阳辉
2023-03-14

您应该配置一个ViewResolver,如下所示以及您的ResourceHandler。检查这个

@Bean
public InternalResourceViewResolver defaultViewResolver() {
   return new InternalResourceViewResolver();
}
茹元魁
2023-03-14

在您提到的文档中,它说:

如果您想完全控制Spring MVC,可以添加自己的配置,并用EnableWebMvc注释。

您应该尝试在配置中使用@EnableWebMvc而不是Spring Boot应用程序。在这个留档中有一个例子。

要启用MVC Java配置,请将注释EnableWebMvc添加到一个配置类中:

@Configuration
@EnableWebMvc
public class WebConfig {
}

同样在这些示例中:

  • 自定义提供的配置
  • 转换和格式

我希望这对你有帮助。

 类似资料:
  • 问题内容: 我正在尝试在Web应用程序中提供静态资源,并且尝试了: 但是在Spring 5中不推荐使用WebMvcConfigurerAdapter。现在如何访问静态资源? 问题答案: 春季5-静态资源 从文档中:

  • 我无法访问静态内容(angular app),甚至无法访问简单的索引。来自spring boot的html文件。我一直收到404错误。Spring没有为我提供这些静态文件。自从升级到Spring Boot 2.2.4后,我就遇到了这个问题。我必须升级以应对Zip64问题。 我的application.properties里有这样一句话: 我也有自己的staticResourceConfigurat

  • 问题内容: 所以这很尴尬。我有一个应用程序,该应用程序已集成在一起,现在它只提供一个静态HTML页面,其中包含指向CSS和JS的链接。而且我找不到文档中描述返回静态文件的位置。是的,我可以使用,但是我知道数据没有模板化。我还以为或者是正确的事情,但我不能让这些工作。同时,我正在打开文件,阅读内容,并装配Response具有适当mimetype的: 有人要为此提供代码示例或网址吗?我知道这将变得简单

  • 问题内容: 我正在尝试提供静态html文件,但返回500错误(.py和模板目录上有editor.html的副本),这是我尝试过的全部操作: 这是响应: 问题答案: 将其简化为最简单的方法: 将静态资产放入子文件夹。 将Flask设置为默认值,也不要设置为默认值。 通过预配置访问静态内容以验证文件是否有效 如果仍然要重用静态文件,请使用,而不要使用斜杠: 这将 直接 在文件夹内查找文件。 假定您将上

  • 问题内容: 我有一个具有以下结构的Web应用程序: 我已经设法使用nginx和wsgi运行Web应用程序,但是问题是没有提供静态文件,我的意思是,当我转到它们的URL时,服务器找不到它们。它给我404。 这是我的nginx配置文件部分: 缺少什么吗? 问题答案: 将此添加到你的nginx配置 用你应用的绝对路径替换时,你应该注意它不包含静态目录,并且其中的所有内容都将存储在中。

  • 我试图提供一个静态资源(css文件)。 我已经注册了位置和处理程序 所以Tomcat的记录器显示到资源的正确映射 将URL路径[/resources/**]映射到类型为[类org.springframework.web.servlet.resource.ResourceHttpRequestHandler]的处理程序上 当浏览器呈现视图时,检查器显示404错误,试图获取静态资源。 应用初始化器。J