프로그래밍 언어/자바 웹

스크립트 요소 이용해 회원 정보 조회하기

· 코딩마이데이

1. sec02.ex01 패키지를 생성한 후 MemberVO, MemberDAO 클래스를 복사해 붙여 넣습니다. 그리고 test03 폴더에 member.jsp, search.jsp 파일을 추가합니다.

실습 파일 위치

 

2. MemberVO 클래스를 다음과 같이 작성합니다.

package sec02.ex01;

import java.sql.Date;

public class MemberVO {
	private String id;
	private String pwd;
	private String name;
	private String email;
	private Date joinDate;
	
	public MemberVO() {
		System.out.println("MemberVO 생성자 호출");
	}

	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;
	}
}

 

 

3. 데이터베이스의 회원을 조회하는 JSP 페이지인 search.jsp를 다음과 같이 작성합니다. 찾고자 하는 이름을 입력하면 member.jsp로 전송합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 검색창</title>
</head>
<body>
	<form method="post" action="member.jsp">
		이름:<input type="text" name="name"><br>
		<input type="submit" value="조회하기">
	</form>
</body>
</html>

 

4. member.jsp를 다음과 같이 작성합니다. 전송된 name 값을 가져온 후 스크립트릿에서 MemberDAO 객체를 생성하고 listMembers() 메서드를 호출헤 이름에 대한 회원 정보를 조회합니다. 그리고 조회한 회원 정보를 for 반복문을 이용해 출력합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*"
	import="sec02.ex01.*"
    pageEncoding="UTF-8"
%>
<!DOCTYPE html>
<html>
<head>
	<style>
		h1 {
			text-align: center;
		}
	</style>
	<meta charset="UTF-8">
	<title>회원 정보 출력창</title>
</head>
<body>
	<h1>회원 정보 출력</h1>
	<%
		request.setCharacterEncoding("utf-8");
		String _name = request.getParameter("name");
		MemberVO memberVO = new MemberVO();
		memberVO.setName(_name);
		MemberDAO dao = new MemberDAO();
		List membersList = dao.listMembers(memberVO);
	%>
	
	<table border="1" width=800 align=center>
		<tr align=center bgcolor="FFFF66">
			<td>아이디</td>
			<td>비밀번호</td>
			<td>이름</td>
			<td>이메일</td>
			<td>가입일자</td>
		</tr>
		
		<%
			for (int i = 0; i < membersList.size(); i++) {
				MemberVO vo = (MemberVO) membersList.get(i);
				String id = vo.getId();
				String pwd = vo.getPwd();
				String name = vo.getName();
				String email = vo.getEmail();
				Date joinDate = vo.getJoinDate();
		%>
		
		<tr align=center>
			<td><%= id %></td>
			<td><%= pwd %></td>
			<td><%= name %></td>
			<td><%= email %></td>
			<td><%= joinDate %></td>
		</tr>
		
		<%
			}
		%>
	</table>
</body>
</html>

 

5. MemerDAO 클래스를 다음과 같이 작성합니다. 메서드로 전달된 이름에 대해 값이 존재하는 경우와 존재하지 않는 경우에 대해 SQL문을 동적으로 만들어서 조회합니다.

package sec02.ex01;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
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(MemberVO memberVO) {
		List membersList = new ArrayList();
		String _name = memberVO.getName();
		try {
			con = dataFactory.getConnection();
			String query = "select * from t_member";
			if ((_name != null && _name.length() != 0)) {
				query +=  "where name=?";
				pstmt = con.prepareStatement(query);
				pstmt.setString(1, _name);
			} else {
				pstmt = con.prepareStatement(query);
			}
			System.out.println("preparedStatement: " + 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");
				MemberVO vo = new MemberVO();
				vo.setId(id);
				vo.setPwd(pwd);
				vo.setName(name);
				vo.setEmail(email);
				vo.setJoinDate(joinDate);
				membersList.add(vo);
			}
			rs.close();
			pstmt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return membersList;
	}
}

 

6. http://localhost:8090/pro12/test03/search.jsp로 요청한 다음 조회할 이름을 입력하고 member.jsp로 전송합니다.

검색창에 이름 입력

7. 그러면 조회한 회원 정보가 출력됩니다. 만약 이름을 입력하지 않고 조회할 경우에는 모든 회원 정보가 출력됩니다.