정적 컨텐츠
정적 컨텐츠는 실시간으로 변경할 필요가 없는 데이터를 의미
서버에 저장해 두고 요청이 있으면 html 파일을 그대로 웹 브라우저에 반환한다.
아래 예시와 같이 그냥 찍어둔 html을 저장해 두면 요청할 때마다 똑같은 결과를 보여준다.
실행
-> http://localhost:8080/hello-static.html
정적 컨텐츠 동작 로직
1. hello-static 이름을 가진 컨트롤러부터 찾음
2. 컨트롤러가 없다면 resources 안에 있는 hello-static.html을 찾은 후 반환
MVC와 템플릿 엔진
MVC : Model, View, Controller
과거 View 단에서 모든 처리를 했지만 현재는 Model, View, Controller로 기능을 쪼개 사용한다.
템플릿 엔진 : 특정 데이터 모델에 따른 입력 자료를 합성하여 결과를 출력하는 소프트웨어. 가져온 데이터를 미리 정의된 템플릿에 넣어 HTML 문서를 만들어 클라이언트에 전달해 주는 역할을 함. ex) Thymeleaf, Mustache
Controller가 GetMapping 어노테이션을 통해 get 요청을 받음 -> model을 통해 변수 등록 -> return 브라우저 전송
Controller
예제 1
예제 2
View
예제 1
예제 2
실행
예제 1
localhost:8080/hello-mvc 뒤에 ?name=spring! 을 통해 parameter를 넘긴다.
parameter를 받은 Controller는 name을 spring!으로 받아서 Model에 담은 후 template로 넘어가서 결과를 출력함.
예제 2
MVC, 템플릿 엔진 동작 로직
1. 웹 브라우저에서 localhost:8080/hello-mvc를 내장 톰켓 서버로 넘김
2. 내장 톰켓 서버가 spring에게 hello-mvc를 확인 후 스프링에게 넘김
3. 스프링은 helloController에 매핑된 메서드를 확인 후 return은 hello-template, model(name:spring)으로 viewResolver에게 넘김
4. viewResolver가 리턴된 hello-template와 같은 이름을 가진 templates/hello-template를 찾아서 Thymeleaf에 넘김
5. Thymeleaf는 렌더링 후 변환한 이미지를 웹 브라우저에 넘김
API
@ResponseBody 문자 반환
1. viewResolver 대신에 HttpMessageConverter가 동작
2. 리턴 값이 문자라면 StringConverter가 동작
3. HTTP body에 문자 내용을 직접 반환
실행
@ResponseBody 객체 반환
1. viewResolver 대신에 HttpMessageConverter가 동작
2. 리턴 값이 객체라면 JsonConverter가 객체를 Json 형태로 변환
실행
API 동작 로직
출처 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근기술 :김영한
'Spring Boot' 카테고리의 다른 글
[Spring Boot] Lombok 리팩토링과 로깅 (4) | 2023.03.11 |
---|---|
[Spring Boot] h2 데이터베이스 (2) | 2023.03.11 |
[Spring Boot] 데이터베이스에 데이터 생성 (2) | 2023.03.11 |
[Spring Boot] form 태그를 통해 데이터 보내기 (0) | 2023.03.11 |
[Spring Boot] Spring Boot 설정 후 빌드하기 (0) | 2022.09.28 |