1. 정적 컨텐츠

spring boot에서는 사진처럼 static 기능, 정적 컨텐츠 기능을 제공한다고 한다.

resorces폴더 안 static 폴더에 사진처럼 hello-static.html 파일을 생성했다.

hello-static.html파일을 실행시켜 서버를 켜보았고, 위와 같이 정적 컨텐츠가 뜨는 것을 볼 수 있다.
원리는 간단했다.
웹 브라우저 -> 스프링 부트 -> 내장 톰캣 서버로 localhost:8080/hello-static.html을 보내고
내장 톰캣 서버 -> 스프링 컨테이너로 보냈지만 hello-static 관련 컨트롤러가 없기 때문에
스프링 부트 안에 있는 resources/static 폴더로 가서 hello-static.html 파일을 읽은 후
스프링 부트 -> 웹브라우저로 hello-static.html 파일을 보내 렌더링 하는 원리이다.
2. MVC & 템플릿 엔진
MVC는 Model, View, Controller의 약자라고 한다.

지난 글에서 만들었던 controller 폴더 내에 HelloController에
위와 같이 새로운 매핑을 정의해보았다.
저번에 만들었던 것과 다른 점은 이번에는 파라미터를 받는다는 것이다.
name이라는 파라미터를 받았고, 이번에는 hello-template이라는 걸 return했다.

template 폴더 안에 hello-template.html을 만들었고,
thymeleaf 엔진을 사용해서 서버를 키면 hello + name파라미터값이 나오도록
그 외에는 그냥 일반 html이 나오도록 되어있는 구조다.

위와 같이 주소에 ?name=을 붙여 화면에 렌더링한 모습이다.
원리는 다음과 같다.
웹 브라우저 -> 스프링 부트 -> 내장 톰켓 서버 : localhost:8080/hello-mvc 전송
내장 톰켓 서버 -> 스프링 컨테이너 -> helloController -> viewResolver : helloController에서 내용을 읽고, return 값(hello-template), model(name 파라미터) viewResolver로 전송
viewResolver -> 웹브라우저 : templates 폴더 안에 있는 hello-template 내용을 읽고, html로 변환 후 웹 브라우저에 전송
3. API
API 방식은 템플릿 엔진 방식과는 달리
html이 아니라 response를 바로 보내는 방식이다.

위와 같이 HelloController에 Mapping을 추가해보았고,
이번에는 @ResponseBody를 추가하여 return값에 바로 값을 보내는 방식으로 해보았다.
이를 사용하면 ViewResolver를 사용하지않고 문자 내용을 직접 반환하게 된다.

결과가 잘 나오는 모습이다.

이제 객체를 반환하는 일반적인 API 방식을 사용해보았다.
Hello라는 클래스를 정의하여 hello 객체를 만들었다.
객체를 만들고 setName으로 name 파라미터를 가져온 후, hello라는 객체를 return한 코드이다.

서버 실행한 모습이다.
위와 같이 json 형태로 반환되는 것을 볼 수 있다.
원리는 다음과 같다.
웹 브라우저 -> 스프링 부트 -> 내장 톰켓 서버 : localhost:8080/hello-api 전달
내장 톰켓 서버 -> 스프링 컨테이너 -> Controller -> HttpMessageConverter : @ResponseBody 사용 - hello 객체 전달
HttpMessageConverter(이 경우엔 JsonConverter, string 반환일 때는 StringConverter)
-> 웹 브라우저 : json형태로 변환 후 전달
API 방식에서는 ViewResolver 대신 HttpMessageConverter가 동작하는 것을 볼 수 있고,
기본으로 HttpMessageConverter가 등록되어 있다.
'백엔드' 카테고리의 다른 글
| Spring 입문 #5 - 회원 관리 예제: 웹 MVC 개발 (0) | 2026.05.09 |
|---|---|
| Spring 입문 #4 - 스프링 빈과 의존관계 (0) | 2026.05.04 |
| Spring 입문 #3 - 회원 관리 예제: 회원 서비스 (2) | 2026.05.02 |
| Spring 입문 #2 - 회원 관리 예제 : 도메인, 레포지토리 (0) | 2026.03.30 |
| Spring 입문 #0 - 프로젝트 환경설정 (0) | 2026.03.07 |
