본문 바로가기

Spring boot

[spring boot] 정적 컨텐츠, MVC와 템플릿 엔진, API

정적 컨텐츠

정적 컨텐츠는 파일을 그대로 웹브라우저로 전달하는 것으로,

맨 처음 controller에서 파일을 찾아보고 없다면 resource에서 찾는다. 

찾는대로 바로 반환하는 것이 특징이다. 

(/ 페이지에 접속했을 때 resources/static/index.html 파일이 있다면 이걸 반환,

 /페이지에 접속했을 때 다른 파일로 연결되도록 지정해줬다면 지정된 파일로 반환)

출처 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

 

MVC와 템플릿 엔진

MVC와 템플릿 엔진은 서버에서 HTML 템플릿이 있으면 thymeleaf(템플릿엔진)가 view라는 템플릿(html)을 변경, 조작하여 내려주는 방식이다.

소스코드를 보면 변환 된 데이터와 html코드가 보인다는 특징이 있다. 

 

로직을 살펴보자면, 

1. 내장 톰켓서버가 "hello-mvc라는게 왔어" 하고 spring에 던진다.

2. controller에서 찾아서 해당 메서드를 호출해준다.

   return인 html을 찾아 model(키는 name, 값은 spring)을 view에 넘겨준다.

3. viewResolver가 return html을 찾고 템플릿 엔진을 연결해준다.

4. thymeleaf 엔진이 렌더링해서 html변환 후!!!(정적일 땐 안함) 웹 브라우저로 전달한다.

   (소스코드보면 변환 된 데이터로 보여짐)

출처 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

 

 

API

API는 클라이언트에게 JSON이라는 포맷으로 데이터를 전달한다.

(vue, react: 데이터만 내려주면 화면은 clinet가 알아서 만든다. 서버끼리 통신할 때 )

API는 소스코드에 html코드 없이 딱 데이터만 그대로 웹 브라우저에 보여준다는 특징이 있다.  

 

@ResponseBody를 사용하면

  • HTTP BODY에 문자 내용을 직접 반환
  • viewResolver대신에 HttpMessageConverter가 동작
  • 기본 문자처리는 StringHttpMessageConverter가, 
  • 기본 객체처리는 MappingJackson(객체를 json으로 바꿔주는 라이브러리)2HttpMessageConverter가 동작

문자 반환   -   출처 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
객체반환   -   출처 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

로직을 살펴보자면, 

1. 내장 톰캣 서버가 "hello-api가 들어왔어"라고 spring boot에 알려준다.

2. controller에 있는지 확인한다.

3. ResponseBody를 만나면 HttpMessageConverter에 이 데이터를 넘김

(데이터가 단순 문자면 StringConverter에게 전달해 바로 문자를 반환하지만 객체를 준다면 jsonConverter에게 전달해 json스타일로 데이터를 바꿔 응답한다.

 

출처 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

 

 

 


추가 정보

view : 화면관련된 일

controller : 로직이나 서버 뒷단관련된 일, model에 화면에 필요한걸 담아서 화면에 넘겨줌.

 

params는 url에 "?name=spring"으로 추가할 수 있음. 

thymeleaf는 html을 변경시켜줌.

 

getter, setter는 단축키 alt+insert로 생성된다.