강의명 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
지식공유자 : 김영한
[지금 무료]스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의 | 김영한 - 인프런
김영한 | , 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 첫 번째 강의입니다. 우아한형제들 최연소 기술이
www.inflearn.com
정적 컨텐츠
정적 컨텐츠
스프링 부트의 정적 컨텐츠 기능이다.
- resources/static/hello-static.html 경로로 hello-static.html 파일을 생성한다.
- http://localhost:8080/hello-static.html을 웹 브라우저에서 검색하여 결과를 확인할 수 있다.

http://localhost:8080/hello-static.html을 웹 브라우저로 검색했을 때, 스프링 컨테이너에서 hello-static 관련 컨트롤러가 없으므로, resources : static/hello-static.html을 찾아서 hello-static.html을 웹 브라우저에 바로 표시한다.
Spring Boot Features
Graceful shutdown is supported with all four embedded web servers (Jetty, Reactor Netty, Tomcat, and Undertow) and with both reactive and Servlet-based web applications. It occurs as part of closing the application context and is performed in the earliest
docs.spring.io
위의 링크를 통해 정적 컨텐츠(Static Content)에 대한 자료를 확인할 수 있다.
MVC와 템플릿 엔진
MVC
MVC
- Model
- view
- controller

controller에 위와 같은 코드를 작성한다.
@GetMapping 어노테이션을 통해 "hello-mvc"라는 url이 입력되었을 때 현재 함수가 실행되도록 한다.
@RequestParam을 통해 name을 파라미터로 입력받으면 name의 값을 model.addAttribute 함수를 통해 전달한다.
이후 return "hello-template"으로 hello-template.html파일로 이동한다.
@RequestParam(value = "name", required = false) 와 같이 작성하면 name을 입력받지 않아도 된다.
(default 옵션은 required = true이다)

${name}이 입력받은 name으로 치환되어 웹 브라우저에 표시된다.
http://localhost:8080/hello-mvc?name=spring를 입력했을 때 아래와 같은 화면을 얻을 수 있다.

name=spring에서 spring 대신 다른 문자열을 입력하면 해당 문자열을 표시하게 된다.
템플릿 엔진

http://localhost:8080/hello-mvc을 웹 브라우저에 입력하면 내장 톰켓 서버를 거쳐 스프링 컨테이너로 이동한다.
스프링 컨테이너에서 helloController에 hello-mvc와 관련된 컨트롤러가 존재하므로, 해당 컨트롤러가 반환하는 hello-template에 name값을 전달한다.
viewResolver가 화면을 찾아서 처리한다. 정적 컨텐츠와는 달리 Thymeleaf 템플릿 엔진의 처리를 통해 변환된 HTML을 웹 브라우저에 넘겨준다. (${name)이 정적 컨텐츠에서는 그대로 넘어가지만, Thymeleaf 템플릿 엔진의 처리를 거치면 spring으로 변환되어 넘어간다.)
API
String

controller에 위와 같은 코드를 작성한다.

http://localhost:8080/hello-string?name=spring을 웹 브라우저에 입력하면 위와 같은 결과를 얻을 수 있다.

페이지 소스 보기를 통해 소스를 확인했을 때, html문서가 아니라 return의 결과가 그대로 나타남을 확인할 수 있다.
@ResponseBody의 Body는 HTML의 body가 아니라, http 프로토콜의 Body를 의미한다.
@ResponseBody를 사용할 경우 viewResolver를 사용하지 않는다.
API

helloController 클래스 내부에 static class Hello를 정의한다.

마찬가지로 controller에 위와 같은 코드를 작성한다.

http://localhost:8080/hello-api?name=spring을 웹 브라우저에 검색하면 위와 같은 결과를 얻을 수 있다.
@ResponseBody를 사용하고, 객체를 반환하면 객체가 JSON으로 변환된다.
josn >> key : value 로 구성된 형식
spring에서는 xml을 사용할 수도 있으나 기본적으로 json으로 설정되어있다.

- @ResponseBody를 사용
- HTTP의 BODY에 문자 내용을 직접 반환
- viewResolver 대신에 HttpMessageConverter 가 동작
- 기본 문자처리: StringHttpMessageConverter
- 기본 객체처리: MappingJackson2HttpMessageConverter
- byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
클라이언트의 HTTP Accept 해더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 HttpMessageConverter 가 선택된다.
'Spring' 카테고리의 다른 글
| Spring 입문 - Part 3 : 회원 관리 예제 - 백엔드 개발 (0) | 2025.03.26 |
|---|---|
| Spring 입문 - Part 1 : 프로젝트 환경 설정 (0) | 2025.03.22 |