[스프링 입문] Section 02 - 스프링 웹 개발 기초

Update:     Updated:

카테고리:

태그:

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

Image

1st. 웹 브라우저가 요청을 서버에 넘겨줌
2nd. controller 쪽에서 관련 컨트롤러가 있는지 찾아봄
3rd. 관련 컨트롤러가 없기 떄문에 resources에서 파일을 찾아봄
4th. 별도 변환 과정 없이 그냥 반환해 줌

2. MVC와 템플릿 엔진

MVC: Model, View, Controller의 앞 자만 따서 부른다.
View는 화면과 관련된 일만 하도록, Controller는 비지니스 로직과 관련된 일만 하도록 ‘분리’ 한다는 것이 핵심이다.

Image

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

3. API

Image

  • @ResponseBody를 사용하면
    • HTTP의 BODY에 data를 직접 내려준다.
    • viewResolver대신 HttpMessageConverter가 동작하는데(spring에 셋팅되어있음)
      • 기본 문자 처리의 경우: StringHttpMessageConverter
      • 기본 객체 처리의 경우: MappingJackson2HttpMessageConverter(객체를 jason으로 바꿔주는 라이브러리들 중 하나)
      • 기타 등등의 경우에 맞는 여러 HttpMessageConverter가 기본으로 등록되어있음. body부에 오는 데이터의 종류에 따라 어떤 Converter가 동작할 지 결정됨

참고: ‘클라이언트의 HTTP Accept 해더’와 ‘서버의 컨트롤러 반환 타입 정보’ 둘을 조합해서 HttpMessageConverter가 선택된다.

Spring-Tutorial 카테고리 내 다른 글 보러가기

댓글 남기기