๊ฐœ๋ฐœ

MVC ํŒจํ„ด

gyeomii 2023. 6. 26. 18:55
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ MVC( Model, View, Controller )

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

๐Ÿ”ป ๋ชจ๋ธ, Model (๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ์ฃผ๋ฐฉ์žฅ)

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

๐Ÿ”ป ๋ทฐ, View (์ฃผ๋ฐฉ์žฅ์ด ๋‚ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์„ธํŒ…ํ•˜๋Š” ์ง์›)

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

๐Ÿ”ป ์ปจํŠธ๋กค๋Ÿฌ, Controller (ํ๋ฆ„์„ ๊ด€๋ฆฌํ•˜๋Š” ๋งค๋‹ˆ์ €)

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

๐Ÿ”ปWebsite์—์„œ MVC๊ตฌ์กฐ

  1. ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ์„œ๋ฒ„์— ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์„ ์š”์ฒญํ•œ๋‹ค.
  2. ์›น์„œ๋ฒ„๋Š” ๋“ค์–ด์˜จ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ธ”๋ฆฟ์„ ์ฐพ์•„์„œ ์š”์ฒญ์„ ์ „๋‹ฌํ•œ๋‹ค.
  3. ์„œ๋ธ”๋ฆฟ์€ ๋ชจ๋ธ ์ž๋ฐ” ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  4. ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜์—ฌ ๊ฐ’ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, JDBC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ธํ„ฐ๋ž™์…˜์„ ํ†ตํ•ด ๊ฐ’ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  5. ์—…๋ฌด์ˆ˜ํ–‰์„ ๋งˆ์นœ ๊ฒฐ๊ณผ ๊ฐ’์„ View๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
  6. ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ชจ๋ธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๊ฒฐ๊ณผ๊ฐ’์„ View์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
  7. JSP๋Š” ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’์„ ์ฐธ์กฐํ•˜์—ฌ ์ถœ๋ ฅํ•  ๊ฒฐ๊ณผ ํ™”๋ฉด์„ ๋งŒ๋“ค๊ณ  ์ปจํŠธ๋กค๋Ÿฌ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
  8. View๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ํ™”๋ฉด์„ ์›น์„œ๋ฒ„์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
  9. ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์›น์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์š”์ฒญํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ์‘๋‹ต๋ฐ›์œผ๋ฉด ๊ทธ ๊ฐ’์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค.

  1. ์‚ฌ์šฉ์ž๊ฐ€ ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•œ๋‹ค(Uses)
  2. Controller๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ์›นํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ Model์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. (Mainpulates)
  3. Model์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์ œ์–ดํ•œ ํ›„์— ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
  4. Controller๋Š” Model์ด ๋ฆฌํ„ดํ•œ ๊ฒฐ๊ณผ๋ฅผ View์— ๋ฐ˜์˜ํ•œ๋‹ค. (Updates)
  5. ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜์˜๋œ View๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง„๋‹ค. (Sees)
๋ฐ˜์‘ํ˜•