[스프링 입문] Section 02 - 스프링 웹 개발 기초
카테고리: Spring-Tutorial
Web을 개발하는 3가지 방법
정적 컨텐츠: 파일을 그냥 웹 브라우저에 내려주는 것MVC와 템플릿 엔진: PHP, JSP같이 html 파일을 서버에서 프로그래밍해서 동적으로 바꾼 후 내려주는 것API: 데이터 자체(객체, string 등등)를 내려주는 방식
1. 정적 컨텐츠
By default, Spring Boot serves static content from a directory called
/static(or/publicor/resourcesor/META-INF/resources) in the classpath or from the root of the ServletContext

1st. 웹 브라우저가 요청을 서버에 넘겨줌
2nd. controller 쪽에서 관련 컨트롤러가 있는지 찾아봄
3rd. 관련 컨트롤러가 없기 떄문에 resources에서 파일을 찾아봄
4th. 별도 변환 과정 없이 그냥 반환해 줌
2. MVC와 템플릿 엔진
MVC: Model, View, Controller의 앞 자만 따서 부른다.
View는 화면과 관련된 일만 하도록, Controller는 비지니스 로직과 관련된 일만 하도록 ‘분리’ 한다는 것이 핵심이다.

1st. 웹 브라우저에서 요청이 들어오면
2nd. 해당 Controller가 mapping 되어있는 메소드를 찾아서 실행 후
3rd. 반환된 값을 통해 viewResolver가 해당하는 view를 찾아주고 템플릿 엔진에 연결시켜줌
4th. 템플릿 엔진은 해당 파일을 렌더링 후 웹 브라우저에 반환해준다.
3. API

@ResponseBody를 사용하면- HTTP의 BODY에 data를 직접 내려준다.
viewResolver대신HttpMessageConverter가 동작하는데(spring에 셋팅되어있음)- 기본 문자 처리의 경우:
StringHttpMessageConverter - 기본 객체 처리의 경우:
MappingJackson2HttpMessageConverter(객체를 jason으로 바꿔주는 라이브러리들 중 하나) - 기타 등등의 경우에 맞는 여러
HttpMessageConverter가 기본으로 등록되어있음. body부에 오는 데이터의 종류에 따라 어떤Converter가 동작할 지 결정됨
- 기본 문자 처리의 경우:
참고: ‘클라이언트의 HTTP Accept 해더’와 ‘서버의 컨트롤러 반환 타입 정보’ 둘을 조합해서
HttpMessageConverter가 선택된다.
댓글 남기기