SpringBoot 访问web中的静态资源

SpringBoot 访问web中的静态资源主要方式为:

classpath 类目录 (src/mian/resource)

       classpath 即 WEB-INF 下面的 classes 目录 ,在 SpringBoot  项目中是 src/main/resource 目录

一、SpringBoot 访问web中的静态资源
SpringBoot默认指定了一些固定的目录结构,静态资源放到这些目录中的某一个,系统运行后浏览器就可以访问到。

1、SpringBoot 默认指定的可以存放静态资源的目录有哪些?

      classpath:/META-INF/resources/      ## 需创建/META-INF/resources/ 目录
       classpath:/resources/                        ## 需创建/resources/目录
       classpath:/static/                               ## 工具自动生成的static目录,也是用的最多的目录
       classpath:/public/                              ## 需创建/public/ 目录
       /                                     ## 指的是 src/main/webapp/ 需创建/webapp/ 目录
 

2、在全局配置文件中自定义--修改这些默认的目录

     注意: 修改后,除配置的目录以外其他目录就不可以再访问静态资源了(SpringBoot 2.1.4 试了好像可以)

方式一:配置文件修改

YAML 文件:

server:
  port: 80
spring:
  resources:
    static-locations:
      - classpath:resources
      - classpath:static
  mvc:
    static-path-pattern: /**
properties 文件 

server.port=80
spring.resources.static-locations=classpath:resources,classpath:static
spring.mvc.static-path-pattern=/**
第一行配置表示定义资源位置,第二行配置表示定义请求 URL 规则。

方式二:配置类修改

@Configuration
public class WebMVCConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/","classpath:/aa");
    }
}
   访问的时候就需要写完整路径 http://127.0.0.1:8080/static/abc23.jpg。
3、SpringBoot 默认的首页是放在任一个静态资源目录下的index.html

如果springboot·还是访问不到静态资源,查看是否maven配置是否包含静态资源

<build>
        <finalName>lps-client</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
<!--        <resources>-->
<!--            <resource>-->
<!--                <directory>src/main/java</directory>-->
<!--                <includes>-->
<!--                    <include>**/*.xml</include>-->
<!--                </includes>-->
<!--            </resource>-->
<!--            &lt;!&ndash;指定资源的位置 &ndash;&gt;-->
<!--            <resource>-->
<!--                <directory>src/main/resources</directory>-->
<!--                <includes>-->
<!--                    <include>**/*.properties</include>-->
<!--                    <include>**/*.yml</include>-->
<!--                    <include>**/*.xml</include>-->
<!--                    <include>**/*.tld</include>-->
<!--                </includes>-->
<!--            </resource>-->
<!--        </resources>-->
    </build>

 之前因为<include>中不包含html所有访问不到html资源


版权声明:本文为zhangkang65原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。