HTTP์™€ MVC

๋ฐ•์šฐํ˜„ (Joshua)ยท2023๋…„ 4์›” 16์ผ

ํ•ญํ•ด99_TIL

๋ชฉ๋ก ๋ณด๊ธฐ
12/20

๐Ÿ“‹ HTTP๋ž€?

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.com 

2. POST
POST ๋ฉ”์„œ๋“œ๋Š” ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์ถœํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.
์ฃผ๋กœ ์›น ํผ(form) ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ Body ์— ๋‹ด์•„์„œ ์„œ๋ฒ„๋กœ ์ „์†กํ•œ๋‹ค.

POST /submit-form HTTP/1.1
Host: www.robbie.com
Content-Type: application/x-www-form-urlencoded
username=robbie&password=4351

3. 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.com

5. 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๋ž€?

MVC ( Model-View-Controller )๋ž€ ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ์จ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋“ค์„ Model, View, Controller๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฐ๊ฐ์˜ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•œ๋‹ค.

  • Model : ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๋™ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • View : ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ด๋‹นํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ํ™”๋ฉด๊ณผ ๋ฒ„ํŠผ, ํผ ๋“ฑ์„ ๋””์ž์ธํ•˜๊ณ  ๊ตฌํ˜„ํ•œ๋‹ค.
  • Controller : ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›์•„ Model์— ์ „๋‹ฌํ•˜๊ณ , Model์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ View๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ์จ Model๊ณผ View ์‚ฌ์ด์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์กฐ์ •ํ•˜๊ณ  ์ œ์–ดํ•œ๋‹ค.
  • MVC ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋“ค์„ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ณ , ๊ฐœ๋ฐœ์ž๋“ค ๊ฐ„์˜ ํ˜‘์—…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•œ๋‹ค.

๐Ÿ“ 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

profile
๋งค์ผ ๋งค์ผ ์„ฑ์žฅํ•˜์ž

0๊ฐœ์˜ ๋Œ“๊ธ€