[스프링 입문] 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/public
or/resources
or/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
가 선택된다.
댓글 남기기