본문 바로가기

WINK-(Web & App)/Spring Boot 스터디

[Spring Boot 스터디] 이지원 #1 주차 - 섹션 1, 2 "Hello Spring"

반응형

개발 환경 설정

JDK 20

IntelliJ - Spring Boot

 

 

 

 

 

 

 

 

 

html 렌더링 방법

Client의 html을 렌더링하는 방법에는 대표적으로 아래의 3가지 방법이 있다.

 

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

 

 

 

 

 

정적 컨텐츠

static 파일들을 그대로 제공한다. CDN의 역할과 비슷하다. 특별한 작업 없이 단순히 파일을 전송하고 제공하는 역할이다. 정적 파일을 호스팅하는 기능이다.

src  -> main -> resources -> static 폴더 내부에 정적 파일들을 위치시킨다.

Spring 서버가 자동으로 폴더 내부의 파일들을 정적 파일로 제공한다.

 

예를 들어 static 폴더 내부에 index.html이라는 다음 파일을 위치시킨다면 서버를 접속할때 메인화면이 아래 파일로 변경된다.

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>

 

 

 

 

 

MVC와 템플릿 엔진

미리 작성된 html 템플릿에 서버에서 제공되는 일부 데이터를 이용하여 템플릿을 렌더링한 후 그 결과물을 반환한다.

 

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

hello/hello에 접속할 시 템플릿 폴더 내부의 hello.html을 찾아 data 변수를 제공된 "hello!!문자열로 치환한다.

 

helloMvc/hello-mvc에 접속할 시 템플릿 폴더 내부의 hello-template.html을 찾아 name 변수를 queryParams로 제공된 name 데이터로 치환한다.

 

 

 

 

 

API

html이 아닌 JSON 형식의 데이터를 반환한다.
@ResponseBody를 사용하여 HTTP Response의 Body에 직접 데이터를 삽입한다.

 

@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
    return "hello " + name;
}
@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;
    }
}

helloString/hello-string에 접속할 시 "hello" 문자열과 queryParams의 name 변수를 합쳐 새로운 문자열을 만든 후 그 문자열을 그대로 HTTP Response의 body에 기록하여 응답한다.

Client는 html이 아닌 text 응답을 받게 된다.

 

helloApi/hello-api에 접속할 시 hello라는 Hello 타입 객체를 생성한 후 그 객체의 name 필드에 queryParams의 name 변수를 할당하고 그 객체를 JSON 형식으로 변환하여 HTTP Response의 body에 기록한다.

Client는 html이 아닌 json 응답을 받게 된다.

반응형