개발 환경 설정
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 응답을 받게 된다.
'WINK-(Web & App) > Spring Boot 스터디' 카테고리의 다른 글
[Spring Boot 스터디] 한준교 #1 주차 - 섹션 1, 2 "다음부턴 요약을 해볼게..." (0) | 2023.07.14 |
---|---|
[Spring Boot 스터디] 황현진 #1 주차 - 섹션 1, 2 "👋 🌸" (1) | 2023.07.14 |
[Spring Boot 스터디] 이정욱 #1주차 - 섹션 1, 2 ".... . .-.. .-.. ---" (0) | 2023.07.13 |
[Spring Boot 스터디] 류건 #1주차 - 섹션 1, 2 "안녕, 봄" (0) | 2023.07.13 |
[Spring Boot 스터디] 목진협 #1 주차 - 섹션 1, 2 "Hello Spring" (0) | 2023.07.13 |