# Spring MVC / ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
Study Repository

Spring MVC / ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

by rlaehddnd0422

์›น ์„œ๋ฒ„, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(WAS)

์›น ์„œ๋ฒ„

  • HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘
  • ์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต, ๊ธฐํƒ€ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ
  • ์ •์  ๋ฆฌ์†Œ์Šค : ์ •์  HTML, CSS, JS ์ด๋ฏธ์ง€, ์˜์ƒ ๋“ฑ..

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(WAS)

  • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ HTTP ๊ธฐ๋ฐ˜ ๋™์ž‘
  • ์›น ์„œ๋ฒ„ ๊ธฐ๋Šฅ ํฌํ•จ (์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต)
  • ์ฃผ๋กœ ํ”„๋กœ๊ทธ๋žจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ์ˆ˜ํ–‰
  • ๋™์  HTML, HTTP API(json) ์ œ๊ณต
  • ์„œ๋ธ”๋ฆฟ, JSP, ์Šคํ”„๋ง MVC ์ œ๊ณต 
  • ex) ํ†ฐ์บฃ ์„œ๋ฒ„, Jetty, Underflow

์›น ์„œ๋ฒ„์™€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์˜ ์ฐจ์ด

์›น ์„œ๋ฒ„ (์ •์ ๋ฆฌ์†Œ์Šค) ์ œ๊ณต, WAS๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ์‹คํ–‰(์ •์  ๋ฆฌ์†Œ์Šค ๋˜ํ•œ ์ œ๊ณตํ•˜์ง€๋งŒ)์ด ์ฃผ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.

์„œ๋ธ”๋ฆฟ ์—†์ด ์ž๋ฐ”์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๋„ ์žˆ์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ž๋ฐ”๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉด WAS๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

WAS์™€ Web server๋ฅผ ๋‚˜๋ˆˆ ์ด์œ 

WAS๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋ฉด ์„œ๋ฒ„ ๊ณผ๋ถ€ํ•˜ ์šฐ๋ ค๊ฐ€ ์žˆ๊ณ , ์ •์  ๋ฆฌ์†Œ์Šค ๋•Œ๋ฌธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ์ˆ˜ํ–‰์ด ์–ด๋ ค์›Œ์ง€๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์–ด์„œ ์ •์  ๋ฆฌ์†Œ์Šค๋Š” ์›น์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ณ  WAS๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง๊ฐ™์€ ๋™์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋„๋ก ๋ถ„๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.


์„œ๋ธ”๋ฆฟ

๋™์  ์›นํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ .

์š”์ฒญ(Request) ๊ณผ ์‘๋‹ต(Response)์˜ ํ๋ฆ„์„ ๊ฐ„๋‹จํ•œ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ๋งŒ์œผ๋กœ ์ฒด๊ณ„์ ์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ .

 

ํŠน์ง• 

  1. ํด๋ผ์ด์–ธํŠธ์˜ request์— ๋Œ€ํ•ด ๋™์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  2. java์˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

 

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ

 

ํ†ฐ์บฃ์ฒ˜๋Ÿผ ์„œ๋ธ”๋ฆฟ์„ ์ง€์›ํ•˜๋Š” WAS๋ฅผ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • ์„œ๋ธ”๋ฆฟ์„ ๋‹ด๊ณ  ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์ปจ๋„ค์ด๋„ˆ. 
  • ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” servlet ํด๋ž˜์Šค์˜ ๊ทœ์น™์— ๋งž๊ฒŒ ์„œ๋ธ”๋ฆฟ์„ ๊ด€๋ฆฌํ•ด์ค๋‹ˆ๋‹ค.
  • ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋Š” ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๊ด€๋ฆฌ
  • ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋”ฉ ์ง€์›
  • ํด๋ผ์ด์–ธํŠธ โžฃ ์„œ๋ฒ„ ์š”์ฒญ ์„ ํ•˜๋ฉด ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” HttpServletRequest, HttpServletResponse ๋‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ GET,POST ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋™์ ์ธ ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•ด ์‘๋‹ต์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

 


๋™์‹œ ์š”์ฒญ - ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ

์“ฐ๋ ˆ๋“œ

> ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰

> ๋‹จ์ผ์š”์ฒญ ํ•˜๋‚˜๋Š” ์“ฐ๋ ˆ๋“œ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉ

 

