** ๐๋ฐ์ดํฐ ์์ /์ญ์ ๊ตฌํ **
๊ฒ์๊ธ์ ์์ ํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์ ์ฒด ํ๋ฆ
ํ๋ผ๋ฏธํฐ ์ ๋ฌ โ ์์ ํผ โ DAO ์ฒ๋ฆฌ โ ๋ฆฌ์คํธ ๊ฐฑ์ ๊น์ง ์์ ์ ๋ฆฌ
๐งฉ ๋ชฉ์ฐจ
- ๊ธฐ๋ฅ ๊ฐ์ (์์ & ์ญ์ )
- ์ ์ฒด ํ๋ฆ๋ (ํ๋ผ๋ฏธํฐ โ ์กฐํ โ ์์ /์ญ์ ์ฒ๋ฆฌ)
- ๋จ๊ณ๋ณ ์ญํ ์ ๋ฆฌ
- ์์ ๊ธฐ๋ฅ ์ค์ ์์
- ์ญ์ ๊ธฐ๋ฅ ์ค์ ์์
- URL ํ๋ผ๋ฏธํฐ ํ์ฉ ํฌ์ธํธ
- ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ
- ๋ง๋ฌด๋ฆฌ ์์ฝ + Notion ์์ฑ ํ
โ
1. ๊ธฐ๋ฅ ๊ฐ์
๊ธฐ๋ฅ |
์ค๋ช
|
โ๏ธ ์์ |
๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ ์์ ํผ์ ์ถ๋ ฅ ํ ๋ณ๊ฒฝ๋ ๋ด์ฉ ์ ์ฅ |
โ ์ญ์ |
์ ํํ ๋ฐ์ดํฐ๋ฅผ DB์์ ์ญ์ ํ๊ณ ๋ชฉ๋ก์ผ๋ก ์ด๋ |
โ
2. ์ ์ฒด ํ๋ฆ๋
โ๏ธ ์์ ํ๋ฆ
[list.jsp] ์์ ๋ฒํผ ํด๋ฆญ โ /edit?id=3
โฌ
[EditServlet] โ DAO.selectById(id)
โฌ
[edit.jsp] ๊ธฐ์กด ๊ฐ ์ถ๋ ฅ
โฌ
[UpdateServlet] โ DAO.update(dto)
โฌ
[list.jsp] ๋ชฉ๋ก์ผ๋ก ๋ฆฌ๋๋ ์
โ ์ญ์ ํ๋ฆ
[list.jsp] ์ญ์ ๋ฒํผ ํด๋ฆญ โ /delete?id=3
โฌ
[DeleteServlet] โ DAO.delete(id)
โฌ
[list.jsp] ๋ชฉ๋ก ๋ฆฌ๋๋ ์
โ
3. ๋จ๊ณ๋ณ ์ญํ ์ ๋ฆฌ
๋จ๊ณ |
ํ์ผ |
์ค๋ช
|
1 |
list.jsp |
์์ /์ญ์ ๋ฒํผ์ ID ํฌํจ๋ ๋งํฌ ์ ๊ณต |
2 |
EditServlet.java |
ํด๋น ID ๋ฐ์ดํฐ ์กฐํ ํ edit.jsp๋ก ์ ๋ฌ |
3 |
edit.jsp |
๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ ์๋ ํผ ์ ๊ณต |
4 |
UpdateServlet.java |
์์ ๋ ๊ฐ โ DAO.update()๋ก DB ๊ฐฑ์ |
5 |
DeleteServlet.java |
ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ID ์ญ์ ์ฒ๋ฆฌ |
โ
4. ์์ ๊ธฐ๋ฅ ์ค์ ์์
๐ [1] list.jsp โ ์์ ๋งํฌ ์ถ๊ฐ
<a href="edit?id=<%= dto.getId() %>">์์ </a>
๐ [2] EditServlet.java
@WebServlet("/edit")
public class EditServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("id"));
BoardDAO dao = new BoardDAO();
BoardDTO dto = dao.selectById(id);
request.setAttribute("dto", dto);
RequestDispatcher rd = request.getRequestDispatcher("edit.jsp");
rd.forward(request, response);
}
}
๐ [3] BoardDAO.java โ selectById()
public BoardDTO selectById(int id) {
BoardDTO dto = new BoardDTO();
try {
Connection conn = DB.getConnection();
String sql = "SELECT * FROM board WHERE id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
if(rs.next()) {
dto.setId(rs.getInt("id"));
dto.setTitle(rs.getString("title"));
dto.setContent(rs.getString("content"));
}
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
return dto;
}
๐ [4] edit.jsp
<form action="update" method="post">
<input type="hidden" name="id" value="<%= dto.getId() %>" />
์ ๋ชฉ: <input type="text" name="title" value="<%= dto.getTitle() %>" /><br>
๋ด์ฉ: <textarea name="content"><%= dto.getContent() %></textarea><br>
<input type="submit" value="์์ ์๋ฃ" />
</form>
๐ [5] UpdateServlet.java
@WebServlet("/update")
public class UpdateServlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
int id = Integer.parseInt(req.getParameter("id"));
String title = req.getParameter("title");
String content = req.getParameter("content");
BoardDTO dto = new BoardDTO();
dto.setId(id);
dto.setTitle(title);
dto.setContent(content);
BoardDAO dao = new BoardDAO();
dao.update(dto);
resp.sendRedirect("list");
}
}
๐ BoardDAO.java โ update()
public void update(BoardDTO dto) {
try {
Connection conn = DB.getConnection();
String sql = "UPDATE board SET title=?, content=? WHERE id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, dto.getTitle());
ps.setString(2, dto.getContent());
ps.setInt(3, dto.getId());
ps.executeUpdate();
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
}
โ
5. ์ญ์ ๊ธฐ๋ฅ ์ค์ ์์
๐ [1] list.jsp โ ์ญ์ ๋งํฌ ์ถ๊ฐ
<a href="delete?id=<%= dto.getId() %>"
onclick="return confirm('์ ๋ง ์ญ์ ํ์๊ฒ ์ต๋๊น?')">์ญ์ </a>
๐ [2] DeleteServlet.java
@WebServlet("/delete")
public class DeleteServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("id"));
BoardDAO dao = new BoardDAO();
dao.delete(id);
response.sendRedirect("list");
}
}
๐ BoardDAO.java โ delete()
public void delete(int id) {
try {
Connection conn = DB.getConnection();
String sql = "DELETE FROM board WHERE id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.executeUpdate();
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
}
โ
6. URL ํ๋ผ๋ฏธํฐ ํ์ฉ ํฌ์ธํธ
๊ฐ๋
|
์ค๋ช
|
?id=3 |
URL ํ๋ผ๋ฏธํฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ์ ๋ฌ |
request.getParameter("id") |
Servlet์์ ๊ฐ์ ๋ฐ๋ ๋ฐฉ๋ฒ |
parseInt() |
๋ฌธ์์ด์ ์ ์ํ์ผ๋ก ๋ณํํ์ฌ SQL์ ์ฌ์ฉ |
โ
7. ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ ๐ฌ
์ง๋ฌธ |
์์ ์ ๋ฆฌ |
๋ฐ์ดํฐ ์์ ํ๋ฆ์? |
์์ ๋ฒํผ ํด๋ฆญ โ ๊ธฐ์กด๊ฐ ์ถ๋ ฅ โ ์์ ํ DB ๊ฐฑ์ |
URL ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ๋ฒ์? |
?id=3 , request.getParameter("id") ์ฌ์ฉ |
DAO update()์ insert() ์ฐจ์ด๋? |
update๋ ๊ธฐ์กด ๋ฐ์ดํฐ ์์ , insert๋ ์ ๋ฐ์ดํฐ ์ถ๊ฐ |
์ญ์ ๊ตฌํ ๋ฐฉ์์? |
id๋ง ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋ฐ์ DELETE ์คํ |
โ
8. ๋ง๋ฌด๋ฆฌ ์์ฝ ๐ง
- โ๏ธ ์์ ์ ๊ธฐ์กด ๊ฐ์ ๊ฐ์ ธ์ ์์ ํผ์ ์ถ๋ ฅํ ํ update ์ฒ๋ฆฌ
- โ ์ญ์ ๋ id๋ง ์ ๋ฌ๋ฐ์ DAO์์
DELETE
์คํ
- ๐ URL ํ๋ผ๋ฏธํฐ๋ key=value ํํ (
?id=3
)
- โ
Servlet โ DAO ํธ์ถ โ JSP ํ๋ฉด์ผ๋ก ํ๋ฆ์ด ๊ตฌ์ฑ๋จ (MVC ๊ตฌ์กฐ ๊ทธ๋๋ก)