본문 바로가기

JAVA

자바 빈을 이용한 회원 정보 조회

자바 빈은 웹 프로그램, Java EE 프로그래밍시 여러 객체를 거치면서 만들어지는 데이터를 저장하거나 전달 하는데 사용된다.

Java의 DTO(Data Transfer Object, 데이터 전송 객체)클래스, VO(Value Object, 값 객체) 클래스와 같은 개념이라고 할 수 있다.

자바 빈을 만드는 방법은 VO 클래스를 만드는 방법과 같으며 특징은 다음과 같다.

  • 속성의 접근 제한자는 Private다.
  • 각 속성(Attribute, property)는 각각의 setter/getter를 가진다.
  • setter/getter의 첫 글자는 반드시 소문자다.
  • 인자 없는 생성자를 반드시 가지며, 다른 생성자도 추가 할 수 있다.

- 자바 빈을 이용한 회원 테이블 회원 정보 조회 방법-

member.jsp

<%
    String user_id = request.getParameter("user_id");
    String name = request.getParameter("name");
    String pwd = request.getParameter("pwd");
    String email = request.getParameter("email");
    MemberBean bean = new MemberBean(user_id, name, pwd, email);
    MemberDAO dao = new MemberDAO();
    dao.addMember(bean);
    List memberList = dao.listMembers(bean);


%>
<html>
<head>
    <title>회원 목록</title>
</head>
<body>
    <table>
        <tr>
            <td>아이디</td>
            <td>비밀번호</td>
            <td>이름</td>
            <td>이메일</td>
        </tr>

        <%
            if(memberList.size() == 0)
            {
        %>
            <tr>
                <td colspan="5">
                    <p>등록 된 회원이 없습니다.</p>
                </td>
            </tr>
        <%
            }
            else
            {

                for(int i = 0; i<memberList.size(); i++)
                {
                    MemberBean bean1 = (MemberBean) memberList.get(i);


        %>
                <tr>
                    <td><%= bean1.getUser_id()%></td>
                    <td><%= bean1.getPwd()%></td>
                    <td><%= bean1.getName()%></td>
                    <td><%= bean1.getEmail()%></td>
                </tr>
        <%
                }
            }
        %>

    </table>

</body>
</html>

Member Bean

package sec01.ex01;

import java.util.Date;

public class MemberBean {
private String user_id;
private String pwd;
private String name;
private String email;
private Date joinDate;

public MemberBean()
{

}

public MemberBean(String user_id, String pwd, String name, String email)
{
this.user_id = user_id;
this.pwd = pwd;
this.name = name;
this.email = email;
}

public String getUser_id() {
return user_id;
}

public void setUser_id(String user_id)
{
this.user_id = user_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;
}
}

MemberDao

package sec01.ex01;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class MemberDAO {
private PreparedStatement pstmt;
private Connection con;
private DataSource dataFactory;
public MemberDAO(){
try{
/*Connection Pool 클래스 사용*/
Context ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:/comp/env");
dataFactory = (DataSource) envContext.lookup("jdbc/mariadb");
}catch (Exception e)
{
e.printStackTrace();
}
}
/*Servlet 에서 전달된 id 인자값 사용*/
public void delMember(String id)
{
try {
con = dataFactory.getConnection();
/*Delete query 실행*/
String query = "delete from t_member" + " where user_id = ?";
pstmt = con.prepareStatement(query);
pstmt.setString(1, id);
pstmt.executeUpdate();
}catch (Exception e)
{
e.printStackTrace();
}
finally {
if(con != null)
{
try{
con.close();
}catch (Exception ex){
ex.printStackTrace();
}
}
if (pstmt != null)
{
try{
pstmt.close();
}catch (Exception ex){
ex.printStackTrace();
}
}
}
}
/*insert addMember 메소드*/
public void addMember(MemberBean bean)
{
try {
con = dataFactory.getConnection();
/*파라미터로 받아온 getter로 받아옴.*/
String id = bean.getUser_id();
String pwd = bean.getPwd();
String name = bean.getName();
String email = bean.getEmail();
/*prepareStatement 클래스 사용*/
String query = "insert into t_member";
query += "(user_id, pwd, name, email)";
query += "values(?,?,?,?)";

System.out.println("query : " + query);

pstmt = con.prepareStatement(query);

pstmt.setString(1, id);
pstmt.setString(2, pwd);
pstmt.setString(3, name);
pstmt.setString(4, email);

pstmt.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
if(pstmt != null)
{
try{
pstmt.close();
}catch (Exception ex)
{
ex.printStackTrace();
}
}
}
}
public List<MemberBean> listMembers(MemberBean bean)
{
List<MemberBean> list = new ArrayList<MemberBean>();
String _name = bean.getName();
try
{
/*t_member 테이블 조회*/
con = dataFactory.getConnection();
String query = "select * from t_member order by id desc";

pstmt = con.prepareStatement(query);

System.out.println(query);
/*prepareStatement 객체 사용하여 쿼리 조회*/

ResultSet rs = pstmt.executeQuery();

while (rs.next())
{
/*쿼리 실행 후 조회된 수량 많큼 각 컬럼 데이터를 뽑아옴.*/
String id = rs.getString("user_id");
String pwd = rs.getString("pwd");
String name = rs.getString("name");
String email = rs.getString("email");
Date joinDate = rs.getDate("joinDate");

/*MemberVO Setter에 파라미터로 데이터 전달*/
MemberBean Bean = new MemberBean();
Bean.setUser_id(id);
Bean.setPwd(pwd);
Bean.setName(name);
Bean.setEmail(email);
Bean.setJoinDate(joinDate);
list.add(Bean);
}
rs.close();
}
catch (Exception e)
{
e.printStackTrace();
}
finally {
if(pstmt != null)
{
try{
pstmt.close();
}catch (Exception ex)
{
ex.printStackTrace();
}
}
if (con != null)
{
try{
con.close();
}catch (Exception ex)
{
ex.printStackTrace();
}
}
}
return list; // 레코드 수량 만큼 List 배열에 retrun
}
}