SpringBoot 정적 리소스 매핑 규칙이란 무엇입니까?

PHPz
풀어 주다: 2023-05-13 16:28:06
앞으로
1112명이 탐색했습니다.

1. 정적 리소스 매핑 규칙

프로젝트에서shift또는ctrl+N을 두 번 클릭하여WebMvcAutoConfiguration.class파일을 검색하고 파일의 addResourceHandlers 메소드는 다음과 같습니다.shiftctrl+N搜索WebMvcAutoConfiguration.class文件,文件中的addResourceHandlers方法如下:

public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!this.resourceProperties.isAddMappings()) { logger.debug("Default resource handling disabled"); } else { 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}); } }); } }
로그인 후 복사

随后进入到getStaticLocations()方法可以发现变量 staticLocations 的取值如下:

"classpath:/META-INF/resources/"
"classpath:/resources/"
"classpath:/static/"
"classpath:/public/"

即项目运行时会到上述路径下寻找静态资源,也可以自定义静态资源路径,需在 application.properties 中配置:

spring.resources.static-locations=classpath:/folder1/,classpath:/folder2/

注:一旦自定义了静态文件夹的路径,则默认的静态资源路径就会失效。

2. 欢迎页

静态资源路径下的 index.html 文件会被/**所映射,当访问http://localhost:8080/时 ,会默认映射到静态资源文件夹下的 index.html。

遇到的问题

新建 index.html 文件后运行项目,访问http://localhost:8080/时会页面错误:

SpringBoot 정적 리소스 매핑 규칙이란 무엇입니까?

控制台报如下错误:

SpringBoot 정적 리소스 매핑 규칙이란 무엇입니까?

Spring Boot 的版本是 2.7.8,tomcat 的版本是 9.0.71。Spring Boot 通过内嵌的 tomcat 来运行项目,但需要依靠本地的 java 环境,我本地的 java 版本是 Java 1.8.0_261(即 java 8 版本),一般 java 8 和 tomcat 8.x.x 配套使用,这里可能是版本冲突导致的问题。将项目的 SDK 改为jbr-11 JetBrains Runtime version 11.0.10rrreee

그런 다음 getStaticLocations()메소드를 입력하면 다음과 같이 staticLocations 변수의 값을 찾을 수 있습니다.

SpringBoot 정적 리소스 매핑 규칙이란 무엇입니까?"classpath:/META- INF/resources/"
"classpath:/resources/"
"classpath:/static/"
"classpath:/public/"

즉, 프로젝트가 실행 중이면 위 경로에서 정적 리소스를 찾습니다. 이 경로는 application.properties에서 구성해야 합니다.

spring.resources.static-locations=classpath:/folder1/ ,classpath:/folder2/
참고: 정적 파일이 폴더 경로로 사용자 정의되면 기본 정적 리소스 경로가 유효하지 않게 됩니다. 2. 환영 페이지정적 리소스 경로 아래의 index.html 파일은 /**로 매핑됩니다. http://localhost:8080/에 접속하면 기본적으로 정적 리소스는 폴더 아래에 있습니다. 문제 발생새 index.html 파일을 생성하고 프로젝트를 실행한 후 http://localhost:8080/: SpringBoot의 정적 리소스 매핑 규칙은 무엇입니까콘솔에서 다음 오류를 보고했습니다. SpringBoot의 정적 리소스 매핑 규칙은 무엇입니까Spring Boot 버전은 2.7.8이며, Tomcat 버전은 9.0.71입니다. Spring Boot는 내장된 Tomcat을 통해 프로젝트를 실행하지만 로컬 Java 환경에 의존해야 합니다. 내 로컬 Java 버전은 Java 1.8.0_261(즉, Java 8 버전)입니다. 함께 사용하는 경우 버전 충돌로 인한 문제일 수 있습니다. 프로젝트의 SDK를 jbr-11 JetBrains Runtime 버전 11.0.10으로 변경하면 문제를 해결할 수 있습니다. JetBrains Runtime은 IDEA와 함께 제공되는 Java 실행 환경으로 간주될 수 있습니다.

위 내용은 SpringBoot 정적 리소스 매핑 규칙이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!