Skip to content

Latest commit

ย 

History

History
127 lines (75 loc) ยท 6.32 KB

File metadata and controls

127 lines (75 loc) ยท 6.32 KB

MVC

MVC ๋ž€?

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

1) ๊ตฌ์„ฑ ์š”์†Œ

  1. Model (๋ชจ๋ธ):
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ, ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋“ฑ์„ ๋‹ด๋‹นํ•œ๋‹ค.
  • ๋ชจ๋ธ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ทฐ์™€ ์ปจํŠธ๋กค๋Ÿฌ์— ์ „๋‹ฌํ•˜๋ฉฐ, ๊ทธ ์ž์ฒด๋กœ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
  1. View (๋ทฐ):
  • ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • HTML, JSP, Thymeleaf์™€ ๊ฐ™์€ ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
  • ๋ทฐ๋Š” ๋ชจ๋ธ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ Œ๋”๋งํ•˜๋ฉฐ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค.
  1. Controller (์ปจํŠธ๋กค๋Ÿฌ):
  • ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›์•„์„œ ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋ชจ๋ธ์„ ๊ฒฐ์ •ํ•˜๊ณ , ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ทฐ์— ์ „๋‹ฌํ•œ๋‹ค.
  • HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ ์ ˆํ•œ ์‘๋‹ต์„ ์ƒ์„ฑํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํฌํ•จํ•œ๋‹ค.

2) ๋™์ž‘์›๋ฆฌ

  1. ์‚ฌ์šฉ์ž ์š”์ฒญ (Request):
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด URL์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์ด ์š”์ฒญ์€ HTTP ์š”์ฒญ์œผ๋กœ ์„œ๋ฒ„์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
  1. ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ (DispatcherServlet):
  • ๋ชจ๋“  ์š”์ฒญ์€ ๋จผ์ € DispatcherServlet์— ๋„๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์Šคํ”„๋ง MVC์˜ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋กœ, ์ค‘์•™์—์„œ ๋ชจ๋“  ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • DispatcherServlet์€ ์š”์ฒญ์„ ๋ถ„์„ํ•˜์—ฌ ์ ์ ˆํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  1. ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘ (Handler Mapping):
  • DispatcherServlet์€ ์š”์ฒญ URL์— ๋”ฐ๋ผ ์–ด๋А ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ• ์ง€ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด Handler Mapping์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Handler Mapping์€ ์š”์ฒญ์— ๋งคํ•‘๋œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์•„์„œ DispatcherServlet์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  1. ์ปจํŠธ๋กค๋Ÿฌ ์ฒ˜๋ฆฌ (Controller Handling):
  • DispatcherServlet์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์‹คํ–‰ํ•˜๊ณ , ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ, ์–ด๋–ค ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜์—ฌ DispatcherServlet์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  1. ๋ทฐ ๋ฆฌ์กธ๋ฒ„ (View Resolver):
  • DispatcherServlet์€ ๋ฐ˜ํ™˜๋œ ๋ทฐ ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ View Resolver๋ฅผ ํ†ตํ•ด ์‹ค์ œ ๋ทฐ(HTML, JSP ๋“ฑ)๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
  • ์ด ๊ณผ์ •์—์„œ ๋ทฐ์˜ ์œ„์น˜๋‚˜ ํŒŒ์ผ ํ™•์žฅ์ž ๋“ฑ์„ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  1. ๋ทฐ ๋ Œ๋”๋ง (View Rendering):
  • View Resolver๊ฐ€ ์ฐพ์•„๋‚ธ ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ์ตœ์ข… HTML์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ์ด ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” DispatcherServlet์— ์˜ํ•ด ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
  1. ์‘๋‹ต (Response):
  • ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ HTML์„ ๋ Œ๋”๋งํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

3) ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ

๊ทธ๋Ÿผ ์›น => ์ปจํŠธ๋กค๋Ÿฌ => ์„œ๋น„์Šค => dao => sql ํ›„์—

sql => dao => ์„œ๋น„์Šค => ์ปจํŠธ๋กค๋Ÿฌ => ๋ทฐ๋กœ ๋ฐ˜ํ™˜

1. ์›น => ์ปจํŠธ๋กค๋Ÿฌ

  • ์›น (Web): ์‚ฌ์šฉ์ž๊ฐ€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ‘๊ทผํ•˜์—ฌ ํŠน์ • URL์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • ์ปจํŠธ๋กค๋Ÿฌ (Controller): ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค. ์ด ๋ ˆ์ด์–ด์—์„œ ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์ ์ ˆํ•œ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

2. ์ปจํŠธ๋กค๋Ÿฌ => ์„œ๋น„์Šค

  • ์„œ๋น„์Šค (Service): ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค ํด๋ž˜์Šค๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋น„์Šค ๋ ˆ์ด์–ด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ณณ์œผ๋กœ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™ ์ ์šฉ ๋“ฑ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋น„์Šค๋Š” DAO(Data Access Object) ๋ ˆ์ด์–ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ์„œ๋น„์Šค => DAO (Data Access Object)

  • DAO: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ง์ ‘์ ์ธ ํ†ต์‹ ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
    • DAO ํด๋ž˜์Šค๋Š” SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋น„์Šค ๋ ˆ์ด์–ด๋Š” DAO๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.

4. DAO => SQL

  • SQL: DAO ํด๋ž˜์Šค์—์„œ ์ž‘์„ฑ๋œ SQL ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
    • SQL ์ฟผ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œ, ์‚ฝ์ž… ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

5. SQL => DAO

  • DAO: SQL ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ๋Š” ์„œ๋น„์Šค ๋ ˆ์ด์–ด๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

6. DAO => ์„œ๋น„์Šค

  • ์„œ๋น„์Šค (Service): DAO๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์—ฌ๋Ÿฌ DAO์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํ•ฉํ•˜๊ฑฐ๋‚˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ถ”๊ฐ€๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

7. ์„œ๋น„์Šค => ์ปจํŠธ๋กค๋Ÿฌ

  • ์ปจํŠธ๋กค๋Ÿฌ (Controller): ์„œ๋น„์Šค์—์„œ ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์„œ, ์ตœ์ข…์ ์œผ๋กœ ๋ทฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
    • ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์–ด๋–ค ๋ทฐ๋ฅผ ์‚ฌ์šฉํ• ์ง€ ๊ฒฐ์ •ํ•˜๊ณ , ๊ทธ ๋ทฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊น๋‹ˆ๋‹ค.

8. ์ปจํŠธ๋กค๋Ÿฌ => ๋ทฐ

  • ๋ทฐ (View): ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ™”๋ฉด์„ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ์ž๋Š” ์ตœ์ข…์ ์œผ๋กœ ๋ทฐ์—์„œ ๋ Œ๋”๋ง๋œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์š”์•ฝ

์ด ์ „์ฒด ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

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