# 헬로 스프링 부트
## 미션
---
임무가 주어졌다! 브라우저로 "localhost:8080/"에 접속하여, 아래 결과를 만드시오.
![클라우드스터딩-스프링부트-헬로월드](https://i.imgur.com/0RrWhhP.png)
## 개념
---
#### ⭐️ 웹 서비스의 동작원리
웹 서비스는 클라이언트와 서버. 이들의 요청과 응답으로 동작한다. 어려울 것 없다. 음식 배달이다. 고객(client)이 주문(request)을 하면, 음식점(server)에서 배달(response)이 온다.
![클라우드스터딩-스프링부트-클라이언트-서버-요청과-응답](https://i.imgur.com/BdLBalF.png)
#### ⭐️ HTTP 프로토콜
이러한 요청과 응답은 HTTP(HyperText Transfer Protocol)로 주고 받는다. 우리가 전화로 음식을 주문하는 것 처럼, 브라우저는 HTTP로 웹페이지를 요청한다.
![클라우드스터딩-스프링부트-http-로고](https://i.imgur.com/il1dZoe.png)
HTTP의 대표적 동작은 아래와 같다. ~~자세한 내용은 나중에..!~~
- GET: 데이터 조회 요청
- POST: 데이터 생성 요청
- PUT/PATCH: 데이터 수정 요청
- DELETE: 데이터 삭제 요청
#### ⭐️ URL
그럼, 실제 클라이언트와 서버의 요청과 응답을 확인해보자. 어떻게? 구글 사이트에 접속해보는 거다.
![클라우드스터딩-스프링부트-클라이언트-서버-요청과-응답-예](https://i.imgur.com/x6uHMls.png)
위 페이지가 나오는 과정은 아래와 같다. 해당 과정에서, 브라우저 상단에 적은 주소. 이를 URL이라 한다. ~~URI와 굳이 구분하지 않겠다.~~
1. 사이트 주소를 적는다. (요청 전송)
2. 기다린다. (응답 대기)
3. 구글 페이지가 나온다 (응답 완료)
#### ⭐️ 컨트롤러와 뷰
패스트 푸드점에는 카운터 직원이 있다. 해당 직원은 주문을 받고, 메뉴가 나오면 이를 알려준다. 서버도 이와 같다. 요청과 응답을 전담하는 컨트롤러(controller)가 있다. 이러한 컨트롤러의 응답은, 보통 웹 페이지로 반환된다. 이러한 페이지를, 뷰(view)라 한다. ~~자세한 내용은 실습을 통해 연습해보자..!~~
![클라우드스터딩-스프링부트-컨트롤러와-뷰](https://i.imgur.com/Gq8z0EH.png)
## 튜토리얼
---
#### ⭐️ 컨트롤러
![클라우드스터딩-스프링부트-컨트롤러-생성](https://i.imgur.com/6xBRHLK.png)
1) 패키지 생성
- com.example.myblog.controller
2) 클래스 생성
- HelloController
3) 코드 작성: "controller/HelloController"
```
@Controller // 해당 클래스를, 컨트롤러로 선언!
public class HelloController {
@GetMapping("/") // 다음 url 요청을 받음 -> "/"를 보여줘 -> 아래 메소드를 수행!
public String hello() {
return "helloworld"; // helloworld.mustache 페이지를 반환!
}
}
```
#### ⭐️ 플러그인
4) 설치: "Ctrl + Shift + A" > "plugins" 검색 > Market place에서 "mustache" 검색 및 인스톨
![클라우드스터딩-스프링부트-플러그인-설치-mustach](https://i.imgur.com/NvFlUBn.png)
#### ⭐️ 뷰 만들기
5) 파일 생성:
- resources/templates/helloworld.mustache
6) 코드 작성
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>헬로 월드!</h1>
</body>
</html>
```
#### ⭐️ 결과 확인
7) 브라우저 접속: "localhost:8080/"
![클라우드스터딩-스프링부트-헬로월드](https://i.imgur.com/0RrWhhP.png)
## 훈련하기
---
- url 요청이 "localhost:8080/greetings" 일 때, 아래와 같은 결과를 만드시오.
![클라우드스터딩-스프링부트-컨트롤러-뷰-훈련1](https://i.imgur.com/G2PL9pi.png)
- url 요청이 "localhost:8080/welcome" 일 때, 아래와 같은 결과를 만드시오.
![클라우드스터딩-스프링부트-컨트롤러-뷰-훈련2](https://i.imgur.com/yTiDEJ3.png)
## 면접 준비
---
+ 아래의 키워드를 사용하여, 웹 서비스의 동작 방식을 설명하시오.
- 클라이언트
- 서버
- 요청
- 응답
- http
- url
- 컨트롤러
- 뷰