TIL/JAVA

[Spring] MVC 와 템플릿 엔진, API

아람2 2024. 12. 30. 20:01
반응형

듣고 있는 강의 - 김영한의 Spring 입문 

 

MVC - Model View Controller

🐣 소프트웨어 디자인 패턴 🐣

View - 화면과 관련된 일만 처리

Model - 비즈니스 로직과 서버 데이터 관련 처리를 담당 

Controller - 사용자 요청을 받아서 Model 과 View 를 연결 

 

Thymeleaf 의 장점 

html 을 작성하고 그 파일을 서버 없이 열 수 있다 

서버 없이 열 때는 hello! empty 부분이 출력되고 

서버에서 열 때는 그 앞에 부분이 출력된다 

아래 사진에서 Chrome icon 을 선택하면 서버 없이 열린다 

View 

ViewResolver 를 사용한다  

🐣 ViewRosolver 는 Contorller 에서 반환한 View 이름을 기반으로 실제 View 객체에 매핑하는 역할을 한다 🐣

 

 

API 

@ResponseBody 를 사용하여 ViewResolver 를 대체한다 

대신 HTTP 의 문자 내용을 직접 반환한다 

🐣 @ResponseBody 는 ViewResolver 를 사용하지 않고,

데이터를 HTTP 응답 본문 (Body) 으로 직접 반환할 때 사용한다 🐣

    @GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name, Model model) {
        return "hello " + name;
    }

찐 API 

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

🐣 객체의 Getter 메서드를 호출하여 프로퍼티 값을 추출하고, 이를 JSON 형식으로 변환한다 

* Getter 와 Setter 는 JavaBean 표준 방식이며 (Annotation 참고), 프로퍼티 접근 방식이라고도 한다 🐣

    @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name) {
        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 사용 원리 

HTTP 의 BODY 에 문자 내용을 직접 반환 

ViewResolver 대신에 HttpMessageConverter 가 동작 🐣 HTTP 요청 및 응답을 변환하는 역할을 한다 🐣

기본 문자 처리 - StringHttpMessageConverter

기본 객체 처리 - MappingJackson2HttpMessageConverter 

byte 처리 등등 기타 여러 HttpMessageConverter 가 기본으로 등록되어 있음 

 

🐣 JSON 객체를 JSON 으로 바꿔주는 유명한 라이브러리 

MappingJackson2 (2 는 Ver2) 

Gson (Google 에서 만들었다) 🐣 

 

반응형

'TIL > JAVA' 카테고리의 다른 글

[Spring] 스프링 빈과 의존관계  (0) 2025.01.01
[Spring] 회원 관리 예제 - 백엔드 개발  (0) 2024.12.31
[JAVA] Map Interface  (0) 2024.12.29
[JAVA] 어노테이션 사용  (0) 2024.12.26
[JAVA] 접근 제어자  (1) 2024.12.25