728x90
데이터베이스의 회원 정보를 조회한 후 JSP 페이지에 출력하는 예제
(데이터베이스 연동에 필요한 라이브러리를 반드시 설치한 후 진행)
1. MemberVO, MemberDAO 클래스를 작성
// MemberDAO.java
package sec02.ex01;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.util.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Date;
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 ";
// _name 값이 존재하면 SQL문에 where 값을 추가하여 해당 이름으로 조회
if((_name!=null && _name.length()!=0)) {
query+=" where name=?";
pstmt = con.prepareStatement(query);
pstmt.setString(1, _name); // 첫 번째 '?'에 전달된 이름을 지정
// _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;
}
public void addMember(MemberVO memberVO) {
try {
con = dataFactory.getConnection();
String id = memberVO.getId();
String pwd = memberVO.getPwd();
String name = memberVO.getName();
String email = memberVO.getEmail();
String query = "insert into t_member";
query += "(id,pwd,name,email)";
query += "values(?,?,?,?)";
System.out.println("preparedStatement: " + 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();
}
}
public void delMember(String id) {
try {
con = dataFactory.getConnection();
String query = "delete from t_member" + " where id=?";
System.out.println("preparedStatement: " + query);
pstmt = con.prepareStatement(query);
pstmt.setString(1, id);
pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean isExisted(MemberVO memberVO) {
boolean result = false;
String id = memberVO.getId();
String pwd = memberVO.getPwd();
try {
con = dataFactory.getConnection();
String query = "select decode(count(*),1,'true','false') as result from t_member";
query += " where id=? and pwd=?";
pstmt = con.prepareStatement(query);
pstmt.setString(1, id);
pstmt.setString(2, pwd);
ResultSet rs = pstmt.executeQuery();
rs.next();
result = Boolean.parseBoolean(rs.getString("result"));
System.out.println("result=" + result);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
// MemberVO.java
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;
}
}
2. member.jsp, search.jsp 파일 작성
<%-- member.jsp --%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*"
import="sec02.ex01.*"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<style>
<%-- <h1> 태그의 텍스트를 중앙에 정렬 --%>
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); <%-- memberVO를 listMembers() 메서드로 전달하여 조회 조건에 해당되는 회원 정보를 조회 --%>
%>
<table border=1 width=800 align=center>
<tr align=center bgcolor='#FFFF66'>
<td>아이디</td>
<td>비밀번호</td>
<td>이름</td>
<td>이메일</td>
<td>가입일자</td>
</tr>
<%
<%-- MemberDAO에서 조회한 회원 정보를 for 반복문을 이용해 테이블의 행으로 출력 --%>
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>
<%
}
%>
</table>
</body>
</html>
<%-- search.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"> <%-- 이름을 member.jsp로 전송 --%>
이름 : <input type="text" name="name"><br>
<input type="submit" value="조회하기">
</form>
</body>
</html>
3. http://localhost:8090/pro12/test03/search.jsp로 요청한 후 조회할 이름을 입력하고 member.jsp로 전송
만약 이름을 입력하지 않고 조회할 경우에는 모든 회원 정보가 출력됨
728x90
'웹 개발 기초 > 자바 웹을 다루는 기술' 카테고리의 다른 글
포워드 액션 태그 사용하기 (0) | 2023.02.28 |
---|---|
인클루드 액션 태그 사용하기 (0) | 2023.02.28 |
JSP welcome 파일 지정하기 (0) | 2023.02.28 |
에러 코드에 따른 예외 페이지 지정 (0) | 2023.02.28 |
JSP 페이지 예외 처리 실습 (0) | 2023.02.28 |