๐ MVC ๋์์ธ ํจํด
- ํ๋ก๊ทธ๋จ์ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐํ๊ธฐ ์ํด์ ๊ฐ ์ฝ๋๋ฅผ 3๊ฐ์ง๋ก ๊ตฌ๋ถํ์ฌ ๊ฐ๋ฐ์ ์งํํ๊ณ ์ ํ๋ ๋์์ธ ํจํด
- ํ๋ก๊ทธ๋จ์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ํ๋ฉด์ ๊ตฌ๋ถํ๋๋ฐ์ ์ด์ ์ ๋ง์ถ ๋์์ธ ํจํด
- Model, View, Controller ์ธ ๊ฐ์ง๋ก ๋๋๋ค
- Model : ๋ฐ์ดํฐ์ ํํ๋ฅผ ํํํ๊ธฐ ์ํ ์ฉ๋์ ์ฝ๋
- View : ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ํ๋ฉด์ ๊พธ๋ฏธ๊ธฐ ์ํ ์ฉ๋์ ์ฝ๋(Swing, html, css, js, jsp, ...)
- Controller : ์์ฒญ์ ๋ฐ์ผ๋ฉด ์ด๋ค ์๋น์ค๋ฅผ ๊ฑฐ์ณ(๋น์ฆ๋์ค๋ก์ง) ์ด๋ค ๋ทฐ๋ก ๊ฐ์ผํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ฝ๋
๐ @Controller
- ํด๋น ํด๋์ค๊ฐ MVCํจํด ์ค Controller์์ ํ์ํ๋ ์ด๋
ธํ
์ด์
- spring-context๊ฐ ์๋์ผ๋ก ์๊ฑฐํด ์์์ ์ฌ์ฉํ๋ค
- ์ด๋ค ์์ฒญ uri + method๋ก ์ด๋ค ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์ด๋ค ๋ทฐ๋ก ๊ฐ์ผํ๋์ง๋ฅผ ์ ์ํ๋ ๊ณณ์ด๋ค
- ๋ค๋ฅธ uri์์ ๊ฐ์ ์ฒ๋ฆฌ๋ฅผ ์งํํ ์๋ ์์ผ๋ฏ๋ก ์ปจํธ๋กค๋ฌ์์ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ๋ ๊ฒ์ ๋ฐ๋์งํ์ง ์๋ค
๐ผ ์ปจํธ๋กค๋ฌ์์ ์๋์ผ๋ก ๋ฐ์ ์ ์๋ ์ธ์๊ฐ๋ค
1. HttpServletRequest
- ์ปจํธ๋กค๋ฌ์์ JSP์ request๊ฐ์ฒด๋ฅผ ๋ฐ์์ ์ฌ์ฉํ ์ ์๋ค
2. HttpServletResoponse
- ์ปจํธ๋กค๋ฌ์์ JSP์ response ๊ฐ์ฒด๋ฅผ ๋ฐ์์ ์ฌ์ฉํ ์ ์๋ค
3. ์๋ฐ๋น ํํ์ ๋ชจ๋ธ ๊ฐ์ฒด
- ํ๋ผ๋ฏธํฐ์ ์ด๋ฆ๊ณผ ๋ชจ๋ธ ๊ฐ์ฒด์ ํ๋๋ช
์ด ๋์ผํ๋ค๋ฉด ๊ฐ์ ๋ฐ์ธ๋ฉํด์ค๋ค
- ์ฌ์ง์ด, ๋ฐ์ดํฐ ํ์
๋ ์์์ ๋ณํํด์ค๋ค (ํ๋ผ๋ฏธํฐ๋ ์๋ String์ด์์ง๋ง age๋ฅผ Integer๋ก ๋ณํํ์ฌ ๋ฃ์ด์ค๋ค)
- ๋ง์ฝ ๋ฐ์ธ๋ฉ์ด ์ฑ๊ณตํ๋ค๋ฉด view์์ ์ฌ์ฉํ ์ ์๋๋ก ์๋์ผ๋ก ์ดํธ๋ฆฌ๋ทฐํธ์ ์ถ๊ฐํด์ค๋ค
4. ์ ๋ฌ๋ฐ๋ ํ๋ผ๋ฏธํฐ์ name๊ณผ ๊ฐ์ ์ด๋ฆ์ ๋ณ์
- ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ์ด๋ฆ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ธํด๋๋ฉด ๊ฐ์ด ์์์ ๋ฐ์ธ๋ฉ๋๋ค
- ํ์
๋ ์์์ ๋ณํํด์ค๋ค
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ดํธ๋ฆฌ๋ทฐํธ์ ์๋์ผ๋ก ์ถ๊ฐ๋์ง๋ ์๋๋ค
- ๋งค๊ฐ๋ณ์ ์์ @ModelAttribute("name")๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ดํธ๋ฆฌ๋ทฐํธ์๋ ์ถ๊ฐ๋๋ค
5. HttpSession
- ์ธ์
๊ฐ์ฒด๋ฅผ ๊บผ๋ด ํ์ฉํ ์ ์๋ค
6. Model
- ์ดํธ๋ฆฌ๋ทฐํธ์ ๊ฐ์ ์ญํ
๐ผ ์ปจํธ๋กค๋ฌ์ ๋ฆฌํด ํ์
1. ๋ค์ view ํ์ด์ง๋ฅผ ์ฐพ๋ ํ์
- String
- ๋ฆฌํดํ๋ ๋ฌธ์์ด์ ์์ /WEB-INF/views/๋ฅผ ๋ํ๊ณ ๋ค์๋ .jsp๋ฅผ ๋ํด ๋ค์ viewํ์ด์ง๋ฅผ ์ฐพ์ ํฌ์๋ํ๋ค
- ๋ฆฌํดํ๋ ๋ฌธ์์ด ์์ redirect:๋ฅผ ๋ถ์ด๋ฉด ๋ฆฌ๋ค์ด๋ ํธ๋ฅผ ์๋ตํ๋ค
- void
- ์ปจํธ๋กค๋ฌ๋ก ์ ์ํ ๋ ์ฌ์ฉํ๋ URI๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํด ๋ค์ view๋ฅผ ์ฐพ๋๋ค
- ModelAndView
- ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ๋ชจ๋ ํ๋ฒ์ ์ค์ ํ ์ ์๋ ๊ฐ์ฒด
2. view๋ฅผ ์ฐพ์ง ์๋ ํ์
- ์๋ฐ๋น ๊ฐ์ฒด ํ์
์ผ๋ก ๋ฆฌํด
- ์น ํ์ด์ง ์ฝ๋ ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ์๋ตํ๋ค
- ResponseEntity
์ง์ ์ํ๋ ์๋ต์ ์์ฑํ์ฌ ์๋ตํ๋ค (์ง์ ์ปค์คํ
)