Search
Duplicate

스프링 웹 개발 기초

1. 정적 컨텐츠

스프링부트에서는 정적 컨텐츠를 자동으로 제공합니다. 스프링 부트 프로젝트를 생성하면 자동으로 생성 되어있는 resources/ static 경로가 생성되어있는데, 해당 경로에 있는 파일들을 요청하면 우선순위를 가진 컨트롤러에서 매핑되는 컨트롤러가 있는지 검색 후 결과가 없으면 정적 컨텐츠 경로에서 요청자원을 검색 후 반환합니다.
어떠한 프로그래밍 작업없이 그대로 반환하지만, 이런식으로도 자원 요청이 가능합니다.

2. MVC와 템플릿 엔진

개요: Model, View, Controller의 복합어

MVC 패턴은 간략하게 말하자면 하나의 서비스에서 관심사들을 나누는 방법입니다. Model은 도메인만, Controller는 비즈니스 로직만, View는 Front쪽 만 담당하도록 합니다.
핵심은 viewResolver가 template안에서 해당 파일을 찾아서 템플릿 엔진이 Model로 받은 값(name:spring)을 렌더링해서 변환 후
반환해줍니다.

3. API

@ResponseBody

: 해당 어노테이션을 컨트롤러에 붙혀주면 http 프로토콜의 response body영역에 값을 바로 넣어주겠다는 의미입니다.
그렇기 때문에 따로 뷰가 존재하지 않고 페이지이동도 없습니다.
/* Controller */ @Controller("/api/hello") @ResponseBody public Hello helloApi(@RequestParam(value="name")String name;){ Hello hello = new Hello(name); return hello; }
Java
복사
요청 "localhost:8080/api/hello?name=spring!!!" 응닶결과 { "name" : "spring!!!" }
JSON
복사
@ResponseBody 를 사용
HTTP의 BODY에 문자 내용을 직접 반환
viewResolver 대신 HttpMessageConverter 가 동작합니다.
기본 문자처리는 StringHttpMessageConverter 를 사용하지만 객체가 반환되면 MappingJacson2HttpMessageConverter가 동작합니다.
byte 처리 등등 여러 HttpMessageConverter가 기본으로 등록되어 있습니다.