Post

Spring 웹 개발 기초

스프링 웹 개발에는 크게 세가지 방법이 있다.

  • 정적 컨텐츠
  • MVC와 템플릿 엔진
  • API

이 세가지 방식에 대해 알아보자.

정적 컨텐츠(Static Content)

정적 컨텐츠 서버에서 파일을 그대로 웹브라우저에게 보내는 것을 의미한다.

스프링 부트는 기본적으로 정적 컨테츠를 제공한다.

resources/static 폴더가 있는데 이 폴더에 html 파일, 이미지 파일 등과 같은 정적 파일들을 넣어두고 관리한다.

정적 컨텐츠 요청 시

image

요청이 들어오면 내장 톰켓에서 스프링으로 어떤 요청이 들어왔는지 알아낸 후 넘겨준다.

그 후 스프링은 컨트롤러 쪽에 hello-static이라는 것이 있는지 확인한다. 즉, 정적 컨테츠보다 컨트롤러가 우선순위를 가진다.

만약 없다면 그 후 resouces에 있는 정적 컨테츠인지 확인하고 있다면 반환하게 된다.

MVC와 템플릿 엔진

템플릿 엔진을 이용해 HTML 같은 파일들을 웹 브라우저에게 보낼 때 서버에서 프로그래밍을 해 HTML을 동적으로 바꿔서 보내주는 것을 의미한다.

MVC

  • MVC란 Model, View, Controller를 의미한다.
  • 예전에는 Controller와 View가 나눠있지 않고 View에서 모든 처리를 했다. (JSP 사용) 이러한 방식을 Model 1 구조라고 한다.
  • 하지만 최근에는 View는 화면 출력, Controller는 비즈니스 로직을 처리하는 등 관심사를 분리하고 역할을 명확하게 하기 위해 MVC 방식을 사용한다.

예제 코드

image

위 코드는 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을 반환하는 메소드이다.

image

결과 : 문자열로 반환

image

두번째는 객체를 반환하는 메소드이다.

image

결과 : JSON 타입으로 반환

image

이 두 코드는 위에서 살펴봤던 MVC 방식과 달리 @ResponseBody라는 어노테이션이 추가로 붙었다.

스프링에서는 이 @ResponseBody가 붙은 메소드는 그 리턴 값을 HTTP BODY에 직접 반환하겠다는 의미이다.

반환할 때 스프링에서는 반환 데이터의 타입을 읽고 그 타입에 맞는 HttpMessageConverter를 찾아서 처리해준다.

  • String 타입의 경우 : StringHttpMessageConverter

  • 객체의 경우 : MappingJackson2HttpMessageConverter

출처)

[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의 - 대시보드인프런 (inflearn.com)](https://www.inflearn.com/course/스프링-입문-스프링부트/dashboard)
This post is licensed under CC BY 4.0 by the author.