항해 24일차
프로젝트는 끝냈지만 여전히 이해 안되고 라이브코딩이 힘들다.
다시한번 기초를 다지고 완벽히 구조를 이해한뒤에 100%완벽하게는 아니지만
혼자서 코딩을 해보려고 한다.
1. thymeleaf 템플릿엔진 동작 확인
![](https://velog.velcdn.com/images%2Fkyungwoon%2Fpost%2Fb7c4a3b7-2701-4290-a5b2-69b28bcbe8f8%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-03%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.18.57.png)
- 컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버( viewResolver )가 화면을 찾아서 처리한다. 스프링 부트 템플릿엔진 기본 viewName 매핑
resources:templates/ +{ViewName}+ .html
2. 스프링 웹 개발 기초
-
정적 컨텐츠
-
MVC와 템플릿 엔진
-
API
-
정적 컨텐츠 이미지
![](https://velog.velcdn.com/images%2Fkyungwoon%2Fpost%2Fce8a6bf8-fe54-4a25-9d1f-e218b28b8c8f%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-03%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.20.20.png)
3. MVC와 템플릿 엔진
MVC: Model, View, Controller
3-1. 템플릿 엔진 방식
-
@RequestParam 외부에서 파라미터를 받을때, Model에서 담고 view에서 랜더링 할때 사용
![](https://velog.velcdn.com/images%2Fkyungwoon%2Fpost%2F0f1c4dca-2879-421d-a67d-c5105c57eccf%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-03%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.37.37.png)
-
key = "name:" , value = name
![](https://velog.velcdn.com/images%2Fkyungwoon%2Fpost%2Fffe9eb71-94d0-4318-a648-904902ea35c5%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-03%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.03.13.png)
3-2. API방식
![](https://velog.velcdn.com/images%2Fkyungwoon%2Fpost%2Fa046fcfa-c075-412c-95cb-6fd074bd57a0%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-03%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.08.42.png)
- @ResponseBody 를 사용하면 뷰 리졸버( viewResolver )를 사용하지 않음
- 대신에 HTTP의 BODY에 문자 내용을 직접 반환(HTML BODY TAG를 말하는 것이 아님)
![](https://velog.velcdn.com/images%2Fkyungwoon%2Fpost%2F7709ec0b-dafb-4b30-87b4-29f18f1bc638%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-03%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.09.40.png)
- @ResponseBody 를 사용하고, 객체를 반환하면 객체가 JSON으로 변환됨
@ResponseBody 사용 원리
![](https://velog.velcdn.com/images%2Fkyungwoon%2Fpost%2Ff3963770-d536-49a5-9bd7-caeb0f283e77%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-03%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.10.17.png)
- @ResponseBody 를 사용
- HTTP의 BODY에 문자 내용을 직접 반환
- viewResolver 대신에 HttpMessageConverter 가 동작
- 기본 문자처리: StringHttpMessageConverter
- 기본 객체처리: MappingJackson2HttpMessageConverter
- byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음