참고
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' 인프런 강의를 정리한 것 --> 스프링부트 강의 바로가기
스프링 웹 개발 기초
정적 컨텐츠
- 화면 그대로를 보여주는 것
- 스프링부트는 정적 컨텐츠를 제공함
- 웹브라우저가 localhost/hello-static.html 호출
- 내장 톰캣 서버가 스프링에게 던짐
- 스프링은 컨트롤러에서 해당 경로를 찾음(컨트롤러에 우선권이 있음)
- 없으니 resource내의 hello-static.html을 찾아 화면에 보여줌
- static 폴더 > hello-static.html을 만들고 localhost/hello-static.html로 호출 시 hello-static.html를 화면에 보여줄 수 있음
MVC와 템플릿 엔진
- mvc ; 서버에서 작업을 해서 화면에 내려주는 것
- 웹브라우저가 localhost/hello-mvc를 호출
- 내장 톰캣서버가 스프링에게 던짐
- 스프링은 컨트롤러(HelloController)에서 hello-mvc(helloMvc메서드)를 찾음
- HelloController의 helloMvc메서드를 호출
- 리턴값을 스프링에게 던짐
- 스프링은 viewResolver(view를 찾아주고 템플릿엔진에 연결)에게 던짐
- 템플릿엔진이 렌더링 후 html로 변환하여 웹브라우저에게 넘겨줌
API
1. 웹브라우저가 localhost/hello-api 호출
2. 내장 톰캣서버가 스프링에게 던짐
3. 해당 컨트롤러의 메서드를 찾아 호출
4. @ResponseBody
4-1. @ResponseBody가 없으면 viewResolver에게 던짐
4-2. @ResponseBody가 있으면 HttpMessageConverter가 동작
5. Http의 body 부분에 응답을 내려줌
5-1. 문자의 경우 StringConverter를 통해 문자를 내려줌
5-2. 객체의 경우 JsonConverter를 통해 json방식으로 내려줌