자바 빈을 이용한 회원 정보 조회 실습
자바 빈은 웹 프로그램, 즉 Java EE 프로그래밍 시 여러 객체를 거치면서 만들어지는 데이터를 저장하거나 전달하는 데 사용합니다. 자바의 DTO(Data Transfer Object, 데이터 전송 객체) 클래스, VO(Value Object, 값 객체) 클래스와 같은 개념이라고 할 수 있습니다.
자바 빈을 만드는 방법은 VO 클래스를 만드는 방법과 같은 다음과 같습니다.
- 속성의 접근 제한자는 private입니다.
- 각 속성(attribute, property)은 각각의 setter/getter를 가집니다.
- setter/getter 이름의 첫 글자는 반드시 소문자입니다.
- 인자 없는 생성자를 반드시 가지며 다른 생성자도 추가할 수 있습니다.
그럼 자바 빈을 이용해 회원 테이브의 회원 정보를 조회한 후 출력해 보겠습니다.
1. sec01.ex01 패키지를 사용하고 MemberBean, MemberDAO 클래스를 추가합니다. 그리고 실습 파일 member.jsp의 memberForm.html을 생성합니다.

다음은 MemberBean을 이용해 회원 정보를 등록, 조회하고 출력하는 과정입니다.

2. 회원 정보를 저장하는 MemberBean 클래스를 만들기 전에 다음의 회원 테이블을 봅시다.

3. 회원 테이블을 참고해 MemberBean 클래스를 작성합니다. MemberBean 클래스의 속성은 회원 테이블과 각 컬럼 이름을 그대로 사용하여 자료형도 컬럼 이름의 자료형도 컬럼 이름의 자료형과 동일하게 선언합니다.
package sec01.ex01;
public class MemberBean {
private String id;
private String pwd;
private String name;
private String email;
private String joinDate;
public MemberBean() {
}
public MemberBean(String id, String pwd, String name, String email) {
this.id = id;
this.pwd = pwd;
this.name = name;
this.email = email;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
4. 회원 가입창에서 회원 정보를 입력한 후 member.jsp로 전송하도록 memberForm.html을 작성합니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 가입창</title>
<body>
<form method="post" action="member.jsp">
<h1 style="text-align:center">회원 가입창</h1>
<table align="center">
<tr>
<td width="200"><p align="right">아이디</td>
<td width="400"><input type="text" name="id"></td>
</tr>
<tr>
<td width="200"><p align="right">비밀번호</td>
<td width="400"><input type="password" name="pwd"></td>
</tr>
<tr>
<td width="200"><p align="right">이름</td>
<td width="400"><p><input type="text" name="name"></td>
</tr>
<tr>
<td width="200"><p align="right">이메일</td>
<td width="400"><p><input type="text" name="email"></td>
</tr>
<tr>
<td width="200"><p> </p></td>
<td width="400">
<input type="submit" value="가입하기">
<input type="reset" value="다시입력">
</td>
</tr>
</table>
</form>
</body>
</html>
5. member.jsp를 다음과 가이 작성합니다. 전송된 회원 정보를 getParameter() 메서드를 이용해 가져온 후 MemberBean 객체를 생성하여 각 회원 정보를 숙성에 설정합니다. 그런 다음 MemberDAO의 addMember() 메서드를 호출해 인자로 전달합니다. 새 회원을 추가한 후에는 다시 MemberDAO의 listMembers() 메서드를 호출해 모든 회원 정보를 조회하고 목록으로 출력합니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*, sec01.ex01.*"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<%
String id=request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
String email = request.getParameter("email");
MemberBean m = new MemberBean(id, pwd, name, email);
MemberDAO memberDAO=new MemberDAO();
memberDAO.addMember(m);
List membersList = memberDAO.listMembers();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 목록창</title>
</head>
<body>
<table align="center" width="100%">
<tr align="center" bgcolor="#99ccff">
<td width="7%" >아이디</td>
<td width="7%">비밀번호</td>
<td width="5%" >이름</td>
<td width="11%" >이메일</td>
<td width="5%" >가입일</td>
</tr>
<%
if(membersList.size()==0){
%>
<tr>
<td colspan="5">
<p align="center"><b><span style="font-size:9pt;">
등록된 회원이 없습니다.</span></b></p>
</td>
</tr>
<%
}else{
for( int i = 0; i < membersList.size(); i++ ) {
MemberBean bean = (MemberBean) membersList.get(i);
%>
<tr align="center">
<td><%=bean.getId() %></td>
<td><%=bean.getPwd() %></td>
<td><%=bean.getName() %></td>
<td><%=bean.getEmail() %></td>
<td><%=bean.getJoinDate() %></td>
</tr>
<%
} // end for
} // end if
%>
<tr height="1" bgcolor="#99ccff">
<td colspan="5"></td>
</tr>
</table>
</body>
</html>
6. MemberDAO를 다음과 같이 작성합니다. addMember() 메서드 호출 시 MemberBean 객체로 전달된 회원 정보를 getter를 이용해 insert문을 이용해 추가합니다.
package sec01.ex01;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class MemberDAO {
private Connection con;
private PreparedStatement pstmt;
private DataSource dataFactory;
public MemberDAO() {
try {
Context ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:/comp/env");
dataFactory = (DataSource) envContext.lookup("jdbc/oracle");
} catch (Exception e) {
e.printStackTrace();
}
}
public List listMembers() {
List list = new ArrayList();
try {
con = dataFactory.getConnection();
String query = "select * from t_member order by joinDate desc ";
System.out.println("prepareStatememt: " + query);
pstmt = con.prepareStatement(query);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String id = rs.getString("id");
String pwd = rs.getString("pwd");
String name = rs.getString("name");
String email = rs.getString("email");
Date joinDate = rs.getDate("joinDate");
MemberBean vo = new MemberBean();
vo.setId(id);
vo.setPwd(pwd);
vo.setName(name);
vo.setEmail(email);
vo.setJoinDate(joinDate);
list.add(vo);
}
rs.close();
pstmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public void addMember(MemberBean memberBean) {
try {
Connection con = dataFactory.getConnection();
String id = memberBean.getId();
String pwd = memberBean.getPwd();
String name = memberBean.getName();
String email = memberBean.getEmail();
String query = "insert into t_member";
query += " (id,pwd,name,email)";
query += " values(?,?,?,?)";
System.out.println("prepareStatememt: " + query);
pstmt = con.prepareStatement(query);
pstmt.setString(1, id);
pstmt.setString(2, pwd);
pstmt.setString(3, name);
pstmt.setString(4, email);
pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
7. http://localhost:8090/pro13/memberForm.html로 요청하여 회원 정보를 입력한 후 가입하기를 클릭합니다.

8. 새 회원이 추가된 후 다시 회원 정보를 조회하여 목록으로 출력하는 것을 볼 수 있습니다.

'프로그래밍 언어 > 자바 웹' 카테고리의 다른 글
| setProperty/getProperty 액션 태그를 이용한 회원 정보 실습 (0) | 2025.12.06 |
|---|---|
| 유즈빈 액션 태그를 이용한 회원 정보 조회 실습 (0) | 2025.12.03 |
| 포워드 액션 태그 사용하기 (0) | 2025.11.27 |
| JSP 페이지에 이미지 포함 실습 (0) | 2025.11.24 |
| 인클루드 액션 태그 사용하기 (0) | 2025.11.18 |