** ๐๋ฐ์ดํฐ ์ถ๋ ฅ ํ๋ฆ ๊ตฌํ (DB โ DAO โ JSP ์ถ๋ ฅ)**
DB์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ์ ํ๋ฉด์ ์ถ๋ ฅํ๋ ์ค์ ํ๋ฆ ์์ฑ
DAO๋ก DB ์กฐํ โ DTO๋ก ์ ์ฅ โ JSP์์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ถ๋ ฅ๊น์ง ์์ ์ ๋ฆฌ
๐งฉ ๋ชฉ์ฐจ
- ์ ์ฒด ํ๋ฆ ๊ฐ์
- ๋จ๊ณ๋ณ ์ญํ (DAO โ DTO โ Servlet โ JSP)
- ์ ์ฒด ์์ ์ฝ๋
- JSP์์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ถ๋ ฅํ๊ธฐ
- ์ถ๋ ฅ ํ๋ฆ ์์ ์ ๋ฆฌ
- ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- ๋ง๋ฌด๋ฆฌ ์์ฝ + Notion ์์ฑ ํ
โ 1. ์ ์ฒด ํ๋ฆ ๊ฐ์
[1] BoardDAO
โฌ DB์์ ๋ฐ์ดํฐ ์กฐํ (SELECT)
[2] BoardDTO
โฌ ๊ฐ ํ์ ๊ฐ์ฒด๋ก ์ ์ฅ
[3] ListServlet
โฌ List<BoardDTO>๋ฅผ request์ ์ ์ฅ
[4] list.jsp
โฌ request์์ ๊บผ๋ด ๋ฐ๋ณต ์ถ๋ ฅ
โ 2. ๋จ๊ณ๋ณ ์ญํ ์ ๋ฆฌ
๋จ๊ณ | ํ์ผ | ์ญํ |
---|---|---|
1 | BoardDAO.java |
DB๋ก๋ถํฐ ๋ฐ์ดํฐ ์ ์ฒด ์กฐํ (SELECT) |
2 | BoardDTO.java |
์กฐํํ ๋ฐ์ดํฐ ํ๋ํ๋๋ฅผ ๋ด๋ ๊ฐ์ฒด |
3 | ListServlet.java |
DAO ํธ์ถ โ List |
4 | list.jsp |
request์์ ๊บผ๋ธ List๋ฅผ forEach๋ก ๋ฐ๋ณต ์ถ๋ ฅ |
โ 3. ์ ์ฒด ์์ ์ฝ๋ ๐ฏ
๐ [1] BoardDAO.java - selectAll ๋ฉ์๋
public class BoardDAO {
public List<BoardDTO> selectAll() {
List<BoardDTO> list = new ArrayList<>();
try {
Connection conn = DB.getConnection();
String sql = "SELECT * FROM board ORDER BY id DESC";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
BoardDTO dto = new BoardDTO();
dto.setId(rs.getInt("id"));
dto.setTitle(rs.getString("title"));
dto.setContent(rs.getString("content"));
dto.setRegdate(rs.getTimestamp("regdate"));
list.add(dto);
}
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
๐ [2] BoardDTO.java
public class BoardDTO {
private int id;
private String title;
private String content;
private Timestamp regdate;
// getter & setter ์๋ต
}
๐ [3] ListServlet.java
@WebServlet("/list")
public class ListServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
BoardDAO dao = new BoardDAO();
List<BoardDTO> list = dao.selectAll();
request.setAttribute("list", list);
RequestDispatcher rd = request.getRequestDispatcher("list.jsp");
rd.forward(request, response);
}
}
๐ [4] list.jsp - ์ถ๋ ฅ ํ๋ฉด
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.*, yourpackage.BoardDTO" %>
<%
List<BoardDTO> list = (List<BoardDTO>) request.getAttribute("list");
%>
<h2>๊ฒ์๊ธ ๋ชฉ๋ก</h2>
<table border="1">
<tr>
<th>๋ฒํธ</th>
<th>์ ๋ชฉ</th>
<th>์์ฑ์ผ</th>
</tr>
<% for(BoardDTO dto : list) { %>
<tr>
<td><%= dto.getId() %></td>
<td><%= dto.getTitle() %></td>
<td><%= dto.getRegdate() %></td>
</tr>
<% } %>
</table>
โ 4. JSP์์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ถ๋ ฅํ๊ธฐ
๋ฐฉ์ | ์์ |
---|---|
์ผ๋ฐ for-each | <% for(BoardDTO dto : list) { %> |
JSTL ์ฌ์ฉ (๊ณ ๊ธ) | <c:forEach var="dto" items="${list}"> |
์ด๊ธ์๋ ์คํฌ๋ฆฝํ๋ฆฟ ๋ฐฉ์ ๋จผ์ ์ฌ์ฉํ๊ณ , JSTL์ 3๋จ๊ณ์์ ํ์ตํ์ธ์ ๐
โ 5. ์ถ๋ ฅ ํ๋ฆ ์์ ์์ฝ
1. DAO์์ DB โ List<DTO> ์กฐํ
2. Servlet์์ List๋ฅผ request์ ์ ์ฅ
3. JSP์์ request.getAttribute()๋ก ๊บผ๋
4. forEach๋ก ํ๋์ฉ ์ถ๋ ฅ
โ 6. ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ ๐ฌ
์ง๋ฌธ | ์์ ์ ๋ฆฌ |
---|---|
๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ๋ ํ๋ฆ์? | DAO โ DTO โ Servlet โ request โ JSP |
๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ๋ฒ์? | request.setAttribute("list", list) ์ฌ์ฉ |
JSP์์ ๋ฆฌ์คํธ ๊บผ๋ด๋ ๋ฐฉ๋ฒ์? | request.getAttribute("list") ๋ก ๋ค์ด์บ์คํ
|
๋ฐ๋ณต ์ถ๋ ฅ์ ์ด๋ป๊ฒ ํ๋์? | forEach ๋ฌธ์ผ๋ก DTO ํ๋ ์ถ๋ ฅ |
โ 7. ๋ง๋ฌด๋ฆฌ ์์ฝ ๐ง
- ๐ฆ DAO์์
List<DTO>
๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์ - ๐ค Servlet์์ request.setAttribute๋ก ์ ๋ฌ
- ๐ JSP์์ request.getAttribute๋ก ๊บผ๋
- ๐ forEach ๋ฌธ์ผ๋ก ์ถ๋ ฅ (์คํฌ๋ฆฝํ๋ฆฟ / JSTL ๊ฐ๋ฅ)
- โ ์ถ๋ ฅ์ โํ ์ค = ํ๋์ DTOโ ๋ผ๊ณ ์๊ฐํ๋ฉด ์ดํด ์ฌ์!