본문 바로가기
인프런 🍀

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

by 의정부핵꿀밤 2022. 8. 19.
728x90

스프링 웹 개발 기초

1. 정적 컨텐츠

  • 파일 그대로를 웹 브라우저에 내려 주는 것

 

2. MVC와 템플릿 엔진

  • 템플릿 엔진 : HTML 파일을 서버에서 프로그래밍 하여 동적으로 내려주는 방식
  • MVC : Model, View, Controller로 구분하여 프로그래밍하는 패턴

 

3. API

  • 서버가 안드로이드나 다른 클라이언트와 통신해야 하는 경우 JSON 형식으로 데이터를 주고받는다
  • 이처럼 JSON 형식으로 서버와 클라이언트가 데이터를 주고 받으며 통신하는 방식을 API 방식이라고 한다

 


정적 컨텐츠

  1. 웹 브라우저에서 html 파일을 요청한다
  2. 내장 톰캣 서버가 요청을 받는다
  3. 요청을 스프링 컨테이너에게 넘긴다
  4. 스프링 컨테이너는 우선 컨트롤러에게 넘겨서 확인한다
  5. 만약 컨트롤러가 없으면 resources에서 html 파일을 찾아서 넘겨준다

 

 

 

 

MVC와 템플릿 엔진

MVC : Model, View, Controller

  1. 웹 브라우저에서 요청을 보낸다
  2. 내장 톰캣 서버가 요청을 받는다
  3. 요청을 스프링 컨테이너에게 넘긴다
  4. 스프링 컨테이너는 우선 컨트롤러에게 넘겨서 확인한다
  5. 컨트롤러에서 name value의 값을 찾아서 template 엔진을 연결시켜준다
  6. viewResolver가 hello-template 파일을 찾아서 변환시킨 후 웹 브라우저로 전송한다

 

 

 

 

API

@ResponseBody를 사용하면 viewResolver를 사용하지 않는다

대신 HTTP의 Body에 문자 내용을 직접 반환한다 (HTML Body Tag를 의미하는 것이 아니다)

 

@ResponseBody를 사용하고, 객체를 반환하면 객체가 JSON으로 변환된다

 

 

@ResponseBody 사용 원리

@ResponseBody를 사용

  • HTTP의 BODY에 문자 내용을 직접 반환한다
  • viewResolver 대신에 HttpMessageConverter가 동작한다
  • 기본 문자처리 ; StringHttpMessageConverter
  • 기본 객체처리 : MappingJackson2HttpMessageConverter
  • byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있다

 

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

 

728x90

댓글