Spring-정적 컨텐츠

snowball moon·2023년 9월 30일
0

Spring-입문

목록 보기
5/14
post-thumbnail

웹 개발에서는 크게 세 가지 방법이 있다.

1. 정적 컨텐츠: 파일을 웹브라우저에 그대로 내려주는 방식이다.
2. MVC와 템플릿 엔진: HTML을 서버에서 프로그래밍을 해서 동적으로 바꾸고 내려주는 것을 말하며 모델, 템플릿 엔진, 화면 이 세 가지를 model-view-controller(MVC)라고 한다.
3. API: JSON이라는 데이터 구조 포맷으로 클라이언트한테 데이터를 전달하는 방식이다.(서버끼리 통신할 때에는 HTML을 내릴 필요가 없고 어떤 데이터를 주고 받는지가 중요하기 때문에 api방식으로 한다.)

이번에 살펴볼 내용은 정적 컨텐츠이다.

정적컨텐츠

https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-static-content
기본적으로 Spring Boot는 클래스 경로의 /static(또는 /public 또는 /resource 또는 /META-INF/resource) 디렉토리 또는 ServletContext의 루트에서 정적 컨텐츠를 제공한다.
Spring MVC의 ResourceHttpRequestHandler를 사용하므로 사용자 고유의 WebMvcConfigurer을 추가하고 addResourceHandler 메서드를 재정의하여 해당 동작을 수정할 수 있다고 한다.

더 자세한 내용은 공식문서를 통해서 보면 된다.

정적 컨텐츠는 파일을 그대로 웹 브라우저에 전달해주는 방식으로 프로그래밍을 할 수 없고 그대로 반환해준다.

resources/static에서 hello-static.html을 만들어 준다.

<!DOCTYPE HTML>
<html>
<head>
 <title>static content</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
정적 컨텐츠 입니다.
</body>
</html>

url은 파일명 그대로 들어오면 된다.
localhost:8080/hello-static.html

소스 페이지를 확인해보면 입력했던 코드와 동일한 것을 볼 수 있다.

이런 식으로 그대로 반환해주고 프로그래밍을 할 수는 없다. 이런 것을 정적 컨텐츠를 제공하는 기능이라고 한다.

제일 처음 내장 통계 서버가 요청을 받고 hello-static.html을 스프링한테 넘긴다.
스프링은 컨트롤러 쪽에서 hello-static이라는 것이 있는지 찾아 보는데 이건 컨트롤러가 우선순위를 가진다는 의미이다.
hello-static에 hello라는 컨트롤러는 존재하지만 hello-static이라는 컨트롤러는 없고 이와 관련된 어떤 맵핑이 된 컨트롤러가 존재하지 않으면 내부 resources안에 static-hello.satic.html을 찾는다.
찾고 나서 그대로 반환해준다.

정적 컨텐츠는 이러한 방식으로 동작한다.

0개의 댓글