์—ฌ๋Ÿฌ ๊ณณ์—์„œ ๋™์‹œ์— ์š”์ฒญ์ด ์˜จ๋‹ค๋ฉด?

1. ์š”์ฒญ๋งˆ๋‹ค ์“ฐ๋ ˆ๋“œ ์ƒ์„ฑ

์žฅ์ 

/ ๋™์‹œ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

/ ๋ฆฌ์†Œ์Šค(CPU, ๋ฉ”๋ชจ๋ฆฌ)๊ฐ€ ํ—ˆ์šฉํ•  ๋•Œ ๊นŒ์ง€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

/ ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ง€์—ฐ๋˜์–ด๋„, ๋‚˜๋จธ์ง€ ์“ฐ๋ ˆ๋“œ๋Š” ์ •์ƒ ๋™์ž‘

๋‹จ์ 

/ ์“ฐ๋ ˆ๋“œ ์ƒ์„ฑ๋น„์šฉ์€ ๋น„์‹ธ๊ธฐ ๋•Œ๋ฌธ์—, ๊ณ ๊ฐ์˜ ์š”์ฒญ์ด ์˜ฌ ๋•Œ๋งˆ๋‹ค ์“ฐ๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ์‘๋‹ต ์†๋„๊ฐ€ ๋Šฆ์–ด์ง

/ ๊ณ ๊ฐ ์š”์ฒญ์ด ๋„ˆ๋ฌด ๋งŽ์ด ์˜ค๋ฉด, ์“ฐ๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ์— CPU, ๋ฉ”๋ชจ๋ฆฌ ์ž„๊ณ„์ ์„ ๋„˜์–ด ์„œ๋ฒ„๊ฐ€ ์ฃฝ์„ ์ˆ˜ ์žˆ๋‹ค.

 

2. ์“ฐ๋ ˆ๋“œ ํ’€ ์‚ฌ์šฉ

ํ•„์š”ํ•œ ์“ฐ๋ ˆ๋“œ๋ฅผ ์“ฐ๋ ˆ๋“œ ํ’€์— ๋ณด๊ด€ํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์“ฐ๋ ˆ๋“œ ํ’€์— ์ƒ์„ฑ ๊ฐ€๋Šฅํ•œ ์“ฐ๋ ˆ๋“œ์˜ ์ตœ๋Œ€์น˜๋ฅผ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ํ†ฐ์บฃ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 200๊ฐœ๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์“ฐ๋ ˆ๋“œ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์ด๋ฏธ ์ƒ์„ฑ ๋˜์–ด ์žˆ๋Š” ์“ฐ๋ ˆ๋“œ๋ฅผ ์“ฐ๋ ˆ๋“œ ํ’€์—์„œ ๊บผ๋‚ด์„œ ์“ฐ๊ณ , ์‚ฌ์šฉ ์ข…๋ฃŒ์‹œ ๋ฐ˜๋‚ฉ.

์ตœ๋Œ€ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉ์ค‘์ด์–ด์„œ ์“ฐ๋ ˆ๋“œํ’€์— ์“ฐ๋ ˆ๋“œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์š”์ฒญ์€ ๊ฑฐ์ ˆํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ˆซ์ž๋งŒํผ๋งŒ ๋Œ€๊ธฐํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์žฅ์ 

1. ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ์“ฐ๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ข…๋ฃŒํ•˜๋Š” ๋น„์šฉ(CPU)์ด ์ ˆ์•ฝ๋˜๊ณ , ์‘๋‹ต ์‹œ๊ฐ„์ด ๋น ๋ฅด๋‹ค.

2. ์ƒ์„ฑ ๊ฐ€๋Šฅํ•œ ์“ฐ๋ ˆ๋“œ์˜ ์ตœ๋Œ€์น˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋„ˆ๋ฌด ๋งŽ์€ ์š”์ฒญ์ด ๋“ค์–ด์™€๋„ ๊ธฐ์กด ์š”์ฒญ์€ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

