** ๐MVC ํจํด ์ดํด**
JSP + Servlet + DAO/DTO๋ก ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์กฐํํ๊ธฐ ์ํ ํต์ฌ ๊ฐ๋
์ค๋ฌดํ ๊ตฌ์กฐ ์ค๊ณ + ์ค์ ํ๋ฆ + ๊ธฐ์ ๋ฉด์ ๊น์ง ์ปค๋ฒ
๐งฉ ๋ชฉ์ฐจ
- MVC ํจํด์ด๋?
- ๊ฐ ๊ตฌ์ฑ์์ ์ญํ ์ ๋ฆฌ
- ๊ตฌ์กฐ๋ + ๋์ ํ๋ฆ
- ์ค์ ์์ ํ๋ฆ๋
- ๋ฉด์ ์ง๋ฌธ ๋๋น
- ๋ง๋ฌด๋ฆฌ ์์ฝ + Notion ์์ฑ ํ
โ 1. MVC ํจํด์ด๋?
์ฉ์ด | ์๋ฏธ |
---|---|
M (Model) | ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ญ (DB ์ฐ๊ฒฐ, DTO/DAO ํด๋์ค) |
V (View) | ํ๋ฉด ์ถ๋ ฅ ๋ด๋น (JSP) |
C (Controller) | ์์ฒญ ์ฒ๋ฆฌ/์ค๊ณ ์ญํ (Servlet) |
๐ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ฑ์์๋ณ๋ก ์ญํ ์ ๋ถ๋ฆฌํด์ ์ ์ง๋ณด์์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ ๊ตฌ์กฐ
โ 2. ๊ตฌ์ฑ ์์๋ณ ์ญํ ์์ฝ
๊ตฌ์ฑ ์์ | ์ฌ์ฉ ๊ธฐ์ | ์ญํ |
---|---|---|
Model | Java ํด๋์ค (DTO/DAO) | ๋ฐ์ดํฐ ์ ์ฅ, DB ์ฒ๋ฆฌ |
View | JSP | ์ฌ์ฉ์์๊ฒ ํ๋ฉด ์ถ๋ ฅ |
Controller | Servlet | ์์ฒญ์ ๋ฐ์ Model ํธ์ถ + ๊ฒฐ๊ณผ๋ฅผ View์ ์ ๋ฌ |
โ 3. MVC ๊ตฌ์กฐ๋ ๐งฑ
[์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ ]
โฌ๏ธ
[View: form.jsp]
์ฌ์ฉ์ ์
๋ ฅ ํ๋ฉด
โฌ๏ธ form ์ ์ก
[Controller: SaveServlet.java]
์์ฒญ ํ๋ผ๋ฏธํฐ ๋ฐ์
โฌ๏ธ
[Model: DTO + DAO]
DB ์ ์ฅ ์ฒ๋ฆฌ
โฌ๏ธ
[View: result.jsp / list.jsp]
๊ฒฐ๊ณผ ํ๋ฉด ์ถ๋ ฅ
โ 4. ์ค์ ํ๋ฆ ์์: ๊ฒ์๊ธ ์ ์ฅ
๐งพ ์ํฉ
์ฌ์ฉ์๊ฐ form.jsp
์์ ๊ฒ์๊ธ ์์ฑ โ ์ ์ฅ ๋ฒํผ ํด๋ฆญ
๋จ๊ณ | ํ์ผ | ์ญํ |
---|---|---|
1 | form.jsp |
์ฌ์ฉ์ ์ ๋ ฅ ํ๋ฉด (View) |
2 | SaveServlet.java |
์ ๋ ฅ๊ฐ ๋ฐ๊ธฐ + DAO ํธ์ถ (Controller) |
3 | BoardDTO.java |
๋ฐ์ดํฐ ์ ์ฅ์ฉ ๊ฐ์ฒด (Model - DTO) |
4 | BoardDAO.java |
DB ์ ์ฅ ๋ก์ง (Model - DAO) |
5 | result.jsp |
์ ์ฅ ์๋ฃ ํ๋ฉด ์ถ๋ ฅ (View) |
โ ์ค์ ์์ ํ๋ฆ ๊ฐ๋จ ์์ฝ
<!-- form.jsp -->
<form action="save" method="post">
์ ๋ชฉ: <input type="text" name="title" /><br />
๋ด์ฉ: <textarea name="content"></textarea><br />
<input type="submit" value="์ ์ฅ" />
</form>
// SaveServlet.java (Controller)
protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
String title = req.getParameter("title");
String content = req.getParameter("content");
BoardDTO dto = new BoardDTO();
dto.setTitle(title);
dto.setContent(content);
BoardDAO dao = new BoardDAO();
dao.insertPost(dto);
resp.sendRedirect("list.jsp");
}
// BoardDTO.java (Model)
public class BoardDTO {
private String title;
private String content;
// getter/setter ์๋ต
}
// BoardDAO.java (Model)
public void insertPost(BoardDTO dto) {
Connection conn = DB.getConnection();
String sql = "INSERT INTO board(title, content) VALUES (?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, dto.getTitle());
ps.setString(2, dto.getContent());
ps.executeUpdate();
conn.close();
}
โ 5. ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์ง๋ฌธ
์ง๋ฌธ | ์์ ์์ฝ |
---|---|
MVC ํจํด์ด๋? | Model, View, Controller๋ก ์น ๊ตฌ์กฐ๋ฅผ ๋๋ ์ค๊ณ ๋ฐฉ์ |
JSP์์ Controller ์ญํ ์? | Servlet์ด Controller ์ญํ ์ํ |
Model์๋ ๋ฌด์์ด ๋ค์ด๊ฐ๋์? | DTO (๋ฐ์ดํฐ ๊ฐ์ฒด) + DAO (DB ์ฒ๋ฆฌ ํด๋์ค) |
MVC์ ์ฅ์ ์? | ์ ์ง๋ณด์ ์ฌ์, ์ญํ ๋ถ๋ฆฌ๋ก ๊ตฌ์กฐํ ๊ฐ๋ฅ, ํ์ ์ ์ ๋ฆฌํจ |
โ 6. ๋ง๋ฌด๋ฆฌ ์์ฝ ๐ง
- ๐ฆ Model โ DTO/DAO: ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ DB ์ฒ๋ฆฌ
- ๐จ View โ JSP: ์ฌ์ฉ์์๊ฒ ํ๋ฉด ์ ๊ณต
- ๐ Controller โ Servlet: ์์ฒญ ๋ฐ๊ณ ์ค๊ฐ ์ฒ๋ฆฌ
- โ ์ด ๊ตฌ์กฐ๊ฐ ์ ์ง๋ณด์, ํ์ฅ์ฑ, ํ ์คํธ์ ์ ๋ฆฌํ ์ด์ ๋ ์ญํ ์ด ๋ถ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