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)
- ๋ชจ๋ธ(Model)์ ๋ช ๋ น์ ๋ณด๋์ผ๋ก์จ ๋ชจ๋ธ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
- ์ปจํธ๋กค๋ฌ(Controller)๊ฐ ๊ด๋ จ๋ ๋ทฐ์ ๋ช ๋ น์ ๋ณด๋์ผ๋ก์จ ๋ชจ๋ธ์ ํ์ ๋ฐฉ๋ฒ์ ๋ฐ๊ฟ ์ ์๋ค.
๋ชจ๋ธ(Model)
- ๋ชจ๋ธ(Model)์ ์ํ์ ๋ณํ๊ฐ ์์ ๋ ์ปจํธ๋กค๋ฌ์ ๋ทฐ์ ์ด๋ฅผ ํต๋ณดํ๋ค.
- ๋ทฐ(View)๋ ๋ชจ๋ธ์ ํต๋ณด๋ฅผ ํตํด ์ต์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋ค.
- ์ปจํธ๋กค๋ฌ(Controller)๋ ๋ชจ๋ธ(Model)์ ๋ณํ์ ๋ฐ๋ฅธ ์ ์ฉ ๊ฐ๋ฅํ ๋ช ๋ น์ ์ถ๊ฐ,์ ๊ฑฐ,์์ ํ ์ ์๋ค.
๋ทฐ(View)
- ์ฌ์ฉ์๊ฐ ๋ณผ ๊ฒฐ๊ณผ๋ฌผ์ ์์ฑํ๊ธฐ ์ํด ๋ชจ๋ธ(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)์ด๋ผ๋ ๊ฒ์ ํ์ธ ํ ์ ์์๋ค.