Spring 웹 개발 기초
스프링 웹 개발에는 크게 세가지 방법이 있다.
- 정적 컨텐츠
- MVC와 템플릿 엔진
- API
이 세가지 방식에 대해 알아보자.
정적 컨텐츠(Static Content)
정적 컨텐츠 서버에서 파일을 그대로 웹브라우저에게 보내는 것
을 의미한다.
스프링 부트는 기본적으로 정적 컨테츠를 제공한다.
resources/static
폴더가 있는데 이 폴더에 html 파일, 이미지 파일 등과 같은 정적 파일들을 넣어두고 관리
한다.
정적 컨텐츠 요청 시
요청이 들어오면 내장 톰켓에서 스프링으로 어떤 요청이 들어왔는지 알아낸 후 넘겨준다.
그 후 스프링은 컨트롤러 쪽에 hello-static이라는 것이 있는지 확인한다. 즉, 정적 컨테츠보다 컨트롤러가 우선순위
를 가진다.
만약 없다면 그 후 resouces에 있는 정적 컨테츠인지 확인하고 있다면 반환하게 된다.
MVC와 템플릿 엔진
템플릿 엔진을 이용해 HTML 같은 파일들을 웹 브라우저에게 보낼 때 서버에서 프로그래밍을 해 HTML을 동적으로 바꿔서 보내주는 것
을 의미한다.
MVC
- MVC란
Model, View, Controller
를 의미한다. - 예전에는 Controller와 View가 나눠있지 않고 View에서 모든 처리를 했다. (JSP 사용) 이러한 방식을
Model 1
구조라고 한다. - 하지만 최근에는 View는 화면 출력, Controller는 비즈니스 로직을 처리하는 등
관심사를 분리
하고역할을 명확
하게 하기 위해MVC
방식을 사용한다.
예제 코드
위 코드는 Get 방식으로 넘어온 데이터를 model 객체에 담은 뒤 View로 그 데이터를 넘겨주고 화면에 출력하는 방식으로 동작한다.
여기서 Model 객체는 Map ADT를 이용한 객체로 key와 value로 이루어져있다.
Model 객체에 데이터를 담은 뒤 View인 hello-template.html로 데이터를 넘겨준다.
이렇듯 Controller에서 데이터를 Model에 담아준 뒤 그 Model을 통해 View에서 받아온 데이터로 HTML을 변환 후 리턴하는 방식이 MVC이다.
1
결과 : hello spring!
이렇듯 정적 컨테츠와 달리 HTML이 동적으로 변환되어 웹 브라우저에게 전달되는 것을 볼 수 있다.
API
데이터만 보내고 화면은 클라이언트가 알아서 출력하게 하는 방식이다.
예제
두가지 예제 코드를 통해 알아보자.
첫번째는 String을 반환하는 메소드이다.
결과 : 문자열로 반환
두번째는 객체를 반환하는 메소드이다.
결과 : JSON 타입으로 반환
이 두 코드는 위에서 살펴봤던 MVC 방식과 달리 @ResponseBody
라는 어노테이션이 추가로 붙었다.
스프링에서는 이 @ResponseBody가 붙은 메소드는 그 리턴 값을 HTTP BODY에 직접 반환
하겠다는 의미이다.
반환할 때 스프링에서는 반환 데이터의 타입을 읽고 그 타입에 맞는 HttpMessageConverter
를 찾아서 처리해준다.
String 타입의 경우 : StringHttpMessageConverter
객체의 경우 : MappingJackson2HttpMessageConverter
출처)
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의 - 대시보드 | 인프런 (inflearn.com)](https://www.inflearn.com/course/스프링-입문-스프링부트/dashboard) |