반응형

[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 로 요청하면 다음과 같은 화면이 출력됩니다.



참고자료 : https://www.inflearn.com/course/스프링부트


반응형

이 글을 공유하기

댓글

Designed by JB FACTORY