SPring์„ ๊ธฐ๋ฐ˜ํ•œ MVC Project๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•˜๋˜ ์ค‘์— Pattern์— ๋Œ€ํ•ด ๊ถ๊ธˆ์ฆ์„ ๊ฐ€์ง€๊ณ  ์ฐพ์•„๋ณด์•˜๋‹ค. Front Controller Pattern์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ๊ฒŒ ๋˜์–ด ์ด๋ฒˆ ํฌ์ŠคํŒ…์— ์ ์–ด ์ข€ ๋” ์ž์„ธํžˆ ๊ธฐ์–ตํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋˜ํ•œ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—๋Š” ์š”์ƒˆ ํฌ์ŠคํŒ…์„ ๋งŽ์ด ๋ชปํ•œ ์ ์— ๋Œ€ํ•ด ๋ฐ˜์„ฑํ•˜๋Š” ์˜๋ฏธ๋„ ์žˆ๋‹ค. 1 Day : 1 Commit์„ ์ง€์ผœ๋ณด์ž.

1. MVC(Model-View-Controller) Pattern ์ด๋ž€?

  • MVC(Model-View-Controller) Pattern์˜ ๋ชฉํ‘œ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋กœ๋ถ€ํ„ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ณผ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋กœ์ง ์˜ ๋ถ„๋ฆฌ์ด๋‹ค.
  • ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์กด์žฌํ•˜๋ฉฐ ๋ทฐ(View)๋˜ํ•œ ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

2. MVC(Model-View-Controller) Pattern ๊ตฌ์„ฑ์š”์†Œ

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

  1. ๋ชจ๋ธ(Model)์— ๋ช…๋ น์„ ๋ณด๋ƒ„์œผ๋กœ์จ ๋ชจ๋ธ์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์ปจํŠธ๋กค๋Ÿฌ(Controller)๊ฐ€ ๊ด€๋ จ๋œ ๋ทฐ์— ๋ช…๋ น์„ ๋ณด๋ƒ„์œผ๋กœ์จ ๋ชจ๋ธ์˜ ํ‘œ์‹œ ๋ฐฉ๋ฒ•์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

๋ชจ๋ธ(Model)

  1. ๋ชจ๋ธ(Model)์˜ ์ƒํƒœ์— ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๋ทฐ์— ์ด๋ฅผ ํ†ต๋ณดํ•œ๋‹ค.
  2. ๋ทฐ(View)๋Š” ๋ชจ๋ธ์˜ ํ†ต๋ณด๋ฅผ ํ†ตํ•ด ์ตœ์‹ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.
  3. ์ปจํŠธ๋กค๋Ÿฌ(Controller)๋Š” ๋ชจ๋ธ(Model)์˜ ๋ณ€ํ™”์— ๋”ฐ๋ฅธ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์„ ์ถ”๊ฐ€,์ œ๊ฑฐ,์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ทฐ(View)

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ๊ฒฐ๊ณผ๋ฌผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋ธ(Model)๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์–ป์–ด ์˜จ๋‹ค.

3. Front-Controller Pattern ์ด๋ž€?

  • ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(Web application)๊ณผ ๊ด€๋ จ๋œ ํŒจํ„ด(Pattern)์ด๋‹ค.
  • ๋ชจ๋“  ๋ฆฌ์†Œ์Šค(Resource) ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ํ•˜๋‚˜์˜ ์ปจํŠธ๋กค๋Ÿฌ(Controller)๋ฅผ ๋‘๋Š” ํŒจํ„ด์ด๋‹ค.
  • MVC(Model-View-Controller) Pattern๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด์ด๋‹ค.

4.Front-Controller Pattern ์žฅ์ ์€ ๋ฌด์—‡์ผ๊นŒ?

  • ๋ชจ๋“  ์š”์ฒญ(Request)๋ฅผ ํ•˜๋‚˜์˜ ์ปจํŠธ๋กค๋Ÿฌ(Controller)๋ฅผ ํ†ตํ•ด ์ž‘์—…์„ ํ•œ ๊ณณ์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ถ”์ (Tracking)์ด๋‚˜ ๋ณด์•ˆ(Security)๋ฅผ ์ ์šฉํ•  ๋•Œ ํ•˜๋‚˜์˜ ์ปจํŠธ๋กค๋Ÿฌ(Controller)์— ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŽธํ•˜๋‹ค.
  • ํŒŒ์ผ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ URL์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ •๋ฆฌ

Spring์„ ํ†ตํ•ด์„œ ๊ฒฐ๋ก ์„ ์ง“๋Š”๋‹ค๋ฉด DispatchServlet(Front-Controller)์ด Bean์œผ๋กœ ๋“ฑ๋ก๋˜์–ด Controller Package๋ฅผ Scanํ•˜์—ฌ @Controller๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ์€ Controller(Page-Controller)์ด๋ผ๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ฐธ์กฐ