** ๐ PART 0. ์ ์ฒด ๊ฐ์ ๋ฐ ๋ฉด์ ํค์๋ ์ ๋ฆฌ **
๐ท 1. MVC2์ ํ์ ๋ฐฐ๊ฒฝ: MVC1 โ MVC2 ์งํ ๊ณผ์
๐ฌ ๋๋์ด ์ค๋ช
-
์น์ฌ์ดํธ๋ฅผ ๋ง๋ค ๋ ์์ ์๋ JSP ํ์ผ ํ๋์ ๋ชจ๋ ๊ฑธ ๋ค ์ง์ด๋ฃ์์ด.
๐ ํ๋ฉด ๋์์ธ(HTML) + ๋ฐ์ดํฐ ์ฒ๋ฆฌ(Java) + ์์ฒญ ์ฒ๋ฆฌ(์ ๋ ฅ/๋ฒํผ ์ฒ๋ฆฌ ๋ฑ)๋ฅผ ์ ๋ถ JSP ํ๋์์ ์ฒ๋ฆฌํ ๊ฑฐ์ผ.
-
์ด๊ฑธ MVC1 ๊ตฌ์กฐ๋ผ๊ณ ๋ถ๋ฌ.
๐ ํ์ง๋ง ์ด๋ฐ ๊ตฌ์กฐ๋ ๋ง์น ํ ์ฌ๋์ด ํผ์ ๋ชจ๋ ์ผ์ ๋ค ํ๋ ๊ฒ๊ณผ ๊ฐ์์, ์ ์ง๋ณด์๊ฐ ์ด๋ ต๊ณ , ์ฑ๋ฅ๋ ์ ์ข์์ก์ด.
๐ง ๊ณ ๊ธ ๊ฐ๋ ์ถ๊ฐ
- MVC1์ ๋ฌธ์ ์ :
- ๋ก์ง๊ณผ ๋ทฐ๊ฐ ์์ฌ ์์ด์ ์ฌ์ฌ์ฉ ์ด๋ ค์ (์ฌ์ฌ์ฉ์ฑโ)
- ์์ฒญ ์ฒ๋ฆฌ์ ์๋ต ์ฒ๋ฆฌ ๋ก์ง์ด JSP ์์ ๊ฐํ๊ฒ ๊ฒฐํฉ (์์ง๋โ, ์ ์ฐ์ฑโ)
- Java ์ฝ๋๊ฐ HTML ์ค๊ฐ์ ์์ โ ๊ฐ๋ ์ฑ ์ ํ + ์ ์ง๋ณด์ ์ด๋ ค์
โ ๊ทธ๋์ ๋ฑ์ฅํ ๊ตฌ์กฐ๊ฐ MVC2(Model2)!
- ํต์ฌ์ JSP๋ ํ๋ฉด๋ง!
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์์ฒญ ์ ์ด๋ ์๋ธ๋ฆฟ(Servlet)์ด ์ ๋ดํด!
โ ์ด ๊ตฌ์กฐ๋ฅผ Model2 ๋๋ JSP MVC2 ๊ตฌ์กฐ๋ผ๊ณ ๋ถ๋ฌ.
โ JSP๋ ์ค์ง ์ถ๋ ฅ(View), Servlet์ ์ ์ด(Control), ์๋ฐ ํด๋์ค๋ ๋ฐ์ดํฐ(Model)๋ฅผ ๋ด๋น.
๐ท 2. JSP Model2 ๊ตฌ์กฐ ํต์ฌ ์ปดํฌ๋ํธ
๐ฌ ์ฝ๊ฒ ๋งํ๋ฉด ์ด ์ธ ๊ฐ์ง์ผ:
๊ตฌ์ฑ์์ | ํ๋ ์ผ | ์์ |
---|---|---|
Model (๋ชจ๋ธ) | ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ด๋น | Member.java , BoardDao.java |
View (๋ทฐ) | ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ํ๋ฉด | list.jsp , form.jsp |
Controller (์ปจํธ๋กค๋ฌ) | ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌ | BoardController.java |
๐ง ๊ณ ๊ธ ๊ฐ๋ ํ์ฅ
- Controller โ
HttpServlet
๊ธฐ๋ฐ ํด๋์ค - View โ
JSP
, JSTL, EL์ ํตํ ํํ ๋ก์ง๋ง ์์ฑ - Model โ
DTO
(Data Transfer Object),DAO
(Data Access Object),Service
๊ณ์ธต ํฌํจ ๊ฐ๋ฅ
๐ท 3. ๋ฉ๋ชจ๋ฆฌ & GC ๊ด์ ์์์ MVC2 ๊ตฌ์กฐ ์ฒ ํ
๐ฌ ์ฝ๊ฒ ๋งํ๋ฉด:
- MVC2 ๊ตฌ์กฐ๋ โ๋๊ฐ ๋ฌด์์ ์ผ๋ง๋ ์ค๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ค๊ณ ์์ด์ผ ํ ์งโ์ ๋ํด ์ญํ ์ ๋๋ ์ ๋ ํจ์จ์ ์ผ๋ก ๋ง๋ ๊ตฌ์กฐ์ผ!
์์:
- Controller(์๋ธ๋ฆฟ)๋ ํ ๋ฒ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ์ ๊ณ์ ์์ฒญ์ ์ฒ๋ฆฌํด
- View(JSP)๋ ํ์ํ ๋๋ง๋ค ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ธ๋ค๊ฐ ์๋ต ํ ์ ๊ฑฐ๋ผ
- Model์ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ ํ์ํ ๋งํผ๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐ๊ณ GC๊ฐ ์ ๋ฆฌํด ์ค
๐ง ๊ณ ๊ธ ๋ฉด์ ๊ฐ๋ :
-
Servlet ์๋ช ์ฃผ๊ธฐ:
init()
โservice()
โdestroy()
โ
init()
์ ๋ฑ 1๋ฒ ์คํ โ ์ดํ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ์์ฒญ ๊ฐ๋ฅ (์๋ธ๋ฆฟ์ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ) - JSP๋ ์ต์ด ์์ฒญ ์ โ JSP โ Servlet์ผ๋ก ๋ณํ โ ์ปดํ์ผ โ ์คํ โ ์ดํ ์๋ธ๋ฆฟ์ฒ๋ผ ๋์ํจ
- Model ๊ฐ์ฒด๋ค(์: DAO)์ ๊ฐ๋ฅํ๋ฉด ์ฑ๊ธํค์ผ๋ก ์ฌ์ฌ์ฉ โ GC ๋ถ๋ด ์ต์ํ
๐ท 4. ๋ฉด์ ํต์ฌ ํค์๋ ์ ๋ฆฌ
์ฉ์ด | ํ๊ธ ํ์ด | ์ฐจ์ด์ ๋ฐ ์ค๋ฌด ํฌ์ธํธ |
---|---|---|
Forward | ๋ด๋ถ ์ด๋ (๊ฐ์ ์๋ฒ ์์์ ์ด๋) | ์ฃผ์์ฐฝ ๊ทธ๋๋ก, RequestDispatcher.forward() ์ฌ์ฉ |
Redirect | ์ธ๋ถ ์ด๋ (๋ค๋ฅธ URL๋ก ์ฌ์์ฒญ) | ์ฃผ์์ฐฝ ๋ณ๊ฒฝ, response.sendRedirect() ์ฌ์ฉ |
RequestDispatcher | ์์ฒญ์ JSP๋ ๋ค๋ฅธ ์๋ธ๋ฆฟ์ ์ ๋ฌํ๋ ๋๊ตฌ | Forward ์ ์ฉ, ์๋ธ๋ฆฟ/JSP ๊ฐ ์ฐ๊ฒฐ ๋ธ๋ฆฟ์ง |
ServletContext | ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๊ณตํต๋ ์ฑ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ | ์ ํ๋ฆฌ์ผ์ด์ ์ ์ญ ๋ฐ์ดํฐ ์ ์ฅ (์: config ๊ฐ) |
RequestScope | ํ๋์ ์์ฒญ(request) ๋์๋ง ์ ์ง๋๋ ๋ฐ์ดํฐ | ์์ฒญ์ด ๋๋๋ฉด GC ๋์ โ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ์ ์ |
๐ก ๋ฉด์ ์์ ๊ผญ ๋์ค๋ ์ง๋ฌธ ์์:
- ๐
Forward
์Redirect
์ ์ฐจ์ด๋?
| ๊ตฌ๋ถ | Forward (ํฌ์๋) | Redirect (๋ฆฌ๋ค์ด๋ ํธ) |
| โ | โ | โ |
| ๐ ์๋ ๋ฐฉ์ | ์๋ฒ ๋ด๋ถ์์ ๋ค๋ฅธ JSP/์๋ธ๋ฆฟ์ผ๋ก ์ด๋ | ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ค๋ฅธ URL๋ก ์ฌ์์ฒญ ์ํด |
| ๐ ์ฃผ์์ฐฝ | ์ ๋ฐ๋ (์๋ ์ฃผ์ ์ ์ง) | ๋ฐ๋ (์ด๋ํ ์ฃผ์๋ก ๋ฐ๋) |
| ๐ฆ ๋ฐ์ดํฐ ์ ๋ฌ | request ๊ฐ์ฒด๋ก ๋ฐ์ดํฐ ์ ๋ฌ ๊ฐ๋ฅ | ์ ๋จ (์ ์์ฒญ์ด๋ผ ์ด์ ๋ฐ์ดํฐ ์๋ฉธ๋จ) |
| ๐ ๋ณด์์ฑ | ๋ด๋ถ ์ด๋์ด๋ผ ์ธ๋ถ์์ ์ง์ ์ ๊ทผ ๋ถ๊ฐ | ๋๊ตฌ๋ ์ ๊ทผ ๊ฐ๋ฅ (์ฃผ์ ๋
ธ์ถ๋จ) |
| ๐งช ์์ | ๋ก๊ทธ์ธ ์ฑ๊ณต ํ โ main.jsp
๋ก ์ด๋ | ๊ฒ์๊ธ ์์ฑ ํ โ ๋ชฉ๋ก์ผ๋ก ์ด๋ |
- ๐
ServletContext
vsHttpSession
vsRequestScope
์ ์ฐจ์ด๋?
| ๊ตฌ๋ถ | RequestScope | HttpSession | ServletContext | | โ | โ | โ | โ | | ๐ฆ ์ ์ฅ ๋์ | 1๊ฐ์ ์์ฒญ(request) ๋์ ์ ์ง | ๋ธ๋ผ์ฐ์ 1๊ฐ (์ฌ์ฉ์) ๊ธฐ์ค์ผ๋ก ์ ์ง | ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์ ๊ณต์ | | ๐ ์ ์ง ์๊ฐ | ์์ฒญ ์ฒ๋ฆฌ ์ค๋ง ์ ํจ | ๋ธ๋ผ์ฐ์ ๋๊ธฐ ์ or ํ์์์ ์ ๊น์ง | ์๋ฒ๊ฐ ๊บผ์ง ๋๊น์ง | | ๐ ์ฌ์ฉ ์์น | JSP/์๋ธ๋ฆฟ ๊ฐ ๋ฐ์ดํฐ ๊ณต์ | ๋ก๊ทธ์ธ ์ฌ์ฉ์ ์ ๋ณด ์ ์ฅ | ์ ์ฒด ์ฌ์ฉ์ ๊ณตํต ์ค์ ๊ฐ | | ๐งช ์์ | ๊ฒ์ ๊ฒฐ๊ณผ โ ๊ฒฐ๊ณผ ํ์ด์ง ์ ๋ฌ | ๋ก๊ทธ์ธ ID ์ ์ฅ | DB์ ์์ ๋ณด ๋ฑ ์ ์ญ ์ค์ ๊ฐ |
- ๐ JSP์์ ํ๋ผ๋ฏธํฐ ์ ๋ฌ ์
getParameter()
๋ก ๋ฐ์ ์ ์๋ ๊ฒฝ์ฐ๋?
โ ์์ฝ: ์ MVC2๊ฐ ์ข์๊ฐ?
ํญ๋ชฉ | MVC1 | MVC2 |
---|---|---|
์ ์ง๋ณด์ | ์ด๋ ต๋ค | ์ข๋ค |
์ญํ ๋ถ๋ด | ์์ | ์์ (Model/View/Controller) |
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ | ์ฝ๋ ๋ค์์ | ๋ถ๋ฆฌ๋์ด GC ํจ์จโ |
์ฑ๋ฅ | ์์ฒญ๋ง๋ค JSP ์๋ก ์คํ | ์ปจํธ๋กค๋ฌ ์ฌ์ฌ์ฉ์ผ๋ก ๋ถ๋ดโ |