spring MVC(๋ชจ๋ธ2, DispatcherServlet) ์ ๋ฆฌ
์คํ๋ง MVC ๋ ๋ชจ๋ธ2 ๋ฐฉ์ ๊ตฌ์กฐ๋ผ๊ณ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ชจ๋ธ2 ๋ฐฉ์์ ๋ญ๊น? = > ๋ชจ๋ธ2: ์น ๊ฐ๋ฐ์ ๋๋ถ๋ถ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
๐๋ชจ๋ธ2๊ฐ ๋๋ถ๋ถ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ผ๊ณ ๋ง ํ๋ ์ดํด๊ฐ ์ ๊ฐ๋ค.
์ฐพ์๋ณด๋ => ํ๋ฉด์ ๋ด๋นํ๋ View ์ ์ธ ๋ถ๋ถ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋น์ฆ๋์ค ๋ก์ง ๋ถ๋ถ์ ๋ถ๋ฆฌํ๊ฒ์ผ๋ก
๋์์ด๋ , ๊ฐ๋ฐ์๋ฅผ ๋ถ๋ฆฌ ์์ผ์ ์์ ํ๊ธฐ ํธํ๊ณ , ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฅผ ๋งํ๋ค.
๋ง์ฝ์ ๋์์ด๋์ ๊ฐ๋ฐ์๊ฐ ํ๋์ ๊ณต๊ฐ์์ ์ฝ๋๋ฅผ ์ง ๋ค๋ฉด ๋งค์ฐ ์๋ก์๋ก ๋ถํธํ ๊ฒ์ด๋ค.
๋ชจ๋ธ 2๋ฐฉ์์ธ MVC์ ์๋ฏธ์ ๋ํด ์์๋ณด์
MVC ๋ ๋ชจ๋ธ(model), ๋ทฐ(view), ์ปจํธ๋กค๋ฌ(Controller) ์ด๋ฉฐ,
๋ชจ๋ธ: ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ
๋ทฐ : ํ๋ฉด์ ๋ด๋นํ๋ ๋ถ๋ถ
์ปจํธ๋กค๋ฌ: ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ผ๋ก ๋ทฐ์ <->๋ชจ๋ธ ์ฌ์ด์ ํต์ ์ญํ ์ ํ๋ค.
๊ทธ๋ฌ๋๊น ๋ชจ๋ธ 2๋ฐฉ์ ํจํด์์๋ ํด๋ผ์ด์ธํธ์ ์ํด ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์ปจํธ๋กค๋ฌ๊ฐ ์์ฒญ์ ๋ฐ๊ณ , ์์ฒญ์ ๋ํ ํด๋นํ๋ ๋ชจ๋ธ์ ํธ์ถํ๊ฒ ๋๋ค. ํธ์ถ๋ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ, ์ปจํธ๋กค๋ฌ์๊ฒ ์์ฒญ์ ๋ํ ์๋ต(๊ฒฐ๊ณผ)๋ฅผ ๋ณด๋ด๊ณ ์ปจํธ๋กค๋ฌ๋ ๋ทฐ์๊ฒ ์ ์กํ๋ ์๋ฆฌ์ด๋ค.
๋ ๊ตฌ์ฒด์ ์ธ ์ค๋ช (์ฐธ๊ณ . ๊ตฌ๊ธ๋ง์ค ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช ํ ๋ธ๋ก๊ทธ๊ฐ ์์ด์ ์ฝ์ผ๋ฉด์ ํ๋ฒ ๋ค์ ์ ๋ฆฌํด๋ณด์๋ค. ํด๋น๋ธ๋ก๊ทธ ์ฃผ์:min-it.tistory.com )
์ ์ฌ์ง์ Spring MVC DispatcherServlet ์ ์ด์ฉํ ๊ตฌ์กฐ์ ๋๋ค.
1. ํด๋ผ์ด์ธํธ ์ฆ ์ฌ์ฉ์์ ๋ชจ๋ ์์ฒญ์ Front Controller ์ธ Dispatcher Servlet ์ด ๋ฐ์ต๋๋ค.
*Front Controller์ ์๋ฒ๋ก ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์ ๋ฐ์์ ์ฒ๋ฆฌ๋ฅผ ํ๋ ์ญํ ์ ๋๋ค.
2. DispatcherServlet์ handlerMapping (ํธ๋ค๋ฌ ๋งคํ)์ ํตํด์ ์์ฒญ์ ํด๋นํ๋ Controller๋ฅผ ์คํ์ํต๋๋ค.
๊ทธ๋ฌ๋๊น ๋ชจ๋ ์์ฒญ์ ๋ฐ์์ง๋ง ์ด๋ค ์ปจํธ๋กค๋ฌ๊ฐ ์ด ์์ฒญ๋ฐ์ ์ผ์ ์ํํ ์ง๋ ํธ๋ค๋ฌ๋งคํ ์ด๋ผ๋ ๋ ์์ ์ด์ฉํ๋๊ฑฐ์ฃ .
3. controller๋ ์ ์ ํ ์๋น์ค ๊ฐ์ฒด๋ฅผ ํธ์ถํฉ๋๋ค.
4. Service๋ DB์ฒ๋ฆฌ๋ฅผ ์ํด DAO๋ฅผ ํธ์ถํฉ๋๋ค.
5. DAO๋ mybatis๋ฅผ ์ด์ฉํ๋ Mapper๋ฅผ ํตํด ์์ ์ฒ๋ฆฌ๋ฅผ ํฉ๋๋ค.
6. ์ด์ DAO๊ฐ ์ค์ db์์ ์ผ์ ์ฒ๋ฆฌํ๊ณ ๋ํ ์ญ์์ผ๋ก ์ฒ๋ฆฌํ ๋ฐ์ดํฐ(๊ฒฐ๊ณผ)๋ฅผ ์ ๋ฌํฉ๋๋ค.
mapper(mybatis) - > DAO -> Service -> Controller ๋ก ์ ๋ฌ๋ฉ๋๋ค.
7. Controller๋ ์ ๋ฌ๋ ๊ฒฐ๊ณผ(์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ)๋ฅผ View Resolver๋ฅผ ํตํด ์ ๋ฌ ๋ฐ์ ๋ทฐ๊ฐ ์๋์ง ๊ฒ์ํฉ๋๋ค.
8. ์ ๋ฌ๋ฐ์ ๋ทฐ๊ฐ ์๋ค๋ฉด view์๊ฒ ๊ฒฐ๊ณผ(์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ)๋ฅผ ์ ๋ฌํด์ค๋๋ค.
9. view๋ ์ ๋ฌ๋ฐ์ ๊ฒฐ๊ณผ(์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ)๋ฅผ ๋ค์ dispatcherServlet์๊ฒ ์ ๋ฌํ๊ณ
10. DispatcherServlet์ ์ ๋ฌ๋ฐ์ ๊ฒฐ๊ณผ(์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ)๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํฉ๋๋ค.
+ ์ด๋ ธํ ์ด์ ์ ๋ฆฌ
@์ ๋ ธํ ์ด์ ๋ช - ์ฌ์ฉํ ์์๋๊ณณ
@Controller - ํด๋์ค
-์ปจํธ๋กค๋ฌ ๊ฐ์ฒด์์ ๋ช ์
@RequestMapping -ํด๋์ค, ๋ฉ์๋
-ํน์ URL์ ๋งค์นญ๋๋ ํด๋์ค๋ ๋ฉ์๋์์ ๋ช ์
@RequestParam -ํ๋ผ๋ฏธํฐ
-์์ฒญ์์ ํน์ ํ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ฐพ์๋ผ ๋ ์ฌ์ฉ
@RequestHeader -ํ๋ผ๋ฏธํฐ
-์์ฒญ์์ ํน์ HTTP ํค๋ ์ ๋ณด๋ฅผ ์ถ์ถํ ๋ ์ฌ์ฉ
@PathVariable -ํ๋ผ๋ฏธํฐ
-ํ์ฌ URL์์์ํ๋ ์ ๋ณด๋ฅผ ์ถ์ถํ ๋ ์ฌ์ฉ
@CookieValue -ํ๋ผ๋ฏธํฐ
-ํ์ฌ ์ฌ์ฉ์์์ฟ ํค๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ ์ฟ ํค์ ์ด๋ฆ์ ์ด์ฉํด์ ์ฟ ํค๊ฐ ์ถ์ถ
@ModelAttribute -๋ฉ์๋, ํ๋ผ๋ฏธํฐ
-์๋์ผ๋ก ํด๋น ๊ฐ์ฒด๋ฅผ ๋ทฐ๊น์ง ์ ๋ฌํ๋๋ก ๋ง๋ ๊ฒ
@SessionAttribute -ํด๋์ค
-์ธ์ ์์์ ๋ชจ๋ธ์ ์ ๋ณด๋ฅผ ์ ์งํ๊ณ ์ถ์ ๊ฒฝ์ฐ
@InitBinder -๋ฉ์๋
-ํ๋ผ๋ฏธํฐ๋ฅผ ์์งํด์ ๊ฐ์ฒด๋ก ๋ง๋ค ๊ฒฝ์ฐ ์ปค์คํฐ๋ง์ด์ง
@ResponseBody -๋ฉ์๋,๋ฆฌํดํ์
-๋ฆฌํด ํ์ ์ด HTTP์ ์๋ต ๋ฉ์์ง๋ก ์ ์ก
@RequsetBody -ํ๋ผ๋ฏธํฐ
-์์ฒญ ๋ฌธ์์ด์ด ๊ทธ๋๋ก ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ
@Repository -ํด๋์ค
-DAO ๊ฐ์ฒด
@Service - ํด๋์ค
-์๋น์ค ๊ฐ์ฒด