[Spring Boot #14] 스프링 웹 MVC : 정적 리소스 지원
| 스프링 부트 정적 리소스 지원
스프링 부트에서 정적 리소스를 지원할 시 url의 root(/)에 자동적으로 정적 리소스를 매핑 할 수 있습니다.
프로젝트 구조
| pom.xml
+---src
| +---main
| | +---java
| | | \---com
| | | \---tutorial
| | | \---sptringbootmvc
| | | | SptringBootMvcApplication.java
| | |
| | \---resources
| | | application.properties
| | |
| | \---static
| | hello.html
hello.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
Mobile Hello Static Resource AHAHA LOL
</body>
</html>
http://localhost:8080/hello.html 로 연결 시 다음과 같이 웹브라우져에 출력됩니다.
| application.properties를 통한 정적 리소스 매핑
application.properties
spring.mvc.static-path-pattern=/static/**
http://localhost:8080/static/hello.html 로 연결 시 다음과 같이 웹브라우져에 뜹니다.
| WebMvcConfigurer를 통한 정적 리소스 매핑
프로젝트 구조
| pom.xml
+---src
| +---main
| | +---java
| | | \---com
| | | \---tutorial
| | | \---sptringbootmvc
| | | | SptringBootMvcApplication.java
| | | |
| | | +---config
| | | | WebConfig.java
| | |
| | \---resources
| | | application.properties
| | |
| | +---m
| | | hello.html
| | |
| | \---static
| | hello.html
hello.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
Mobile Hello Static Resource AHAHA LOL
</body>
</html>
소스
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/m/**")
.addResourceLocations("classpath:/m/")
.setCachePeriod(20);
}
}
- addResourceHandlers는 리소스 등록 및 핸들러를 관리하는 객체인 ResourceHandlerRegistry를 통해 리소스 위치와 이 리소스와 매칭될 url을 등록합니다.
- setCachePeriod는 캐시가 얼마나 지속할 지 정하는 메서드입니다. 위에서는 20초로 설정됬습니다.
http://localhost:8080/m/hello.html 으로 요청시 다음과 같은 화면이 출력됩니다.
| 스프링 부트 jquery 의존성 추가 및 HTML 동적 요소 도입
jquery를 의존성을 추가하기 위해서는 다음과 같이 메이븐에 의존성을 추가해야 합니다.
<dependency>
<groupId>org.webjars.bower</groupId>
<artifactId>jquery</artifactId>
<version>3.3.1 </version>
</dependency>
jquery에서 자동적으로 버전을 관리하기 위한 의존성을 추가할 수 있습니다.
<dependency>
<groupId>org.webjars</groupId>
<artifactId>webjars-locator-core</artifactId>
<version>0.35</version>
</dependency>
resources/static/hello.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
Hello Static Resource AHAHA POWER
<!-- <script src="/webjars/jquery/3.3.1/dist/jquery.min.js"></script>-->
<script src="/webjars/jquery/dist/jquery.min.js"></script>
<script>
$(function(){
alert("ready!");
});
</script>
</body>
</html>
원래 /webjars/jquery/3.3.1/dist/jquery.min.js 라 명시해야하지만 위에서 추가한 webjars-locator-core 의 버전 관리 기능때문에 버전을 명시하지 않아도 스프링부트가 의존하고 있는 jquery 버전이 자동적으로 작동됩니다.
http://localhost:8080/static/hello.html 로 요청하면 다음과 같은 화면이 출력됩니다.
'Spring Framework > Spring boot #2' 카테고리의 다른 글
[Spring Boot #18] 스프링 부트 ExceptionHandler (0) | 2021.03.24 |
---|---|
[Spring Boot #17] 스프링 부트 HtmlUnit 써보기 (0) | 2021.03.15 |
[Spring Boot #16] 스프링 웹 MVC : Thymeleaf 템플릿 (0) | 2021.03.15 |
[Spring Boot #15] 스프링 웹 MVC : 인덱스 페이지와 파비콘 (0) | 2021.03.15 |
[Spring Boot #13] 스프링 웹 MVC : HttpMessageConverter, ViewResolver (0) | 2021.03.15 |
[Spring Boot #12] 스프링부트에서 테스트 작성하기( Spring Boot Test ) (0) | 2021.03.15 |
[Spring Boot #11] 스프링 부트 로깅( Spring Boot Logging ) (0) | 2021.03.15 |
[Spring Boot #10] 스프링 부트 프로파일(Spring Boot Profile) (0) | 2021.03.15 |