본문 바로가기
Projects/SNS프로젝트

[개념 정리] 스트링부트 기본 개념

by 젊은오리 2022. 1. 15.
728x90

 

 

  • @Controller : File을 응답하는 컨트롤러(클라이언트가 브라우저면 .html파일)
  • @RestController : Data를 응답하는 컨트롤러(클라이언트가 핸드폰이면 data)

 

1. URL로 파라미터를 받는 방법 2가지

 

1. 쿼리스트링

 

2. 주소변수매핑

 

 

RESTful하게 파라미터를 받기 위해서 @PathVariable을 사용한다.

 

 

2. 요청데이터 타입에 따라 파라미터 형태가 달라진다.

 

스프링부트는 기본적으로 key=value 형태의 x-www-form-urlencoded 타입을 파싱해준다. 따라서 별도의 @RequestBody와 같은 어노테이션 없이 String으로 받을 수 있다.

하지만 text/plain이나 application/json형태의 데이터의 경우는 @RequestBody나 @RequestParam을 사용해서 받는다.

이때, 만약 json을 받아서 {"username":"kang"}을 얻었다고 한다면 우리는 kang만 따로 빼내어 사용하고 싶을 때 불편함이 있다. 물론 @RequestParam을 사용하여 각각의 변수에 맞는 값을 추출할 순 있지만 객체로 바로 저장하고 싶을 때는 (@RequestBody User user) 형태로 User클래스에 바로 저장이 가능하다. <- 이경우 미리 만들어논 User클래스와 getter가 있어야 할 것이다. 

 

Reference : @RequestBody와 @RequestParam의 차이를 잘 설명한 블로그 https://ocblog.tistory.com/49

 

Spring / @RequestBody vs @RequestParam 이해하기

컨트롤러에서 데이터를 인자에 할당하는 대표적인 방법으로는 @RequestBody 와 @RequestParam 이 있다. @Controller public class UserController { @PostMapping("/receive") public String age(@RequestParam St..

ocblog.tistory.com

 

 

응답시에는 스프링부트 내부의 MessageConverter가 자동으로 자바오브젝트를 json으로 변경해서 응답을 해준다. 따라서 아래와 같이 개발자가 User오브젝트형태로 반환을 해주면 화면에는 저절로 json이 출력되는 것을 볼 수 있다.

 

 

 

3. 스프링부트 기본템플릿 엔진?

 

스프링부트는 기본적으로 mustache를 템플릿엔진(자바 코드를 넣어 동적인 응답을 가능하게 한다)으로 사용하기때문에 jsp엔진을 사용하기 위해서는 jsp엔진라이브러리를 추가하고 ViewResolver설정을 해주어야 한다.

pom.xml(라이브러리 추가)
application.yml( ViewResolver설정 )

 

728x90

댓글