HTTP ( HyperText Transfer Protocol ) ์ธํฐ๋ท์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ํต์ ๊ท์ฝ์ด๋ค.
๐ HTTP ๊ตฌ์กฐ
- HTTP ์์ฒญ ๊ตฌ์กฐ
1. Start Line
Start Line์ ์์ฒญ ๋ฉ์๋, ์์ฒญ URL, HTTP ๋ฒ์ ์ ๋ณด๋ก ๊ตฌ์ฑ๋๋ค
GET /index.html HTTP/1.1
2. Headers
Headers ๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์ ๋ฌํ๋ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ ์์ฒญ ๋ฉ์์ง์ ์์ฑ์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
Host: www.robbie.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Accept-Language: en-US,en;q=0.9,ko;q=0.8
3. Body
Body ๋ HTTP ์์ฒญ๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋๋ค. ํ์ง๋ง ํ์ ์์๋ ์๋๋ฉฐ, ์์ฒญ์ ๋ฐ๋ผ ์ ์ก๋์ง ์์ ์๋ ์๋ค.
GET ์์ฒญ์ Body ๋ฅผ ํฌํจํ์ง ์๋๋ค.- HTTP ์๋ต ๊ตฌ์กฐ
1. Start Line
Start Line ์ HTTP ๋ฒ์ , ์๋ต ์ํ ์ฝ๋, ์ํ ์ฝ๋์ ๋ํ ์ค๋ช ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
HTTP/1.1 200 OK
2. Headers
Headers ๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ ์๋ต ๋ฉ์์ง์ ์์ฑ์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
Content-Type: text/html; charset=utf-8 Content-Length: 1234
3. Body
Body ๋ HTTP ์๋ต๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋๋ค. ๋ง์ฝ HTTP ์๋ต ๋ฉ์์ง๊ฐ HTML ํ์ด์ง๋ผ๋ฉด, Body ๋ HTML ์ฝ๋๋ฅผ ๋ด๊ฒ ๋ฉ๋๋ค.
๐HTTP์ ํฌํธ
- HTTP๋ 80๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ฉฐ, HTTPS(SSL/TLS)๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ 443๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋์ HTTP ์์ฒญ์ ๋ชฉ์ ์ง ์ฃผ์(URL) ๋ค์ ํฌํธ ๋ฒํธ๋ฅผ ์๋ตํ๊ณ ์น ์๋ฒ์ ์ ์ํ ๋๋ ์๋์ผ๋ก 80๋ฒ ํฌํธ๊ฐ ์ฌ์ฉ๋๋ค.
- HTTP์ HTTPS์ ์ฐจ์ด์ ์ HTTPS๊ฐ ์ํธํ๋ ํต์ ์ฑ๋์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ด๋ค.
- HTTPS๋ ๋ฐ์ดํฐ์ ์์ ์ฑ์ ๋ณด์ฅํด์ค๋ค.
๐HTTP Method
- HTTP Method๋ HTTP ํ๋กํ ์ฝ์ ์ด์ฉํ์ฌ ์๋ฒ์๊ฒ ์์ฒญํ๋ ๋ฉ์๋ / ๊ธฐ๋ฅ์ ๋ปํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ์์ฒญํ๋ ๋ฐ์ดํฐ์ ์ข ๋ฅ๋ ๋ชฉ์ ์ ๋ฐ๋ผ ์๋ง์ ๋ฉ์๋๋ฅผ ์ ํํ์ฌ ์๋ฒ์๊ฒ ์์ฒญ์ ๋ณด๋ผ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ HTTP Method๋ ํฌ๊ฒ ๋ค์ฏ ๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
1. Get
GET ๋ฉ์๋๋ ์๋ฒ๋ก๋ถํฐ ํน์ ๋ฆฌ์์ค(HTML ํ์ผ, ์ด๋ฏธ์ง, ๋์์ ๋ฑ)๋ฅผ ์์ฒญํ ๋ ์ฌ์ฉ๋๋ค.
์ด ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ ์์ฒญํ ๋ฆฌ์์ค๋ฅผ ์๋ต์ผ๋ก ๋ฐํํด์ค๋ค.GET /index.html HTTP/1.1 Host: www.robbie.com2. POST
POST ๋ฉ์๋๋ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ถํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
์ฃผ๋ก ์น ํผ(form) ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ถํ ๋ ์ฌ์ฉํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ Body ์ ๋ด์์ ์๋ฒ๋ก ์ ์กํ๋ค.POST /submit-form HTTP/1.1 Host: www.robbie.com Content-Type: application/x-www-form-urlencoded username=robbie&password=43513. PUT
PUT ๋ฉ์๋๋ ์๋ฒ์ ์๋ก์ด ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฑฐ๋, ๊ธฐ์กด์ ๋ฆฌ์์ค๋ฅผ ๊ฐฑ์ ํ ๋ ์ฌ์ฉ๋๋ค.
์ด ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ ์์ฒญํ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ๊ฐฑ์ ํด์ค๋ค.PUT /new-resource HTTP/1.1 Host: www.robbie.com Content-Type: text/plain This is a robbie's Lecture.* Post ๋ฉ์๋์ Put ๋ฉ์๋์ ์ฐจ์ด๋ ์ฝ๊ฒ ์ค๋ช ํ์๋ฉด
- POST์ ๊ฒฝ์ฐ ์์ฒญ URI์ /Collection URI๊น์ง๋ง ํฌํจ์ด ๋์ง๋ง,
- PUT์ ๊ฒฝ์ฐ Collection URI/{Resource Identifier}๊ฐ ํฌํจ๋์ด์ผ ํ๋ค.
๋ ์์ธํ ์ค๋ช ์ ์ถ์ฒ ํ์ธํ๊ธฐ!
4. DELETE
DELETE ๋ฉ์๋๋ ์๋ฒ์ ์กด์ฌํ๋ ํน์ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉ๋๋ค.
์ด ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ ์์ฒญํ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ๋ค.DELETE /delete-resource HTTP/1.1 Host: www.robbie.com5. PATCH
PATCH ๋ฉ์๋๋ ์๋ฒ์ ์กด์ฌํ๋ ๋ฆฌ์์ค์ ์ผ๋ถ๋ฅผ ์์ ํ ๋ ์ฌ์ฉ๋๋ค.
์ด ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ ์์ฒญํ ๋ฆฌ์์ค์ ์ผ๋ถ๋ฅผ ์์ ํฉ๋๋ค.PATCH /update-resource HTTP/1.1 Host: www.robbie.com Content-Type: application/json [ { "username": "robbie", "email": "abcde@gmail.com", "phone": "010-0000-1111" }, { "username": "solletia", "email": "qwet@gmail.com", "phone": "010-3333-2222" }, ]* Put ๋ฉ์๋์ Patch ๋ฉ์๋์ ์ฐจ์ด๋ ์ฝ๊ฒ ์ค๋ช ํ์๋ฉด
- POST์ ๊ฒฝ์ฐ ์์ฒญ URI์ /Collection URI๊น์ง๋ง ํฌํจ์ด ๋์ง๋ง,
- PUT์ ๊ฒฝ์ฐ Collection URI/{Resource Identifier}๊ฐ ํฌํจ๋์ด์ผ ํ๋ค.
๋ ์์ธํ ์ค๋ช ์ ์ถ์ฒ ํ์ธํ๊ธฐ!
๐ HTTP ์ํ ์ฝ๋ (HTTP Status Code)
- HTTP ์ํ ์ฝ๋๋ 3์๋ฆฌ ์ซ์๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ๋ ๊ณผ์ ์์ ๋ฐ์ํ ์ ์๋ ์ํฉ์ ์ ๋ฆฌํ ๊ฒ์ด๋ค. ์ฒซ ๋ฒ์งธ ์๋ฆฌ ์ซ์๋ ์ํ ์ฝ๋์ ๋ถ๋ฅ๋ฅผ ๋ํ๋ด๋ ์ฉ๋๋ก ์ฌ์ฉ๋๋ฉฐ, ๋๋จธ์ง ๋ ์๋ฆฌ๋ ์ธ๋ถ์ ์ธ ์ ๋ณด๋ฅผ ๋ํ๋ธ๋ค.
- HTTP ์ํ ์ฝ๋๋ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ์ด 5๊ฐ์ ๋ฒ์ฃผ๋ก ๋๋ ์ ์๋ค.
1. 1xx (Informational)
1xx ์ํ ์ฝ๋๋ ์์ฒญ์ด ์์ ๋์์ผ๋ฉฐ ์ฒ๋ฆฌ๊ฐ ๊ณ์๋๊ณ ์์์ ๋ํ๋ธ๋ค.
์ฃผ๋ก ์น ๋ธ๋ผ์ฐ์ ์ ๊ฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์์ ์ฐ๊ฒฐ ์ํ๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
2. 2xx (Successful)
2xx ์ํ ์ฝ๋๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ ๋์์์ ๋ํ๋ธ๋ค.
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ํ ์ฝ๋๋ 200์ผ๋ก์จ ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ ๋์์ผ๋ฉฐ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฐ์ดํฐ๊ฐ ์๋ฒ์์ ์ ๊ณต๋จ์ ์๋ฏธํ๋ค.
3. 3xx (Redirection)
3xx ์ํ ์ฝ๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์ถ๊ฐ์ ์ธ ์กฐ์น๋ฅผ ์ทจํด์ผ ํจ์ ๋ํ๋ด๊ณ ์ฃผ๋ก ํ์ด์ง ์ด๋, ๋ฆฌ๋ค์ด๋ ์ ๋ฑ์ ์ฌ์ฉ๋๋ค.
4. 4xx (Client Error)
4xx ์ํ ์ฝ๋๋ ํด๋ผ์ด์ธํธ์ ์ค๋ฅ๊ฐ ์์์ ๋ํ๋ด๊ณ ์ฃผ๋ก ํด๋ผ์ด์ธํธ์ ์๋ชป๋ ์์ฒญ, ์ธ์ฆ ์ค๋ฅ ๋ฑ์ ์ฌ์ฉ๋๋ค.
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ํ ์ฝ๋๋ 404๋ก์จ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ํ์ด์ง๋ ๋ฆฌ์์ค๋ฅผ ์๋ฒ์์ ์ฐพ์ ์ ์์์ ์๋ฏธํ๋ค.
5. 5xx (Server Error)
5xx ์ํ ์ฝ๋๋ ์๋ฒ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์์ ๋ํ๋ด๊ณ ์ฃผ๋ก ์๋ฒ์ ์ค๋ฅ, ์๋ฒ ๊ณผ๋ถํ ๋ฑ์ ์ฌ์ฉ๋๋ค.
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ํ ์ฝ๋๋ 500์ผ๋ก์จ ์๋ฒ ๋ด๋ถ ์ค๋ฅ๊ฐ ๋ฐ์ํจ์ ์๋ฏธํ๋ค.
MVC ( Model-View-Controller )๋ ์ํํธ์จ์ด ๋์์ธ ํจํด ์ค ํ๋๋ก์จ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ฑํ๋ ์์๋ค์ Model, View, Controller๋ก ๊ตฌ๋ถํ์ฌ ๊ฐ๊ฐ์ ์ญํ ์ ๋ถ๋ฆฌํ๋ค.
๐ Spring์ MVC
Spring ํ๋ ์์ํฌ์ MVC๋ฅผ ๊ณต๋ถํ๊ธฐ ์ํด์๋ Servlet๊ณผ Tomcat์ ์์์ผํ๋ค.
Servlet์ด๋?
- ๊ฐ๋จํ๊ฒ ๋งํ์๋ฉด, Servlet์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ์์ฒญ์ ๋ฐ๋ฅธ ์ ์ ํ ๋ฐ์ดํฐ๋ฅผ Model์์ ๊ฐ์ ธ์์ View์๊ฒ ์ ๋ฌํ๋ ์ญํ ์ ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ปดํผ๋ํธ์ด๋ค.
- Servlet์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋์ ์ธ ์ปจํ ์ธ ๋ฅผ ์์ฑํ๊ฑฐ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฑ์ ์์ ์ ์ํํ ์ ์๋ค.
- Servlet์ ์ผ๋ฐ์ ์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์์ ์คํ๋๋ฉฐ, ํ ํ๋ฆฟ ์์ง๊ณผ ํจ๊ป ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ฃผ๋ก ์ฌ์ฉ๋๋ ํ ํ๋ฆฟ ์์ง์ JSP,Thymeleaf๊ฐ ์๋ค.
์์
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ์์ฒญ์ ์๋ฒ์ ๋ณด๋ด๋ฉด Servlet์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ์ ๋ ฅํ ID์ Password๋ฅผ Model์์ ํ์ธํ ํ, ์ธ์ฆ์ด ๋๋ฉด ๋ก๊ทธ์ธ ์ฑ๊ณต ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค ์ ์๋ค. ์ด ์ฒ๋ฆฌ ๊ณผ์ ์์ Servlet์ Controller ์ญํ ์ ์ํํ๊ณ ์๋ค. ์ด๋ ๊ฒ MVC ํจํด์ ์ด์ฉํ๋ฉด Servlet์ ์ด์ฉํ์ฌ Controller ์ญํ ์ ์ํํ๊ณ , ํ ํ๋ฆฟ ์์ง์ ์ด์ฉํ์ฌ View ์ญํ ์ ์ํํ ์ ์์ต๋๋ค.Tomcat์ด๋?
- Tomcat์ Servlet ์ปจํ ์ด๋์ด๊ณ Servlet์ ์คํํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ๊ฒฝ์ ์ ๊ณตํ๋ค. Tomcat์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์์ ์ ์ ํ Servlet์ ์คํํ๊ณ , Servlet์์ ์์ฑ๋ ์๋ต์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ค.
- ํด๋ผ์ด์ธํธ์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด, Tomcat์ HTTP ์๋ฒ์์ ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ , ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์ ํ Servlet์ ์ฐพ๋๋ค. ๊ทธ ํ, Servlet์ด ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์์ฑํ ์๋ต์ ๋ค์ HTTP ์๋ฒ๋ก ์ ์กํ๋ค. HTTP ์๋ฒ๋ ์๋ต์ ํด๋ผ์ด์ธํธ๋ก ์ ์กํ๊ณ , ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ค.
- Tomcat์ Servlet์ ์คํํ ๋, JVM์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ Servlet์ ๋ก๋ํฉ๋๋ค. JVM์ Servlet ์ฝ๋๋ฅผ ์คํํ๊ณ , Servlet์ด ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์์ฑํ ์๋ต์ Tomcat์๊ฒ ๋ฐํํฉ๋๋ค.
- ๋ฐ๋ผ์, Servlet์ ์ฌ์ฉํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ ค๋ฉด Tomcat๊ณผ ๊ฐ์ Servlet ์ปจํ ์ด๋๊ฐ ํ์ํฉ๋๋ค.
์ถ์ฒ:
TOMCAT ๊ด๋ จ
Servlet ๊ด๋ จ
"๋ด์ ์์ ์ข์๋ฐ Spring๋ ์ข์์ก์ผ๋ฉด ์ข๊ฒ ๋ค." ๐
'23.04.10 - '23.04.15