首页 > 其他分享 >Spring Boot 访问静态资源css/js

Spring Boot 访问静态资源css/js

时间:2023-11-17 15:01:26浏览次数:34  
标签:src Spring classpath js 访问 static Boot

Spring Boot 访问静态资源css/js_静态资源

一、前言

我们用 Spring Boot 搭建 Web 应用时(如搭建一个博客),经常需要在 Html 中访问一些静态资源,比如:

  • css 样式;
  • js 脚本;
  • favicon.ico 图标等;

而在 Spring Boot 中如果没有做任何配置,是无法直接访问静态资源的,通常会报 404 错误

二、Spring Boot 访问静态资源的默认目录

Spring Boot 访问静态资源,默认有两个默认目录:

  • classpath/static 目录:src/mian/resource
  • ServletContext 根目录下: src/main/webapp

啥是 classpath呢 ?

这里简要的介绍下,classpath 即 WEB-INF 下面的 classes 目录 ,在 Spring Boot 项目中就是src/main/resource 目录。

2.1 classpath 目录下-访问默认文件夹名为 static

项目目录截图:

Spring Boot 访问静态资源css/js_spring_02

这里有人就想说,我可不可以修改一下访问路径呢,答案是肯定的,肯定可以。

在 properties文件里面设置 spring.resources.static-locations 就ok了。

spring.resources.static-locations 的默认值是:classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

图示修改:我将默认路径改成了 src/main/resource/static/images/,在里面我写了一个 index.html 里面写的 html img

Spring Boot 访问静态资源css/js_spring_03

访问的时候就找的是我设置的路径了。

2.2 ServletContext 根目录下( src/main/webapp ) - webapp 就是默认访问文件夹

这个可能很多人就不陌生了,一般来说 src/main/java 里面放Java代码,resource 里面放配置文件, xml, webapp里面放页面,js之类的。

ServletContent 根目录就是 src/main/webapp

一般创建的maven项目里面都没有 webapp 文件夹,在这里我们自己在 src/main 目录下创建一个 webapp

项目目录,以及访问截图:

Spring Boot 访问静态资源css/js_静态资源_04

三、Spring Boot 访问静态资源解决方案

上面知识点主要做些科普,至于如何在 Spring Boot 访问静态资源,可以通过以下两种方案来解决以上问题:

3.1 第一种方案(推荐)

修改 application.yml , 添加以下配置:

# 放开 Spring Boot 项目中 /static 目录下静态资源的拦截
spring:
  mvc:
    static-path-pattern: /static/**

application.properties 文件添加如下:

spring.mvc.static-path-pattern=/static/**

3.2 第二种方案

添加一个 WebMvcConfig.java 配置类,告诉 springboot 静态资源的加载路径:

package com.exception.qms.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * @date 2020/10/7
 * @time 14:37
 * @discription
 **/
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

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

二选一,添加完成后,我们就可以在 Spring Boot 中正常访问静态资源辣~



作者:深码青年


标签:src,Spring,classpath,js,访问,static,Boot
From: https://blog.51cto.com/u_16282813/8447810

相关文章

  • Spring Boot 配置 log4j2
    本教程中,我们将学习如何在SpringBoot中整合使用Log4j2日志框架。Log4j2介绍SpringBoot中默认使用Logback作为日志框架,接下来我们将学习如何在SpringBoot中集成与配置Log4j2。在配置之前,我们需要知道的是Log4j2是Log4j的升级版,它在Log4j的基础上做了诸多改进:1.......
  • Spring Boot 跨域访问
    出于安全的考虑,浏览器会禁止Ajax访问不同域的地址,在现如今微服务横行的年代,跨域访问是非常常见的。W3C的CORS(Cross-origin-resource-sharing)规范中也已经允许跨域访问,并被主流浏览器所支持,它们包括:Chrome3+;Firefox3.5+;Opera12+;Safari4+;IE8+;如何在SpringBoot......
  • SpringBoot使用@Value获取不到值的问题
    背景在一次SpringBoot项目改造为Cloud的过程中,使用Nacos作为配置中心获取属性,改造后程序启动报错,查看日志,定位到代码:解决方案如果了解Bean的生命周期的同学应该知道,Spring在创建Bean的时候,会使用无参构造函数去初始化一个Bean,@Value这个阶段是属于依赖注入,是在初始化之后的,所......
  • 02_自定义Springboot starter
     创建springbootstarter 创建一个demostarter  创建配置类@Configuration@EnableConfigurationProperties(EmailProperties.class)@ConditionalOnBean(EmailEnable.class)publicclassEmailAutoConfiguration{static{System.out.println("Em......
  • Spring中@Autowired和@Resource的区别
    说明注解提供方:@Autowired这个由Spring提供;@Resource由JDK提供区别①注解内参数不同@Autowired只包含一个required参数,默认为true,表示注入的时候,该bean必须存在,否则就会注入失败;required=false,表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错@Resource包含七个参数,其中最......
  • 解析json
    result.SetSuccess(Util.TryGetJSONObject<JObject>("{\"obj\":{\"reply\":\""+row.response+"\"},\"code\":"+0+"}")); {"Success":true,"Message&......
  • spring boot
           ......
  • js内置对象
    Js标准内置对象ObjectObject是JavaScript的一种数据类型。它用于存储各种键值集合和更复杂的实体。可以通过Object()构造函数或者使用对象字面量的方式创建对象。Object.assign()Object.assign()静态方法将一个或者多个源对象中所有可枚举的自有属性复制到目标对象,并返......
  • Spring5学习随笔-生命周期、自定义类型转换器、后置处理Bean
    学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】第十章、对象的生命周期1.什么是对象的生命周期指的是一个对象创建、存活、消亡的一个完整过程2.为什么要学习对象的生命周期由Spring负责对象的......
  • flask取消jsonify自动排序
    将此配置行添加到应用程序定义之后的代码中:app=Flask(__name__)app.config['JSON_SORT_KEYS']=False对于Flask2.3及更高版本,请使用以下命令:app.json.sort_keys=False......