
SELECT 문 templates 만들기
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
//Connection 객체의 참조값 얻어오기 (Connection Pool 에서 하나 가져오기)
conn=new DbcpBean().getConn();
//실행할 sql 문 작성
String sql="";
//sql 문을 전달하면서 PreparedStatement 객체의 참조값 얻어오기
pstmt=conn.prepareStatement(sql);
//?에 값을 바인딩 할게 있으면 한다.
//select 문 수행하고 결과를 ResultSet으로 받아온다.
rs=pstmt.executeQuery();
//반복문 돌면서 ResultSet의 cursor 를 한칸씩 내린다.
while(rs.next()) {
//cursor가 위치한 곳의 칼럼 데이터 추출해서 어딘가에 담기
}
}catch(Exception e) {
//혹시 예외가 발생한다면 예외정보를 콘솔에 출력해서 에러의 원인 찾기
e.printStackTrace();
}finally {
try {
if(rs!=null)rs.close();
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close(); //Connection 반납
}catch(Exception e) {}
}


MemberDao (SELECT 문 완성)
package test.member.dao;
/*
* Application 전역에서 MemberDao 객체는 오직 하나만 생성되어서 사용되도록 만들기
*/
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import test.member.dto.MemberDto;
import test.util.DbcpBean;
public class MemberDao {
//자신의 참조값을 저장할수 있는 static 필드 선언
private static MemberDao dao;
//외부에서 객체 생성하지 못하게
private MemberDao() {}
//MemberDao 객체의 참조값을 리턴해주는 public static 메소드 만들어 놓기
public static MemberDao getInstance() {
//만일 static 필드가 null 이면(최초로 getInstance() 메소드가 호출된 것이라면)
if(dao==null) {
//MemberDao 객체를 생성해서 static 필드에 저장한다.
dao=new MemberDao();
}
//static 필드에 저장된 MemberDao 객체의 참조값을 리턴해 준다.
return dao;
}
//전체 회원의 목록을 리턴하는 메소드
public List<MemberDto> getList(){
//회원 목록을 담을 객체 생성
List<MemberDto> list=new ArrayList<>();
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
//Connection 객체의 참조값 얻어오기 (Connection Pool 에서 하나 가져오기)
conn=new DbcpBean().getConn();
//실행할 sql 문 작성
String sql="SELECT num, name, addr"
+ " FROM member"
+ " ORDER BY num ASC";
//sql 문을 전달하면서 PreparedStatement 객체의 참조값 얻어오기
pstmt=conn.prepareStatement(sql);
//?에 값을 바인딩 할게 있으면 한다.
//select 문 수행하고 결과를 ResultSet으로 받아온다.
rs=pstmt.executeQuery();
//반복문 돌면서 ResultSet의 cursor 를 한칸씩 내린다.
while(rs.next()) {
//cursor가 위치한 곳의 칼럼 데이터 추출해서 어딘가에 담기
//MemberDto 객체를 생성해서
MemberDto dto=new MemberDto();
//ResultSet 에서 읽어온 정보를 MemberDto 객체의 setter 메소드를 이용해서 담는다.
dto.setNum(rs.getInt("num"));
dto.setName(rs.getString("name"));
dto.setAddr(rs.getString("addr"));
//회원 한명의 정보를 담고 있는 MemberDto 객체의 참조값을 ArrayList 객체에 누적 시키기
list.add(dto);
}
}catch(Exception e) {
//혹시 예외가 발생한다면 예외정보를 콘솔에 출력해서 에러의 원인 찾기
e.printStackTrace();
}finally {
try {
if(rs!=null)rs.close();
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close(); //Connection 반납
}catch(Exception e) {}
}
//ArrayList 객체의 참조값 리턴하기
return list;
}
}
member/list.jsp (SELECT)
위에서 작성한 MemberDao의 getList() 메소드를 얻어와서 회원정보를 출력했다.
<%@page import="test.member.dto.MemberDto"%>
<%@page import="java.util.List"%>
<%@page import="test.member.dao.MemberDao"%>
<%@page import="test.util.DbcpBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//MemberDao 객체의 참조값을 얻어와서
MemberDao dao=MemberDao.getInstance();
//회원목록을 얻어온다.
List<MemberDto> list=dao.getList();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/member/list.jsp</title>
</head>
<body>
<h1>회원 목록입니다.</h1>
<table>
<thead>
<tr>
<th>번호</th>
<th>이름</th>
<th>주소</th>
</tr>
</thead>
<tbody>
<%for(MemberDto tmp:list) {%>
<tr>
<td><%=tmp.getNum() %></td>
<td><%=tmp.getName() %></td>
<td><%=tmp.getAddr() %></td>
</tr>
<%} %>
</tbody>
</table>
</body>
</html>

'Servlet&JSP' 카테고리의 다른 글
| Step02_DB (jsp DELETE) (0) | 2022.08.16 |
|---|---|
| Step02_DB (jsp INSERT) (0) | 2022.08.16 |
| Step02_DB (jsp DB연동하기, DbcpBean) (0) | 2022.08.12 |
| Step01_Servlet(form연결하기, get post 비교, Servlet jsp 비교) (0) | 2022.08.12 |
| Step01_Servlet(표 만들기) (0) | 2022.08.12 |