본문 바로가기
Dev/Spring Boot

[스프링 부트 개념과 활용] 스프링 웹 MVC 4, 5, 6부

by dev_jsk 2020. 8. 26.
728x90
반응형

정적 리소스 지원

Web BrowserClient에서 요청이 들어왔을 때 이미 만들어져 있는 리소스를 그대로 보내주는것

 

특징

  • 정적 리소스 매핑 : /**
  • 기본 리소스 위치
    • classpath:/static
    • classpath:/public
    • classpath:/resources/
    • classpath:/META-INF/resources
    • spring.mvc.static-path-pattern : 매핑 설정 지정
    • spring.mvc.static-locations : 리소스 찾을 위치 지정
  • Last-Modified Header를 보고 304 응답을 보낸다.
  • ResourceHttpRequestHandler가 처리한다.
    • WebMvcConfigureraddResourceHandlers로 커스터마이징 할 수 있다.

커스터마이징 예시

// /config/WebConfig.java

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/m/**")
            .addResourceLocations("classpath:/m/")	// 뒤에 '/' 꼭 붙여아 한다.
            .setCachePeriod(20);
    }
}
<!-- /resources/m/hello.html -->

<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>Page Title</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <link rel='stylesheet' type='text/css' media='screen' href='main.css'>
    <script src='main.js'></script>
</head>
<body>
    Hello Mobile Static Resource
</body>
</html>

결과

 

WebJAR

Client에서 사용하는 Web Library를 JAR 파일로 패키징한 것으로 의존성을 추가하여 사용할 수 있다.

 

특징

  • JVM 기반의 웹 애플리케이션에서 클라이언트측 의존성을 손쉽게 관리할 수 있음
  • JVM 기반 빌드툴을 사용하여 클라이언트측 의존성을 다운로드
  • 사용하고 있는 클라이언트측 의존성을 파악할 수 있음
  • 수동적인 종속성을 자동으로 해결하고 선택적으로 RequireJS를 통해 적재
  • 메이븐 중앙저장소를 통해 배포된다.
  • JSDELIVR 에서 제공하는 공개 CDN 사용이 가능하다.

 

예시

// pom.xml

<dependency>
    <groupId>org.webjars.bower</groupId>
    <artifactId>jquery</artifactId>
    <version>3.3.1</version>
</dependency>
<!-- resources/static/hello.html -->

<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>Page Title</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <link rel='stylesheet' type='text/css' media='screen' href='main.css'>
    <script src='main.js'></script>
</head>
<body>
    Hello Static Resource
    <script src="/webjars/jquery/3.3.1/dist/jquery.min.js"></script>
    <script>
        $(function() {
            alert("ready!");
        });
    </script>
</body>
</html>

결과

 

* WebJAR의 버전 명시를 생략하고 싶으면 pom.xmlwebjars-locator-core의존성을 추가한 후

/webjars/jquery/3.3.1/dist/jquery.min.js/webjars/jquery/dist/jquery.min.js로 변경하면 된다.

 

Index Page (Welcome Page)

Application Root: / 요청 시 보여주는 페이지

 

특징

  • 기본 리소스 위치 내 index.html을 찾아보고 있으면 제공
  • index.템플릿 찾아보고 있으면 제공
  • 둘 다 없으면 스프링 부트에서 제공하는 White Label Error Page

 

Favicon

Browser Title 옆 아이콘

 

특징

  • favicon.ico라는 이름으로 /resources/내 어디에 위치해도 상관없다.

참고

 

The best Favicon Generator (completely free)

With Favicon.io you can quickly generate a favicon for your website for free!

favicon.io

 

How do I force a favicon refresh?

I have a Grails application running locally using its own tomcat and I have just changed the favicon for a new one. Problem is that I can not see it in any browser. The old favicon shows up or I ...

stackoverflow.com

 

728x90
반응형

댓글