[Spring boot] 시작하기2

Ho·2022년 6월 22일
0

Spring Boot 입문

목록 보기
2/7

spring web

spring web 개발은 크게 세가지로 나누어 볼 수 있다

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

1. 정적 컨텐츠

  • resources/static 경로 아래 정적으로 보여줄 html 파일을 만들 수 있다.
  • 스프링부트는 url 뒤에 붙은 이름에 해당하는 정적 파일이 있으면 해당 뷰를 브라우저로 리턴한다.
  • 스프링부트는 해당 이름을 controller에서 먼저 매핑하고 매핑된 컨트롤러가 없을 때 static에서 정적 컨텐츠를 찾아 리턴한다.

2. MVC와 템플릿 엔진

  • 스프링부트는 url 뒤의 이름을 controller의 메소드와 매핑한다.
@Controller
public class HelloController {
    @GetMapping("hello")
    public String hello(Model model) {
        model.addAttribute("data","hello!!!");
        return "hello";
    }

    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello-template";
    }

}
  • controller에 존재하는 @GetMapping 어노테이션이 가지는 이름과 url에 전달된 이름을 매핑하여 일치하는 메소드를 실행한다.

  • 메소드 내에서 비즈니스 로직을 처리하고 뷰로 전달할 데이터를 Model에 담는다.

  • spring 컨테이너의 viewResolver는 리턴한 문자열에 해당하는 뷰를 templates 경로에서 찾는다.

  • 템플릿 엔진은 리턴한 문자열의 이름을 갖는 html파일을 templates 경로에서 찾아 모델안의 데이터를 적용하여 렌더링하고 변환된 html을 웹 브라우저로 리턴한다.

API

@ResponseBody 어노테이션을 사용하면 데이터를 바로 리턴할 수 있다.

@ResponseBody 동작 원리

  1. 실행된 메소드에서 문자열 또는 객체를 리턴한다.
  1. ResponseBody 를 사용하면 viewResolver 대신 HttpMessageConverter가 동작한다.
  1. HttpMessageConverter는 리턴할 데이터를 변환하여 http 응답의 body에 담는다.
    • 3-1. 반환 데이터가 문자열인 경우
      - StringConverter가 문자열을 http응답 데이터에 담아서 리턴
    • 3-2. 반환 데이터가 객체인 경우
      - JsonConverter가 객체의 데이터를 json 형식으로 만들고 http 응답에 넣어서 리턴

기본문자처리: StringHttpMessageConverter
기본객체처리: MappingJackson2HttpMessageConverter

0개의 댓글