자바 빈은 웹 프로그램, 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
}
}
'JAVA' 카테고리의 다른 글
setProperty/getProperty 액션 태그를 이용한 회원 정보 조회 (0) | 2021.09.07 |
---|---|
유즈빈 액션 태그를 이용 한 회원 정보 조회 (0) | 2021.09.07 |
포워드 액션 태그 (0) | 2021.09.05 |
액션태그 (0) | 2021.09.05 |
Jsp WelcomFile 지정 방법 (0) | 2021.09.02 |