** ๐MVC 2 ํจํด ์ค๊ณ **
View์ Controller๋ฅผ ์์ ํ ๋ถ๋ฆฌํ๋ ๊ตฌ์กฐ๋ก
์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ ๊ทน๋ํํ๋ ์ค์ ์ํคํ
์ฒ ์ค๊ณ ๋ฐฉ์
JSP + Servlet ๊ธฐ๋ฐ ์ค์ ๊ตฌ์กฐ ์์ ์ ๋ฆฌ
๐งฉ ๋ชฉ์ฐจ
- MVC๋ ๋ฌด์์ธ๊ฐ?
- MVC1 vs MVC2 ๋น๊ต
- MVC2 ํ๋ฆ๋
- ๊ตฌ์ฑ ์์๋ณ ์ญํ
- ์ค์ ์์ ํ๋ก์ ํธ ๊ตฌ์กฐ
- MVC2 ์ฅ์ ๊ณผ ์ฃผ์์
- ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ
- ๋ง๋ฌด๋ฆฌ ์์ฝ + Notion ์์ฑ ํ
โ
1. MVC๋ ๋ฌด์์ธ๊ฐ?
์์ |
์ค๋ช
|
์์ |
M (Model) |
๋ฐ์ดํฐ ์ฒ๋ฆฌ (DB, DAO, DTO) |
BoardDAO , BoardDTO |
V (View) |
์ฌ์ฉ์ ํ๋ฉด (JSP) |
list.jsp , write.jsp |
C (Controller) |
์์ฒญ ์ฒ๋ฆฌ, ํ๋ฆ ์ ์ด (Servlet) |
BoardListServlet |
๐ง MVC๋ ์ญํ ์ ๋ถ๋ฆฌํ์ฌ ์ฝ๋ ๊ด๋ฆฌ์ ํ์ฅ์ ์ฝ๊ฒ ๋ง๋๋ ๊ตฌ์กฐ์
๋๋ค.
โ
2. MVC1 vs MVC2 ๋น๊ต
ํญ๋ชฉ |
MVC1 |
MVC2 |
๊ตฌ์กฐ |
JSP๊ฐ ์์ฒญ/์๋ต/๋น์ฆ๋์ค ๋ชจ๋ ์ฒ๋ฆฌ |
Servlet์ด ์์ฒญ ์ฒ๋ฆฌ, JSP๋ View ์ ๋ด |
ํ๋ฆ |
JSP โ DAO โ ์๋ต |
JSP(ํผ) โ Servlet โ DAO โ JSP(์๋ต) |
ํ์ฅ์ฑ |
๋ฎ์ |
๋์ (View/Controller ์์ ๋ถ๋ฆฌ) |
์ ์ง๋ณด์ |
์ด๋ ค์ |
์ฝ๊ณ ์ฒด๊ณ์ |
โ
3. MVC2 ํ๋ฆ๋
[์ฌ์ฉ์ ์์ฒญ]
โฌ
๐ form.jsp (์
๋ ฅ)
โฌ
๐ Servlet (Controller)
โ ์์ฒญ ๋ถ์
โ DTO ์์ฑ
โ DAO ํธ์ถ (DB ์ฒ๋ฆฌ)
โ ๊ฒฐ๊ณผ ์ ์ฅ (request.setAttribute)
โฌ
๐ JSP (View)๋ก ์ด๋ (RequestDispatcher.forward)
โฌ
[์๋ต ์ถ๋ ฅ]
โ
4. ๊ตฌ์ฑ ์์๋ณ ์ญํ
๊ตฌ์ฑ |
์์ |
์ญํ |
View |
list.jsp , write.jsp |
ํ๋ฉด ์ถ๋ ฅ (HTML, EL, JSTL) |
Controller |
BoardListServlet |
์ฌ์ฉ์์ ์์ฒญ ์ฒ๋ฆฌ, ํ๋ฆ ์ ์ด |
Model - DTO |
BoardDTO |
๋ฐ์ดํฐ๋ฅผ ๋ด๋ ์๋ฐ ๊ฐ์ฒด |
Model - DAO |
BoardDAO |
DB ์ ๊ทผ, SELECT/INSERT ์ฒ๋ฆฌ |
Util |
DB.java |
๊ณตํต DB ์ฐ๊ฒฐ ์ฒ๋ฆฌ |
โ
5. ์ค์ ์์ ํ๋ก์ ํธ ๊ตฌ์กฐ
๐ controller/
โโ BoardListServlet.java
โโ BoardWriteServlet.java
๐ dao/
โโ BoardDAO.java
๐ dto/
โโ BoardDTO.java
๐ view/
โโ list.jsp
โโ write.jsp
๐ util/
โโ DB.java
โ
Servlet ์ฝ๋ ํ๋ฆ ์์ (Controller)
@WebServlet("/board/list")
public class BoardListServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
BoardDAO dao = new BoardDAO();
List<BoardDTO> list = dao.selectAll();
req.setAttribute("list", list);
RequestDispatcher rd = req.getRequestDispatcher("/view/list.jsp");
rd.forward(req, resp);
}
}
โ
list.jsp ์์ (View)
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page import="java.util.*, dto.BoardDTO" %>
<%
List<BoardDTO> list = (List<BoardDTO>) request.getAttribute("list");
%>
<h2>๊ฒ์๊ธ ๋ชฉ๋ก</h2>
<table border="1">
<% for(BoardDTO dto : list) { %>
<tr>
<td><%= dto.getId() %></td>
<td><%= dto.getTitle() %></td>
</tr>
<% } %>
</table>
โ
6. MVC2 ์ฅ์ ๊ณผ ์ฃผ์์
ํญ๋ชฉ |
๋ด์ฉ |
โ
์ฅ์ |
์ญํ ๋ถ๋ฆฌ๋ก ์ ์ง๋ณด์์ฑ โ, ํ์
์ฉ์ด, ํ์ฅ์ฑ ์ฐ์ |
โ
๊ตฌ์กฐ ๋ช
ํ |
๊ธฐ๋ฅ๋ณ ํจํค์ง ๋ถ๋ฆฌ๋ก ์ฝ๋ ๊ฐ๋
์ฑ ์ฆ๊ฐ |
โ ๏ธ ์ฃผ์ |
Servlet์ด ๋๋ฌด ๋ง์ ๊ธฐ๋ฅ์ ๋ด๋นํ์ง ์๋๋ก ๋ถ๋ฆฌ ์ ์ง (๋น์ฆ๋์ค ๋ก์ง์ DAO๋ก) |
โ
7. ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ ๐ฌ
์ง๋ฌธ |
์์ ์ ๋ฆฌ |
MVC ํจํด์ด๋? |
Model-View-Controller๋ก ๊ตฌ์ฑ๋ ์น ๊ตฌ์กฐ ์ค๊ณ ๋ฐฉ์ |
MVC1๊ณผ MVC2 ์ฐจ์ด์ ์? |
MVC2๋ View์ Controller๋ฅผ ๋ถ๋ฆฌํ์ฌ ํ์ฅ์ฑโ, ์ ์ง๋ณด์ ์ฉ์ด |
Controller ์ญํ ์? |
์์ฒญ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ, ๋ก์ง ํ๋ฆ ์ ์ด, ๊ฒฐ๊ณผ ์ ๋ฌ |
JSP์ ์ญํ ์? |
View ์ญํ ๋ง ์ํ, ๋ก์ง์ ํฌํจ โ |
โ
8. ๋ง๋ฌด๋ฆฌ ์์ฝ ๐ง
- ๐งฑ MVC2๋ View(JSP), Controller(Servlet), Model(DAO/DTO) ์์ ๋ถ๋ฆฌ ๊ตฌ์กฐ
- ๐ฆ ์ค๋ฌด์์๋ ๋ฐ๋์ ๊ธฐ๋ฅ๋ณ๋ก ํจํค์ง๋ฅผ ๋ถ๋ฆฌํด์ผ ํ์
๊ณผ ์ ์ง๋ณด์๊ฐ ์ฌ์
- โ
JSP๋ ๋ก์ง์ด ์๋ ํ๋ฉด ์ถ๋ ฅ๋ง ๋ด๋นํด์ผ ์ง์ ํ MVC2 ๊ตฌ์กฐ
- ๐ฏ ๊ธฐ์ ๋ฉด์ ์์๋ MVC1 vs MVC2 ์ฐจ์ด ์ค๋ช
๊ฐ๋ฅํด์ผ ์ ๋ฆฌ