[Spring] MVC Framework

inยท2023๋…„ 9์›” 11์ผ
0

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
2/7

๐Ÿ“Œ MVC

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด
โžก๏ธ MVC ํŒจํ„ด์„ ๋„์ž…ํ•˜๋ฉด์„œ UI ์˜์—ญ๊ณผ ๋„๋ฉ”์ธ(๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง) ์˜์—ญ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์„œ๋กœ์—๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ ๊ฐœ๋ฐœ๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋จ

โœ”๏ธ Model

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

โœ”๏ธ View

  • ๋ˆˆ์— ๋ณด์ด๋Š” ๊ฒƒ
  • Model์„ ์ด์šฉํ•˜์—ฌ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ™”๋ฉด์— ๋ณด์ด๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ญํ• 
  • ๋‹ค์–‘ํ•œ View ๊ธฐ์ˆ 
    • HTML ํŽ˜์ด์ง€ ์ถœ๋ ฅ
    • PDF, Excel ๋“ฑ์˜ ๋ฌธ์„œ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ
    • XML, JSON ๋“ฑ ํŠน์ • ํ˜•์‹์˜ ํฌ๋งท์œผ๋กœ ๋ณ€ํ™˜

โœ”๏ธ Controller

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

๐Ÿ“Œ MVC ์ง„ํ–‰ ๊ณผ์ •

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ URL์„ ์š”์ฒญํ•˜๋ฉด ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์Šคํ”„๋ง์œผ๋กœ request๊ฐ€ ๋ณด๋‚ด์ง„๋‹ค.
  • Dispatcher Servlet์ด request๋ฅผ ๋ฐ›์œผ๋ฉด, Handler Mapping์„ ํ†ตํ•ด ํ•ด๋‹น URL์„ ๋‹ด๋‹นํ•˜๋Š” Controller๋ฅผ ํƒ์ƒ‰ ํ›„ ์ฐพ์•„๋‚ธ๋‹ค.
  • ์ฐพ์•„๋‚ธ Controller๋กœ request๋ฅผ ๋ณด๋‚ด์ฃผ๊ณ , ๋ณด๋‚ด์ฃผ๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ Model์„ ๊ตฌ์„ฑํ•œ๋‹ค.
  • Model์—์„œ๋Š” ํŽ˜์ด์ง€ ์ฒ˜๋ฆฌ์— ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ Database์— ์ ‘๊ทผํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฌธ์„ ํ†ตํ•ด ๊ฐ€์ ธ์˜จ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ์–ป์€ Model ์ •๋ณด๋ฅผ Controller์—๊ฒŒ response ํ•ด์ฃผ๋ฉด, Controller๋Š” ์ด๋ฅผ ๋ฐ›์•„ Model์„ ์™„์„ฑ์‹œ์ผœ Disptcher Servlet์—๊ฒŒ ์ „๋‹ฌํ•ด์ค€๋‹ค.
  • Disptcher Servlet์€ View Resolver๋ฅผ ํ†ตํ•ด request์— ํ•ด๋‹นํ•˜๋Š” View ํŒŒ์ผ์„ ํƒ์ƒ‰ ํ›„ ๋ฐ›์•„๋‚ธ๋‹ค.
  • ๋ฐ›์•„๋‚ธ View ํŽ˜์ด์ง€ ํŒŒ์ผ์— Model์„ ๋ณด๋‚ธ ํ›„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ผ ํŽ˜์ด์ง€๋ฅผ ์™„์„ฑ์‹œ์ผœ ๋ฐ›์•„๋‚ธ๋‹ค.
  • ์™„์„ฑ๋œ View ํŒŒ์ผ์„ ํด๋ผ์ด์–ธํŠธ์— responseํ•˜์—ฌ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค.

Disptcher Servlet

  • ๋ชจ๋“  request๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ค‘์‹ฌ ์ปจํŠธ๋กค๋Ÿฌ
  • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์—์„œ http ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  request์— ๋Œ€ํ•ด ์ œ์ผ ์•ž๋‹จ์—์„œ ์ค‘์•™์ง‘์ค‘์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ํ•ต์‹ฌ์ ์ธ ์—ญํ• 
  • ๊ธฐ์กด์—๋Š” web.xml์— ๋ชจ๋‘ ๋“ฑ๋กํ•ด์ค˜์•ผ ํ–ˆ์ง€๋งŒ Disptcher Servlet์ด ๋ชจ๋“  request๋ฅผ ํ•ธ๋“ค๋งํ•˜๋ฉด์„œ ์ž‘์—…์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ

Handler Mapping

  • ํด๋ผ์ด์–ธํŠธ์˜ request url์„ ์–ด๋–ค ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ง€ ์ฐพ์•„์„œ Disptcher Servlet์—๊ฒŒ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์—ญํ• 
  • ์ปจํŠธ๋กค๋Ÿฌ ์ƒ์—์„œ URL์„ ๋งคํ•‘์‹œํ‚ค๊ธฐ ์œ„ํ•ด @RequestMapping์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ด๋ฅผ ์ฐพ์•„์ฃผ๋Š” ์—ญํ• ์„ ํ•จ

Controller

  • ์‹ค์งˆ์ ์ธ ์š”์ฒญ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณณ
  • Disptcher Servlet(ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ) Controller(๋ฐฑ์—”๋“œ ์ปจํŠธ๋กค๋Ÿฌ)
  • Model์˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด์•„ Disptcher Servlet์—๊ฒŒ ๋ฐ˜ํ™˜

View Resolver

  • ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค View๋ฅผ ๊ฒฐ์ •ํ•ด์ฃผ๋Š” ์—ญํ• 

[์ฐธ๊ณ  ์ž๋ฃŒ]

๐Ÿ”—๋งํฌ
๐Ÿ”—๋งํฌ
๐Ÿ”—๋งํฌ

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