티스토리 뷰

반응형
  • 정적 컨텐츠(정적 파일 딱)
  • MVC 와 템플릿 엔진(서버 가공 후 딱)
  • API(json 던지기)

정적 컨텐츠

정적 컨텐츠 렌더링

정적 컨텐츠 이미지 렌더링 원리

MVC와 템플릿 엔진

  • MVC: Model, View, Controller

  • Controller ㅣ 비즈니스 로직,서버 처리

    @Controller
    public class HelloController {
         @GetMapping("hello-mvc")
         public String helloMvc(@RequestParam("name") String name, Model model) {
             model.addAttribute("name", name);
             return "hello-template";
         }
    }
  • View | 화면을 그리는데 집중

    • resources/template/hello-template.html
    <html xmlns:th="http://www.thymeleaf.org">
    <body>
    <p th:text="'hello ' + ${name}">hello! empty</p>
    </body>
    </html>
  • 실행 http://localhost:8080/hello-mvc?name=spring

  • MVC, 템플릿 엔진 이미지

MVC, 템플릿 엔진 이미지

API

@ResponseBody 문자 반환

@Controller
public class HelloController {
     @GetMapping("hello-string")
     @ResponseBody // http 응답 body 에 이 리턴값을 직접 넣어주겠다.
     public String helloString(@RequestParam("name") String name) {
         return "hello " + name;
     }
}
  • @ResponseBody를 사용하면 뷰리졸버(viewResolver)를 사용하지 않음.(=http 응답 body 에 이 리턴값을 직접 넣어주겠다.)
  • 대신에 HTTP 의 BODY 에 문자 내용을 직접 반환(HTML BODY TAG 를 말하는 것이 아님.)

실행

http://localhost:8080/hello-string?name=spring

  • Parameter 정보 보기 단축키 : 윈도우 ^+p = 맥 command+p
  • 자동 ;: ctrl+shift+Enter

@ResponseBody 객체 반환

  @GetMapping("hello-api")
  @ResponseBody
  public Hello helloApi(@RequestParam("name") String name, Model model) {
    Hello hello = new Hello();
    hello.setName(name);
    return hello;
  }

  static class Hello {
    private String name;

    public String getName() {
      return name;
    }

    public void setName(String name) {
      this.name = name;
    }
  }

@ResponseBody 를 사용하고, 객체를 반환하면 객체가 JSON으로 변환된다.

실행

http://localhost:8080/hello-api?name=spring

@ResponseBody 사용 원리

  • @ResponseBody 를 사용
    • HTTP 의 BODY 에 문자 내용을 직접 반환
    • viewResolver대신에 HttpMessageConvertor가 동작한다.
    • 기본 문자 처리: StringHttpMessageConvertor
    • 기본 객체 처리: MappingJackson2HttpMessageConvertor
    • byte 처리 등등 기타 여러 HttpMessageConverter 가 기본으로 등록되어있다.

참고: 클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입 정보 둘을 조합하여, HttpMessageConverter가 선책된다.

출처

인프런 스프링 입문 김영한

반응형

'스프링, 자바' 카테고리의 다른 글

jsp 와 쿠키  (0) 2021.01.19
jsp 소스 코드의 동작 과정  (0) 2021.01.19
프로젝트 환경 설정  (0) 2021.01.19
[intelly j ] spring 초기 세팅 모음집  (0) 2021.01.18
자바의 스레드  (0) 2021.01.16
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함