📌 JSP + JDBC Select 예제 정리
1. 사용한 파일
- select.jsp
👉 웹 브라우저에서 호출되는 시작 JSP, MemberDao를 불러와 DB 데이터 조회 후 테이블 출력 - MemberDao.java
👉 DB 연결, SQL 실행, 결과를 ArrayList<MemberBean> 형태로 반환하는 DAO 클래스 - MemberBean.java
👉 DB에서 꺼낸 데이터를 저장하는 VO/Bean 클래스 (DTO 역할)
2. 실행 흐름 (페이지 이동 순서)
- 브라우저에서 select.jsp 요청
- http://localhost:8080/프로젝트명/select.jsp
- select.jsp 내부 실행
- <jsp:useBean id="mdao" class="myPkg.MemberDao"/>
👉 DAO 객체 생성 - mdao.getAllMembers() 호출
👉 DB에서 member 테이블 데이터 가져옴
- <jsp:useBean id="mdao" class="myPkg.MemberDao"/>
- MemberDao 동작
- getAllMembers() 실행
- getConnection() 으로 DB 연결
- select * from member order by num 실행
- ResultSet → MemberBean 객체로 변환 후 ArrayList에 저장
- DB 자원 닫고 ArrayList 반환
- getAllMembers() 실행
- select.jsp로 결과 전달
- ArrayList<MemberBean>을 for문으로 반복 출력
- HTML <table>에 회원정보 표시
- 각 행마다 [수정] / [삭제] 링크 생성
- 사용자 추가 동작
- [수정] 클릭 → updateForm.jsp?num=해당번호 로 이동
- [삭제] 클릭 → deleteProc.jsp?num=해당번호 로 이동
- [삽입폼] 클릭 → insertForm.jsp 로 이동
3. 실행 순서 (JSP → DAO → DB)
브라우저 요청 (select.jsp)
↓
select.jsp 실행
↓
<jsp:useBean> 으로 MemberDao 객체 생성
↓
mdao.getAllMembers() 호출
↓
MemberDao 내부
└─ getConnection() → DB 접속
└─ SQL 실행 : "select * from member order by num"
└─ while(rs.next()) → MemberBean 생성 → ArrayList에 add
└─ 자원 닫기 (rs, ps, conn)
↓
ArrayList<MemberBean> 리턴
↓
select.jsp에서 for문으로 HTML 테이블에 출력
4. 화면 예시 (select.jsp 실행 시)
| 번호 | 아이디 | 비번 | 이름 | 가입일 | 수정 | 삭제 |
| 1 | hong | 1234 | 홍길동 | 2025-09-11 | [수정] | [삭제] |
| 2 | kim | abcd | 김철수 | 2025-09-11 | [수정] | [삭제] |
5. 핵심 포인트
- MemberBean : 1행(레코드)을 객체로 저장
- ArrayList<MemberBean> : 전체 행을 모아 반환
- DAO 패턴 : DB 로직은 DAO, 출력은 JSP가 담당 (역할 분리)
- 자원 정리 : finally 블록에서 rs, ps, conn 닫기
📌 JSP + JDBC Select 예제 정리
1. select.jsp (조회 페이지)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="myPkg.*" %>
<style type="text/css">
table {
width : 700px;
margin : auto;
text-align: center;
}
</style>
<!-- 1. DAO 객체 생성 -->
<jsp:useBean id="mdao" class="myPkg.MemberDao"/>
<%
// 2. DB에서 전체 회원 조회 (DAO 호출)
ArrayList<MemberBean> lists = mdao.getAllMembers();
%>
<h1>member 테이블 조회</h1>
<!-- 3. 조회 결과를 HTML 테이블로 출력 -->
<table border="1">
<tr>
<th>번호</th>
<th>아이디</th>
<th>비번</th>
<th>이름</th>
<th>가입일</th>
<th>수정</th>
<th>삭제</th>
</tr>
<%
// 4. ArrayList 반복 출력
for(int i=0; i<lists.size(); i++){
%>
<tr>
<td><%= lists.get(i).getNum() %></td>
<td><%= lists.get(i).getId() %></td>
<td><%= lists.get(i).getPasswd() %></td>
<td><%= lists.get(i).getName() %></td>
<td><%= lists.get(i).getRegister() %></td>
<!-- 수정/삭제는 num 값 전달 -->
<td><a href="updateForm.jsp?num=<%=lists.get(i).getNum()%>">수정</a></td>
<td><a href="deleteProc.jsp?num=<%=lists.get(i).getNum()%>">삭제</a></td>
</tr>
<% } %>
</table>
<br>
<!-- 5. 회원 추가 페이지로 이동 -->
<a href="insertForm.jsp">삽입폼</a>
✔ 포인트
- <jsp:useBean> : JSP에서 Java 객체를 생성
- getAllMembers() : DAO에서 DB select 실행 후 ArrayList 반환
- for문으로 리스트를 테이블 형태로 출력
2. MemberDao.java (DAO 클래스)
package myPkg;
import java.sql.*;
import java.util.ArrayList;
public class MemberDao {
// DB 접속 정보
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String id = "sqlid";
String pw = "sqlpw";
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
// 1. 생성자: 드라이버 로드
public MemberDao() {
try {
Class.forName(driver);
System.out.println("드라이버 로드 성공");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 2. DB 연결
public void getConnection() {
try {
conn = DriverManager.getConnection(url, id, pw);
System.out.println("접속 성공");
} catch (SQLException e) {
e.printStackTrace();
}
}
// 3. 전체 회원 조회 메서드
public ArrayList<MemberBean> getAllMembers(){
ArrayList<MemberBean> lists = new ArrayList<MemberBean>();
getConnection(); // DB 연결
try {
// SQL 준비 및 실행
String sql = "select * from member order by num";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
// 4. 결과 집합(ResultSet) 반복 처리
while(rs.next()) {
int num = rs.getInt("num");
String id = rs.getString("id");
String passwd = rs.getString("passwd");
String name = rs.getString("name");
String register = String.valueOf(rs.getDate("register"));
// 한 줄(Row)을 Bean 객체에 저장
MemberBean mb = new MemberBean(num,id,passwd,name,register);
// ArrayList에 추가
lists.add(mb);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 5. 자원 반납
try {
if(ps != null) ps.close();
if(rs != null) rs.close();
if(conn != null) conn.close();
} catch(SQLException e) {
e.printStackTrace();
}
}
// 6. 리스트 반환
return lists;
}
}
✔ 포인트
- getAllMembers() : DB → ResultSet → MemberBean 변환 → ArrayList로 반환
- finally 블록 : 자원 반납 (메모리 누수 방지)
- DAO 패턴 : DB 로직은 JSP가 아닌 DAO에서만 처리
3. MemberBean.java (데이터 저장용 Bean)
package myPkg;
// 1. member 테이블의 한 행(Row)을 담는 클래스
public class MemberBean {
private int num;
private String id;
private String passwd;
private String name;
private String register;
// 2. 기본 생성자
public MemberBean() {}
// 3. 모든 컬럼을 받는 생성자
public MemberBean(int num, String id, String passwd, String name, String register) {
this.num = num;
this.id = id;
this.passwd = passwd;
this.name = name;
this.register = register;
}
// 4. Getter / Setter (캡슐화된 데이터 접근)
public int getNum() { return num; }
public void setNum(int num) { this.num = num; }
public String getId() { return id; }
public void setId(String id) { this.id = id; }
public String getPasswd() { return passwd; }
public void setPasswd(String passwd) { this.passwd = passwd; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getRegister() { return register; }
public void setRegister(String register) { this.register = register; }
}
✔ 포인트
- 한 명의 회원 데이터를 담는 클래스
- JSP와 DAO 사이의 데이터 전달 객체(DTO, VO) 역할
- getter/setter 로 캡슐화된 데이터 접근
사용한 sql
drop table member;
drop sequence m_seq;
create table member(
num number primary key,
id varchar2(10) not null,
passwd varchar2(10) not null,
name varchar2(10) not null,
register date default sysdate
);
create sequence m_seq
increment by 1
start with 1
minvalue 1
maxvalue 10000
nocache;
insert into member(num,id,passwd,name)
values(m_seq.nextval,'IU','111','아이유');
commit;
col id for a10
col passwd for a10
select * from member;
✅ 전체 실행 순서 정리 (주석 기준)
- JSP 실행 (select.jsp)
→ DAO 객체 생성 → getAllMembers() 호출 - DAO 동작 (MemberDao)
→ DB 연결 → SQL 실행 → ResultSet 반복 → Bean 생성 & ArrayList 저장 → 반환 - JSP 출력
→ ArrayList 반복 → HTML 테이블에 표시
'기초 및 언어 > ▶ Java&JSP' 카테고리의 다른 글
| 13. JSP + JDBC Update 예제 정리1 _ member (0) | 2025.09.11 |
|---|---|
| 12. JSP + JDBC insert 예제 정리1 _ member (0) | 2025.09.11 |
| 10. JSP 유효성 검정 / usebean 숙제 (0) | 2025.09.10 |
| 09. JSP_ActionTag : useBean (0) | 2025.09.10 |
| 08. JSP_ActionTag : fowardAction (0) | 2025.09.10 |