【SpringBoot】7、静态资源处理【狂神篇】

1、源码分析

WebMvcAutoConfiguration

@Configuration
...
public class WebMvcAutoConfiguration {
    @Configuration
    ...
    // 静态内部类    
    public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer, ServletContextAware {
        // 添加资源处理
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            // 判断是否有自定义资源路径
            if (!this.resourceProperties.isAddMappings()) {
                // 如果有自定义资源路径,则默认资源失效
                logger.debug("Default resource handling disabled");
            } else {
                // 没有自定义资源路径,就在默认路径下查找
                // 方式一:webjars
                this.addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
                // 方式二:四个固定路径
                this.addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
                    registration.addResourceLocations(this.resourceProperties.getStaticLocations());
                    if (this.servletContext != null) {
                        ServletContextResource resource = new ServletContextResource(this.servletContext, "/");
                        registration.addResourceLocations(new Resource[]{resource});
                    }

                });
            }
        }
    }    
}
  • this.resourceProperties.getStaticLocations()
@ConfigurationProperties
...
public class WebProperties {
    ...
    // 静态内部类
    public static class Resources {
        // 四个默认路径
        private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"};
        private String[] staticLocations;
        
        ...
        
        public String[] getStaticLocations() {
            return this.staticLocations;
        }
    }     
}     

2、方式一:webjars

Webjars本质就是以jar包的方式引入静态资源

官网:https://www.webjars.org

使用jQuery

  • 导jar包
<!--导入jar包-->
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>jquery</artifactId>
    <version>3.4.1</version>
</dependency>

在这里插入图片描述

  • 页面使用

在这里插入图片描述

  • 省略版本号

    导入额外webjars-locator依赖jar包

    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>webjars-locator</artifactId>
        <version>0.42</version>
    </dependency>
    

在这里插入图片描述

3、方式二:4个固定路径

项目中要是使用自己的静态资源,可以在resources根目录下新建对应的文件夹,就可以存放自已的静态文件

// 四个默认路径:优先级从前向后,由高到低
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{
    "classpath:/META-INF/resources/",                                                     "classpath:/resources/",                                                               "classpath:/static/",                                                                 "classpath:/public/"
};

在这里插入图片描述

优先级:1 > 2 > 3 > 4

4、方式三:自定义路径

也可以在配置文件中指定静态资源文件(不推荐)

一旦自己定义了静态文件夹的路径,原来的自动配置就都会失效了!

  • application.yml
spring:
  web:
    resources:
      static-locations:
       - classpath:/js/
       - classpath:/css/

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 狂神Spring Boot是一个基于Spring框架的开源web应用程序开发框架,它可以帮助开发者快速地构建可靠的、高效的web应用程序,同时提高开发效率和代码可维护性。其中,静态资源是指web应用中不经常变更的文件,如样式表、JavaScript、图像等文件。Spring Boot提供了方便的方式来处理静态资源,开发者只需要在项目的资源文件夹下创建一个名为“static”的文件夹,Spring Boot就会自动地将该文件夹下的所有静态资源映射到根路径上。 在使用狂神Spring Boot处理静态资源时,需要注意以下几点: 1. 静态资源应该放置在项目资源文件夹下的static文件夹下,Spring Boot会根据该文件夹的路径将静态资源映射到根路径上。 2. 静态资源的名称、路径和URL路径应该是小写的,中间用短横线(-)分隔,这样可以避免在不同操作系统上的兼容性问题。 3. 如果需要在静态资源的URL中包含版本号,可以使用Spring Boot提供的方式自动生成版本号,具体可以参考官方文档。 4. Spring Boot还提供了对缓存控制的支持,开发者可以通过配置文件来设置静态资源的缓存时间,以达到更好的性能和用户体验。 总之,狂神Spring Boot提供了便捷的方式来处理静态资源,开发者只需要了解一些基本的规则和注意事项,就可以轻松地实现web应用中的静态资源的管理和控制。 ### 回答2: Spring Boot是一种 Java 框架,可让您快速构建基于 Java 的应用程序。它支持多种特性和功能,其中之一就是处理静态资源Spring Boot静态资源包括图像、CSS、JavaScript、HTML文件等。这些资源可以通过 HTTP 服务向客户端提供。在Spring Boot应用程序中,您可以使用@Controller和@RestController注解来暴露这些静态资源。 要配置Spring Boot应用程序来处理静态资源,您需要添加以下配置文件: - application.properties或application.yml文件 在这个配置文件中,您需要定义静态资源的位置和路径。例如,您可以使用如下代码片段定义一个资源路径: spring.resources.static-locations=classpath:/static/ 这将指向位于Classpath /static/目录中的静态资源。 另外,您可以使用以下注解来配置控制器来处理静态资源: - @Controller - @RestController 如果您想以 JSON 格式返回静态数据,可以使用@RestController注解。实际上,@RestController注解是@Controller注解和@ResponseBody注解的组合。 总之,Spring Boot框架为开发人员提供了全面的静态资源处理功能,您可以轻松地定义静态资源并用于您的应用程序或网站中。 ### 回答3: 狂神SpringBoot静态资源是指在SpringBoot框架下,可以通过配置一些静态资源来搭建网站的功能。这些静态资源可以是网站的图片、CSS样式、JavaScript代码等,通过SpringBoot的自动配置功能可以轻松地将这些资源添加到项目中,并对其进行管理和维护。 在SpringBoot中,我们可以将静态资源放置在/src/main/resources/static/目录下。这样,当我们启动应用时,SpringBoot会自动扫描该目录下的文件,并将其配置成静态资源。此外,我们还可以通过自定义资源处理器来添加自己的静态资源,并对其进行定制。 SpringBoot还提供了一些方便的注解来管理静态资源。例如,@RestController注解可以将一个类标记为RESTful服务,@RequestMapping注解则可以将URL映射到对应的控制器方法上。此外,@PostMapping、@GetMapping等注解也可以直接映射到对应的请求方法上。 总之,狂神SpringBoot静态资源为开发者提供了一种方便、快捷、灵活的方式来管理和配置网站的静态资源。无论是开发小型网站还是大型网站,都可以通过这种方式轻松地搭建出适合自己的网站。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土味儿~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值