WAS์˜ ์ฃผ์š” ํŠœ๋‹ํฌ์ธํŠธ๋Š” ์ตœ๋Œ€ ์“ฐ๋ ˆ๋“œ ์ˆ˜์ธ๋ฐ ์ตœ๋Œ€ ์“ฐ๋ ˆ๋“œ ์ˆ˜๋ฅผ ๋„ˆ๋ฌด ๋‚ฎ๊ฒŒ ์„ค์ •ํ•˜๋ฉด ๋™์‹œ ์š”์ฒญ์‹œ ํด๋ผ์ด์–ธํŠธ ์‘๋‹ต์ง€์—ฐ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ , ๋„ˆ๋ฌด ๋†’๊ฒŒ ์„ค์ • ์‹œ ๋™์‹œ ์š”์ฒญ์ด ๋งŽ์œผ๋ฉด CPU, ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค ์ž„๊ณ„์  ์ดˆ๊ณผ๋กœ ์„œ๋ฒ„๊ฐ€ ์ฃฝ์„ ์ˆ˜ ์žˆ๋‹ค.

 

โ—๏ธ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ WAS๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœํ•  ๋•Œ์—๋Š” ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ , ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๋“ฏ์ด ๊ฐœ๋ฐœํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


HTML

 

์›น ์„œ๋ฒ„๋Š” ๊ณ ์ •๋œ HTML ํŒŒ์ผ, css, js, ์ด๋ฏธ์ง€, ์˜์ƒ ๋“ฑ ์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต

WAS๋Š” ๋™์ ์œผ๋กœ ํ•„์š”ํ•œ HTMLํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์„œ ์ „๋‹ฌํ•ด ์ค๋‹ˆ๋‹ค.

HTTP API

HTML์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ (์ฃผ๋กœ jsonํ˜•์‹)๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

 

HTTP API๋Š” ์›น ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•ฑํด๋ผ์ด์–ธ - ์„œ๋ฒ„, ์„œ๋ฒ„ - ์„œ๋ฒ„ ๋“ฑ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ๊ณผ ์—ฐ๋™ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

 

 

SSR

SSR ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง (๋ฐฑ์—”๋“œ)

  •  ์„œ๋ฒ„์—์„œ ์ตœ์ข… HTML์„ ์ƒ์„ฑํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ 
  • HTML ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์„œ๋ฒ„์—์„œ ๋งŒ๋“ค์–ด์„œ ์›น๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ฃผ๋กœ ์ •์ ์ธ ํ™”๋ฉด์— ์‚ฌ์šฉํ•˜๊ณ  ๊ด€๋ จ๊ธฐ์ˆ ๋กœ๋Š” thymeleaf, jsp๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

CSR ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง (ํ”„๋ก ํŠธ์—”๋“œ)

  • HTML ๊ฒฐ๊ณผ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•ด์„œ ์ ์šฉ ์ฃผ๋กœ ๋™์ ์ธ ํ™”๋ฉด์— ์‚ฌ์šฉ, ์›น ํ™˜๊ฒฝ์„ ๋งˆ์น˜ ์•ฑ ์ฒ˜๋Ÿผ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋ถ€๋ถ„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ
  • ์˜ˆ) ๊ตฌ๊ธ€ ์ง€๋„, Gmail, ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋”
    ๊ด€๋ จ๊ธฐ์ˆ : React, Vue.js 

 

 

 

 

<์ฐธ๊ณ ์ž๋ฃŒ>

https://coding-factory.tistory.com/742

 

[Web] ์„œ๋ธ”๋ฆฟ(Servlet)์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ์„œ๋ธ”๋ฆฟ ์ด์ •๋ฆฌ

์„œ๋ธ”๋ฆฟ(Servlet)์ด๋ž€? ์„œ๋ธ”๋ฆฟ์ด๋ž€ Dynamic Web Page๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์›น์„ ๋งŒ๋“ค๋•Œ๋Š” ๋‹ค์–‘ํ•œ ์š”์ฒญ(Request)๊ณผ ์‘๋‹ต(Response)์ด ์žˆ๊ธฐ ๋งˆ๋ จ์ด๊ณ  ์ด ์š”

coding-factory.tistory.com

 

'๐Ÿ“• Java&Spring > MVC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Front-Controller ํŒจํ„ด  (0) 2023.02.27
Spring / MVC ํŒจํ„ด  (0) 2023.02.24
Spring / ์ˆœ์ˆ˜ Servlet ํŒจํ„ด, JSP ํŒจํ„ด  (0) 2023.02.23
Spring MVC / HttpServletResponse  (0) 2023.02.22
Spring MVC / HttpServletRequest  (0) 2023.02.22

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