728x90
자바 빈
웹 프로그램, 즉 Java EE 프로그래밍 시 여러 객체를 거치면서 만들어지는 데이터를 저장하거나 전달하는 데 사용
자바의 DTO(Data Transfer Object, 데이터 전송 객체) 클래스, VO(Value Object, 값 객체) 클래스와 같은 개념이라고 할 수 있음
자바 빈을 만드는 방법은 VO 클래스를 만드는 방법과 같음
DTO: 객체와 객체 사이에 데이터를 전달하는 용도로 사용하는 값 객체
자바 빈의 특징
- 속성의 접근 제한자는 private
- 각 속성(attribute, property)은 각각의 setter/getter를 가짐
- setter/getter 이름의 첫 글자는 반드시 소문자로 시작
- 인자 없는 생성자를 반드시 가지며 다른 생성자도 추가가 가능
자바 빈을 이용한 회원 테이블의 회원 정보 조회 후 출력 실습
MemberBean을 이용해 회원 정보를 등록, 조회하고 출력하는 과정
회원 정보를 저장하는 MemberBean 클래스를 만들기 전에 현재 만들어진 회원 테이블을 먼저 참고해야 한다.
1. 회원 테이블을 참고하여 MemberBean.java 클래스 파일 작성
// MemberBean.java
package sec01.ex01;
import java.util.Date;
public class MemberBean {
private String id;
private String pwd;
private String name;
private String email;
private Date 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;
}
public Date getJoinDate() {
return joinDate;
}
public void setJoinDate(Date joinDate) {
this.joinDate = joinDate;
}
}
2. member.jsp, memberForm.html 파일 작성
<%-- member.jsp --%>
<%@ 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>
<!-- memberForm.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 가입창</title>
</head>
<body>
<form method="get" 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"><input type="text" name="name"></td>
</tr>
<tr>
<td width="200">
<p align="right">이메일
</td>
<td width="400"><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>
3. MemberDAO.java 클래스 파일 작성
// MemberDAO.java
package sec01.ex01;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
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("prepareStatement: " + 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("prepareStatement: " + query);
pstmt = con.prepareStatement(query);
pstmt.setString(1, id);
pstmt.setString(2, pwd);
pstmt.setString(3, name);
pstmt.setString(4, email);
pstmt.executeQuery();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
4. http://localhost:8090/pro13/memberForm.html로 요청하여 회원 정보를 입력한 후 가입하기 클릭
새 회원이 추가된 후 다시 회원 정보를 조회하여 목록으로 출력한다.
728x90
'웹 개발 기초 > 자바 웹을 다루는 기술' 카테고리의 다른 글
setProperty/getProperty 액션 태그를 이용한 회원 정보 조회 실습 (0) | 2023.03.01 |
---|---|
유즈빈 액션 태그를 이용한 회원 정보 조회 실습 (0) | 2023.03.01 |
포워드 액션 태그 사용하기 (0) | 2023.02.28 |
인클루드 액션 태그 사용하기 (0) | 2023.02.28 |
스크립트 요소 이용해 회원 정보 조회하기 (1) | 2023.02.28 |