코딩과 결혼합니다

스프링 입문 : 정적 컨텐츠, MVC, API 본문

2세/Spring

스프링 입문 : 정적 컨텐츠, MVC, API

코딩러버 2024. 2. 4. 00:41
728x90

정적 컨텐츠

단순히 파일을 클라이언트에 전송하는 방식. 
정적 컨텐츠의 경우에는 스프링 컨테이너를 거치지 않고, 바로 해당되는 HTML 파일을 클라이언트에 전송한다.

 

html 파일이 그대로 클라이언트에 전송되었다.

 

MVC와 템플릿 엔진

웹 브라우저에서 특정 페이지를 요청하면 톰캣 서버는 관련 컨트롤러를 스프링 컨테이너에서 찾는다. 
컨트롤러는 요청에 필요한 데이터를 모델에서 가져오거나, 데이터를 업데이트 등을 담당하고, 타임리프를 이용해 동적인 HTML 문서를 생성하여 뷰로 전달한다.

 

name이라는 데이터를 바로 넣어서 보내는 방법

    @GetMapping("hello")
    public String hello(Model model) {
        model.addAttribute("data", "이채원");
        return "hello";
    }

 

@RequestParam  형식으로 동적으로 데이터를 넣어 보내는 방법
    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("name") String name, Model model){
        model.addAttribute("name", name);
        return "hello-template";
    }
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>

 

 

hello-mvc 경로로 GET 요청이 들어오면 helloMvc 메서드가 호출된다.

이 메서드는 name이라는 요청 매개변수를 받고, Model 객체를 매개변수로 받는다.

model.addAttribute 로 name이라는 데이터를 모델에 추가하고, 해당 데이터는 타임리프 템플릿에서 사용할 수 있게 된다.

name의 변수값에 따라 "hello {name}" 형태의 문구가 생성되어 웹브라우저로 전달된다.

 

API

주로 객체를 반환하는 방식으로 동작한다. 이때 HttpMessageeConverter를 사용하여 객체를 적절한 방식으로 변환하고, 해당 변환된 데이터를 HTTP Response Body에 직접 넣어 클라이언트에 반환한다.

이러한 방식에서는 별도의 뷰가 필요하지 않으며, 일반적으로 JSON이나 XML 형식과 같은 데이터 형식으로 변환된 객체가 클라이언트에 전달된다. 
 
@ResponseBody 로 응답 바디부에 직접 내용을 넣어주기

 

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

 

 

뷰 리졸버를 사용하지 않고 대신에 HTTP의 BODY에 문자 내용을 직접 반환한다.

 

적은 문자가 그대로 들어간다.

 

 

@ResponseBody 로 객체를 반환하기

    @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;
        }
    }

 

Json (키 : 값) 의 형태로 데이터가 반환되었다.

'2세 > Spring' 카테고리의 다른 글

spring 유용한 단축키 모음  (0) 2024.02.05
null을 처리하는 방법  (0) 2024.02.04
스프링 입문 : 라이브러리 살펴보기  (0) 2024.02.03
[Kotlin] 프로젝트 생성과 환경설정  (1) 2024.01.20
[Kotlin] 개념과 기초 문법  (0) 2024.01.20