๐Ÿ’š Spring

[Spring] MVC ํŒจํ„ด์ด๋ž€?

Genie_. 2024. 12. 6. 23:05
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“ MVC ํŒจํ„ด

MVC๋ž€?

Model, View, Controller์˜ ์•ฝ์ž

ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์„ธ๊ฐ€์ง€์˜ ์—ญํ• ๋กœ ๊ตฌ๋ถ„ํ•œ ํŒจํ„ด

 

  1. ์‚ฌ์šฉ์ž์˜ Request(์š”์ฒญ)๋ฅผ Controller๊ฐ€ ๋ฐ›๋Š”๋‹ค.
  2. Controller๋Š” Service์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ Model์— ๋‹ด๋Š”๋‹ค.
  3. Model์— ์ €์žฅ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹œ๊ฐ์  ์š”์†Œ ์ถœ๋ ฅ์„ ๋‹ด๋‹นํ•˜๋Š” View๋ฅผ ์ œ์–ดํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.

 

  •  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋ž€?
    • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์—์„œ ๋„๋ฉ”์ธ, ๋น„์ฆˆ๋‹ˆ์Šค๋ผ๋Š” ๋ง์€, '์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ํ’€๊ณ ์žํ•˜๋Š” ํ˜„์‹ค ์„ธ์ƒ์˜ ๋ฌธ์ œ'๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
      (์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ , ๋ชฉ์ )
    • '๋„๋ฉ”์ธ ๋กœ์ง'์ด๋‚˜ '๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง' ์ด๋ผ๊ณ  ๋งํ•  ๋•Œ๋Š”, ๊ทธ 'ํ˜„์‹ค ์„ธ์ƒ์˜ ๋ฌธ์ œ'๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์˜๋ฏธ

 

๋งŒ์•ฝ MVC ๊ฐœ๋…์„ Web์—์„œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•˜๋ฉด, ์ด๋ ‡๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

  1. User: ์‚ฌ์šฉ์ž๊ฐ€ ์›น ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•œ๋‹ค.
  2. Manipulates: Controller๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด Model์„ ํ˜ธ์ถœํ•œ๋‹ค.
  3. Updates: Model์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํ†ตํ•ด DB ๋ฐ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์–ดํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ดํ›„ Controller๋Š” Model์—๊ฒŒ ๋ฐ˜ํ™˜๋ฐ›์€ ๊ฒฐ๊ณผ๋ฅผ View์— ๋ฐ˜์˜ํ•œ๋‹ค.
  4. Sees: ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜จ View๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์›น ํŽ˜์ด์ง€๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ๋ณด์—ฌ์ค€๋‹ค.

Model(๋ชจ๋ธ)

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ •๋ณด, ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ฒ˜์Œ ์ •์˜ํ•˜๋Š” ์ƒ์ˆ˜, ์ดˆ๊ธฐํ™”๊ฐ’, ๋ณ€์ˆ˜ ๋“ฑ ์ •๋ณด๋“ค์˜ ๊ฐ€๊ณต์„ ์ฑ…์ž„์ง€๋Š” ์ปดํฌ๋„ŒํŠธ(๋…๋ฆฝ์ ์ธ ๋ชจ๋“ˆ))

Controller์—๊ฒŒ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณต(์กฐ์ž‘)ํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ฆ‰ ๋ฐ์ดํ„ฐ์™€ ๊ด€๋ จ๋œ ๋ถ€๋ถ„์„ ๋‹ด๋‹นํ•˜๋ฉฐ ๊ฐ’๊ณผ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด์ด๋‹ค.

 

Model์ด ๊ฐ€์ง€๋Š” ๊ทœ์น™

  1. ์‚ฌ์šฉ์ž๊ฐ€ ํŽธ์ง‘ํ•˜๊ธธ ์›ํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  2. View๋‚˜ Controller์— ๋Œ€ํ•ด์„œ ์–ด๋–ค ์ •๋ณด๋„ ์•Œ์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.
  3. ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด, ๋ณ€๊ฒฝ ํ†ต์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ๋งŒ ํ•œ๋‹ค.

View(๋ทฐ)

View๋Š” ์ž…๋ ฅ๊ฐ’์ด๋‚˜ ์ฒดํฌ๋ฐ•์Šค ๋“ฑ๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ด๋Š” Controller์—๊ฒŒ ๋ฐ›์€ Model์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ํ™”๋ฉด์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

View๊ฐ€ ๊ฐ€์ง€๋Š” ๊ทœ์น™

  1. Model์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
  2. Model์ด๋‚˜ Controller๋ฅผ ์•Œ๊ณ  ์žˆ์„ ํ•„์š”๊ฐ€ ์—†๋‹ค.
  3. ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด ๋ณ€๊ฒฝํ†ต์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ๋งŒ ํ•œ๋‹ค.

Controller(์ปจํŠธ๋กค๋Ÿฌ)

Controller๋Š” Model๊ณผ View ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ œ์–ดํ•œ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•œ URL์— ๋”ฐ๋ผ ์š”์ฒญ์„ ํŒŒ์•…ํ•˜๊ณ  URL์— ์ ์ ˆํ•œ Method๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ Service์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์ด ํ›„ ๊ฒฐ๊ณผ๋ฅผ Model์— ์ €์žฅํ•˜์—ฌ View์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ฒฐ๊ตญ Controller๋Š” Model๊ณผ View์˜ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜๋Š” ์ค‘์š”ํ•œ ์š”์†Œ์ด๋‹ค.

 

Controller๊ฐ€ ๊ฐ€์ง€๋Š” ๊ทœ์น™

  1. Model์ด๋‚˜ View์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  2. Model์ด๋‚˜ View์˜ ๋ณ€๊ฒฝ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ด์•ผ ํ•œ๋‹ค.

 

 Model๊ณผ View๋Š” ๊ฐ๊ฐ์˜ ์—ญํ• ์— ์ถฉ์‹คํ•˜์ง€๋งŒ Controller๋Š” Model๊ณผ View์˜ ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ์—ญํ• ์ด ๋”์šฑ ์ค‘์š”ํ•˜๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•