๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Spring

[Spring] Spring MVC

by Bhinney 2022. 8. 24.

๐Ÿ“‹ ๋ชฉ ์ฐจ

1๏ธโƒฃ Spring MVC๋ž€?

2๏ธโƒฃ Spring MVC์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ณผ์ •

 


Spring MVC๋ž€?

 

Spring MVC๋Š” Spring์—์„œ ์ œ๊ณตํ•˜๋Š” ์›น ๋ชจ๋“ˆ์ด๋‹ค. Model, View, Controller์˜ ์„ธ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์žˆ๊ณ , MVC๋Š” ์„ธ ๊ฐ€์ง€ ๊ตฌ์„ฑ์š”์†Œ์˜ ์•ฝ์ž์ด๋‹ค. 


 

1๏ธโƒฃ Model

Model์€ ์ž‘์—…์˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋งํ•œ๋‹ค. 

 

Spring MVC ๊ธฐ๋ฐ˜์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ์š”์ฒญ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ž‘์—…์„ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ฒ˜๋ฆฌํ•œ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋Œ๋ ค์ค˜์•ผ ํ•˜๋Š”๋ฐ, ์ด ๋•Œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต์œผ๋กœ ๋Œ๋ ค์ฃผ๋Š” ์ž‘์—… ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ Model์ด๋ผ๊ณ  ํ•œ๋‹ค.


2๏ธโƒฃ View

View๋Š” Model ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด ์›น ๋ธŒ๋ผ์šฐ์ € ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ™”๋ฉด์— ๋ณด์—ฌ์ง€๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.


3๏ธโƒฃ Controller

Controller๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์˜ ์š”์ฒญ์„ ์ง์ ‘์ ์œผ๋กœ ์ „๋‹ฌ๋ฐ›๋Š” ์—”๋“œํฌ์ธํŠธ(Endpoint)๋กœ์จ ๋ชจ๋ธ๊ณผ ๋ทฐ์˜ ์ค‘๊ฐ„์—์„œ ์ƒํ˜ธ ์ž‘์šฉ์„ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ ์ธก์˜ ์š”์ฒญ์„ ์ „๋‹ฌ ๋ฐ›์•„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฑฐ์นœ ํ›„์— ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด ์ด ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ทฐ๋กœ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 


Spring MVC์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ณผ์ •

 

ํด๋ผ์ด์–ธํŠธ(์›น ๋ธŒ๋ผ์šฐ์ €)๊ฐ€ ์š”์ฒญ์„ ์ „์†กํ•˜๋ฉด, DispatcherServlet์— ์š”์ฒญ์ด ์ „์†ก๋œ๋‹ค. 

 

โ“DispatcherServlet(๋””์ŠคํŒจ์ฒ˜์„œ๋ธ”๋ฆฟ)

  • Dispatch : ๋ณด๋‚ด๋‹ค
  • HTTP ํ”„๋กœํ† ์ฝœ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ๊ฐ€์žฅ ๋จผ์ € ๋ฐ›์•„ ์ ํ•ฉํ•œ ์ปจํŠธ๋กค๋Ÿฌ์— ์œ„์ž„ํ•˜๋Š” ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ
  • ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด Tomcat๊ณผ ๊ฐ™์€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์š”์ฒญ์„ ๋ฐ›์Œ
  • ๊ทธ๋ฆฌ๊ณ  ์ด ๋ชจ๋“  ์š”์ฒญ์„ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ์ธ ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์ด ๊ฐ€์žฅ ๋จผ์ € ์š”์ฒญ์„ ๋ฐ›์Œ
  • ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์€ ๊ณตํ†ต์ ์ธ ์ž‘์—…์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•œ ํ›„์— ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์•„์„œ ์œ„์ž„
  • Front Controller(ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ) : ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์˜ ์ œ์ผ ์•ž์—์„œ ์„œ๋ฒ„๋กœ ๋“ค์–ด์˜ค๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ์ปจํŠธ๋กค๋Ÿฌ, MVC ๊ตฌ์กฐ์—์„œ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด

 

๋Œ“๊ธ€