[Spring Boot #14] 스프링 웹 MVC : 정적 리소스 지원

2021. 3. 15. 03:36 Spring Framework/Spring boot #2

| 스프링 부트 정적 리소스 지원

 

스프링 부트에서 정적 리소스를 지원할 시 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/스프링부트



출처: https://engkimbs.tistory.com/772?category=767865 [새로비]