JSP
DAO 이용한 회원관리
H_eh
2022. 7. 15. 13:38
회원가입
- 회원가입 폼 - MemberJoin.jsp
더보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MemberJoin</title>
</head>
<body bgcolor="aliceblue">
<form action="JoinProc.jsp" method="post">
<table width="500" border="1">
<tr height="50">
<td width="150" align="center"> 아이디</td>
<td width="350" align="center"><input type="text" name="id" size="40"></td>
</tr>
<tr height="50">
<td width="150" align="center"> 패스워드</td>
<td width="350" align="center"><input type="password" name="pass1" size="40"></td>
</tr>
<tr height="50">
<td width="150" align="center"> 패스워드확인</td>
<td width="350" align="center"><input type="password" name="pass2" size="40"></td>
</tr>
<tr height="50">
<td width="150" align="center"> 이메일</td>
<td width="350" align="center"><input type="email" name="email" size="40"></td>
</tr>
<tr height="50">
<td width="150" align="center"> 전화번호</td>
<td width="350" align="center"><input type="tel" name="tel" size="40"></td>
</tr>
<tr height="50">
<td width="150" align="center"> 당신의관심분야</td>
<td width="350" align="center">
<input type="checkbox" name="hobby" value="캠핑">캠핑
<input type="checkbox" name="hobby" value="등산">등산
<input type="checkbox" name="hobby" value="영화">영화
<input type="checkbox" name="hobby" value="독서">독서
</td>
</tr>
<tr height="50">
<td width="150" align="center"> 당신의직업은</td>
<td width="350" align="center">
<select name="job">
<option value="교사">교사</option>
<option value="변호사">변호사</option>
<option value="의사">의사</option>
<option value="기술사">기술사</option>
</select>
</td>
</tr>
<tr height="50">
<td width="150" align="center"> 당신의연령은</td>
<td width="350" align="center">
<input type="radio" name="age" value="10">10대
<input type="radio" name="age" value="20">20대
<input type="radio" name="age" value="30">30대
<input type="radio" name="age" value="40">40대
</td>
</tr>
<tr height="50">
<td width="150" align="center"> 하고싶은말</td>
<td width="350" align="center">
<textarea rows="5" cols="40" name="info"></textarea>
</td>
</tr>
<tr height="50">
<td align="center" colspan="2">
<input type="submit" value="회원가입">
<input type="reset" value="취소">
</td>
</tr>
</table>
</form>
</body>
</html>
- JoinProc.jsp
더보기
<%@page import="bean.MemberDAO"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JoinProc</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
//복수 선택 값을 배열에 저장
String []hobby = request.getParameterValues("hobby");
String str = "";
//배열에 있는 내용을 하나의 문자열로 저장
for(int i=0; i<hobby.length; i++){
str += hobby[i]+" ";
}
%>
<jsp:useBean id="memBean" class="bean.MemberBean">
<jsp:setProperty property="*" name="memBean"/>
</jsp:useBean>
<%
memBean.setHobby(str);
MemberDAO mdao = new MemberDAO();
mdao.insertMember(memBean);
//회원가입이 성공했다면 회원정보를 보여주는 페이지로 이동
response.sendRedirect("MemberArray.jsp");
%>
<h1>오라클에 입력 완료</h1>
</body>
</html>
- 회원 등록 : DAO
더보기
public void insertMember(MemberBean memBean) {
try {
getCon();
String sql = "insert into Mem values(?,?,?,?,?,?,?,?)";
pstmt = con.prepareStatement(sql);
//4. 바인드변수에 맞게 데이터를 맵핑
pstmt.setString(1, memBean.getId());
pstmt.setString(2, memBean.getPass1());
pstmt.setString(3, memBean.getEmail());
pstmt.setString(4, memBean.getTel());
pstmt.setString(5, memBean.getHobby());
pstmt.setString(6, memBean.getJob());
pstmt.setString(7, memBean.getAge());
pstmt.setString(8, memBean.getInfo());
pstmt.executeUpdate();
con.close(); //자원반납
} catch (Exception e) {
e.printStackTrace();
}
}
- 회원가입 성공 후 전체 회원목록 출력 페이지로 이동 - MemberArray.jsp
더보기
<%@page import="bean.*"%>
<%@page import="java.util.*"%>
<%@page import="bean.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MemberArray</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
//모든 회원 정보 가져옴
MemberDAO mdao = new MemberDAO();
//가변길이인 vector를 이용하여 데이터를 저장한 후
Vector<MemberBean> vec = mdao.allSelectMember();
MemberBean mb=null;
%>
<h2>전체 회원 목록</h2>
<table width="600" border="1">
<tr height="20">
<td width="150" align="center"> 아이디</td>
<td width="150" align="center"> 이메일</td>
<td width="150" align="center"> 관심분야</td>
<td width="150" align="center"> 직업</td>
</tr>
<%
for(int i=0; i<vec.size(); i++){
mb = vec.get(i);
%>
<tr height="50">
<td width="350" align="center">
<a href="MemberIn.jsp?id=<%=mb.getId() %>"><%=mb.getId() %></a>
</td>
<td width="350" align="center"><%=mb.getEmail() %></td>
<td width="350" align="center"><%=mb.getHobby() %></td>
<td width="350" align="center"><%=mb.getJob() %></td>
</tr>
<%
}
%>
</table>
</body>
</html>
- 전체회원목록 조회 : DAO
더보기
public Vector<MemberBean> allSelectMember() {
Vector<MemberBean> getlist = new Vector<>();
try {
getCon();
String sql = "select * from mem";
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
//쿼리 실행 시킨 결과를 리턴해서 자바 객체에저장
while(rs.next()) { //저장된 데이터만큼까지 반복문을 돌림
//컬럼으로 나눠진 데이터를 빈클래스에 저장해야함
MemberBean bean = new MemberBean();
bean.setId(rs.getString(1));
bean.setPass1(rs.getString(2));
bean.setEmail(rs.getString(3));
bean.setTel(rs.getString(4));
bean.setHobby(rs.getString(5));
bean.setJob(rs.getString(6));
bean.setAge(rs.getString(7));
bean.setInfo(rs.getString(8));
getlist.add(bean);
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return getlist;
}
회원 정보 수정
- 전체 회원 목록(MemberArray.jsp) 페이지에서 id 클릭 시,
- 그 회원의 정보 페이지 출력 - MemberIn.jsp
더보기
<%@page import="bean.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MemberIn</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id"); // 받아온 id 값
MemberDAO mdao = new MemberDAO();
MemberBean mb = mdao.oneMember(id);
%>
<h2><%=id %> 회원 정보</h2>
<table width="600" border="1">
<tr height="20">
<td width="300" align="center"><%=mb.getId() %></td>
</tr>
<tr height="50">
<td width="300" align="center">
<%=mb.getPass1() %><br>
<%=mb.getEmail() %><br>
<%=mb.getTel() %><br>
<%=mb.getHobby() %><br>
<%=mb.getJob() %><br>
<%=mb.getAge() %><br>
<%=mb.getInfo() %>
</td>
</tr>
<tr height="50">
<td width="300" align="center">
<button onclick="location.href='MemberUpdate.jsp?id=<%=mb.getId() %>'">회원정보수정</button>
<button onclick="location.href='MemberDel.jsp?id=<%=mb.getId() %>'">회원탈퇴</button>
</td>
</tr>
<tr height="50">
<td width="300" align="center">
<button onclick="location.href='MemberArray.jsp'">회원 전체목록</button>
<button onclick="location.href='memberJoin.jsp'">회원가입</button>
</td>
</tr>
</table>
</body>
</html>
- 회원의 정보를 수정할 수 있는 폼 - MemberUpdate.jsp
- 기존 정보를 출력하고, 새롭게 입력 가능하다.
- DB의 기존 비밀번호와 일치하는지 검증하기 위해 비밀번호를 입력받는다
더보기
<%@page import="bean.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MemberUpdate</title>
</head>
<body bgcolor="beige">
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id"); // 받아온 id 값
MemberDAO mdao = new MemberDAO();
MemberBean mb = mdao.oneMember(id);
%>
<h2><%=id %> 회원 정보 수정하기</h2>
<form action="UpdateProc.jsp" method="post">
<table width="500" border="1">
<tr height="50">
<td width="150" align="center"> 아이디</td>
<td width="350" align="center"><%=mb.getId() %></td>
</tr>
<tr height="50">
<td width="150" align="center"> 이메일</td>
<td width="350" align="center">
<input type="email" name="email" value="<%=mb.getEmail() %>"></td>
</tr>
<tr height="50">
<td width="150" align="center"> 전화번호</td>
<td width="350" align="center">
<input type="tel" name="tel" value="<%=mb.getTel() %>">
</td>
</tr>
<tr height="50">
<td width="150" align="center"> 당신의관심분야</td>
<td width="350" align="center">
<input type="text" name="hobby" value="<%=mb.getHobby() %>">
</td>
</tr>
<tr height="50">
<td width="150" align="center"> 당신의연령은</td>
<td width="350" align="center">
<input type="text" name="age" value="<%=mb.getAge() %>">
</td>
</tr>
<tr height="50">
<td width="150" align="center"> 하고싶은말</td>
<td width="350" align="center">
<textarea rows="5" cols="40" name="info" ><%=mb.getAge() %></textarea>
</td>
</tr>
<tr height="50">
<td width="150" align="center"> 패스워드</td>
<td width="350" align="center">
<input type="password" name="pass1">
</td>
</tr>
<tr height="50">
<td align="center" colspan="2">
<input type="hidden" name="id" value="<%=mb.getId() %>">
<input type="submit" value="회원 정보 수정">
</td>
</tr>
</table>
</form>
<hr>
<button onclick="location.href='MemberArray.jsp'">회원 전체 목록보기</button>
</body>
</html>
- 특정 회원(1명) 정보 조회 : DAO
더보기
public MemberBean oneMember(String id) {
MemberBean bean = new MemberBean();
try {
getCon();
String sql = "select * from mem where id= ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if(rs.next()) {
bean.setId(rs.getString(1));
bean.setPass1(rs.getString(2));
bean.setEmail(rs.getString(3));
bean.setTel(rs.getString(4));
bean.setHobby(rs.getString(5));
bean.setJob(rs.getString(6));
bean.setAge(rs.getString(7));
bean.setInfo(rs.getString(8));
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return bean;
}
- 수정된 정보 업데이트 처리 - UpdateProc.jsp
- 입력받은 비번과 DB의 기존 비번이 일치하면 수정사항을 업데이트한다
- 수정 성공 시 회원전체목록으로 페이지가 이동된다
더보기
<%@page import="bean.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>UpdateProc</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
%>
<jsp:useBean id="mbean" class="bean.MemberBean">
<jsp:setProperty property="*" name="mbean"/>
</jsp:useBean>
<%
MemberDAO mdao = new MemberDAO();
//DB에서 가져온 패스워드를 가져온다
String pass = mdao.getPass(id);
if( mbean.getPass1().equals(pass)){
mdao.updateMember(mbean);
response.sendRedirect("MemberArray.jsp");
// DB의 비번과 입력한 비번이 같으면 mem 테이블 수정
} else {
%>
<script type="text/javascript">
alert("패스워드가 틀렸습니다.");
history.go(-1);
</script>
<%
}
%>
<h2><%=mbean.getId() %> 회원의 정보 수정 하였습니다.</h2>
<%=pass %> 와 입력한 비번:<%= mbean.getPass1() %>
</body>
</html>
- 받아온 id의 비밀번호 반환 코드 : dao
더보기
public String getPass(String id) {
String pass="";
try {
getCon();
String sql = "select pass1 from mem where id = ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if(rs.next()) {
pass = rs.getString(1);
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return pass;
}
- 회원정보 수정 : dao
더보기
public void updateMember(MemberBean mbean) {
try {
getCon();
String sql = "update mem set "
+ "email = ?, tel=?, hobby=?, age=?, info=? "
+ "where id=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, mbean.getEmail());
pstmt.setString(2, mbean.getTel());
pstmt.setString(3, mbean.getHobby());
pstmt.setString(4, mbean.getAge());
pstmt.setString(5, mbean.getInfo());
pstmt.setString(6, mbean.getId());
pstmt.executeUpdate();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
회원탈퇴
- 회원탈퇴 버튼 클릭 시 이동되는 페이지 - MemberDel.jsp
- id를 받아오고 비밀번호를 입력받는다
더보기
<%@page import="bean.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MemberDel</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
%>
<h2>회원삭제</h2>
<form action="DeleteProc.jsp" method="post">
<table>
<tr>
<td>아이디</td>
<td><%=request.getParameter("id") %></td>
</tr>
<tr>
<td>비밀번호</td>
<td>
<input type="password" name="pass1">
</td>
</tr>
<tr>
<td colspan="2">
<input type="hidden" name="id" value="<%=request.getParameter("id")%>">
<input type="submit" value="회원 삭제">
</td>
</tr>
</table>
</form>
<hr>
<button onclick="location.href='MemberArray.jsp'">전체 회원</button>
</body>
</html>
- 회원탈퇴 처리 - DeleteProc.jsp
- 입력받은 비번과 기본 비번이 동일하면 탈퇴처리를 하고 회원전체목록 페이지로 이동한다
더보기
<%@page import="bean.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DeleteProc</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="mbean" class="bean.MemberBean">
<jsp:setProperty name="mbean" property="*"/>
</jsp:useBean>
<%
MemberDAO mdao = new MemberDAO();
String pass = mdao.getPass(mbean.getId()); //기존(DB속) 비번
if(mbean.getPass1().equals(pass)){ //입력한 비번과 기존 비번이 동일하면
mdao.deleteMember(mbean.getId());
response.sendRedirect("MemberArray.jsp"); //성공시 전체목록으로 이동
} else {
%>
<script type="text/javascript">
alert("비밀번호가 틀렸습니다. 탈퇴 실패");
history.go(-1);
</script>
<%
}
%>
</body>
</html>
- 회원 탈퇴 : dao
더보기
public void deleteMember(String id) {
getCon();
try {
String sql = "delete from mem where id=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.executeUpdate();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
- 회원정보 빈 - MemberBean.java
더보기
package bean;
public class MemberBean {
private String id;
private String pass1;
private String pass2;
private String email;
private String tel;
private String hobby;
private String job;
private String age;
private String info;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPass1() {
return pass1;
}
public void setPass1(String pass1) {
this.pass1 = pass1;
}
public String getPass2() {
return pass2;
}
public void setPass2(String pass2) {
this.pass2 = pass2;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
- DB 연결을 위한 DAO - MemberDAO.java
더보기
package bean;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;
public class MemberDAO {
String id = "아이디";
String pw= "비번";
String url="jdbc:oracle:thin:@localhost:1521/xepdb1";
Connection con; //DB에 접근할 수 있도록 하는 객체
PreparedStatement pstmt; //쿼리 실행 객체
ResultSet rs; //DB 테이블 결과를 리턴받아 자바에 저장해주는 객체
public void getCon() {
try {
//1. 해당 데이터 베이스를 사용한다고 선언(로딩)
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.해당 데이터 베이스에 접속
con = DriverManager.getConnection(url, id, pw);
}catch(Exception e) {
e.printStackTrace();
}
}
//회원 가입
public void insertMember(MemberBean memBean) {
try {
getCon();
String sql = "insert into Mem values(?,?,?,?,?,?,?,?)";
pstmt = con.prepareStatement(sql);
//4. 바인드변수에 맞게 데이터를 맵핑
pstmt.setString(1, memBean.getId());
pstmt.setString(2, memBean.getPass1());
pstmt.setString(3, memBean.getEmail());
pstmt.setString(4, memBean.getTel());
pstmt.setString(5, memBean.getHobby());
pstmt.setString(6, memBean.getJob());
pstmt.setString(7, memBean.getAge());
pstmt.setString(8, memBean.getInfo());
pstmt.executeUpdate();
con.close(); //자원반납
} catch (Exception e) {
e.printStackTrace();
}
}
//전체 회원 목록 출력
public Vector<MemberBean> allSelectMember() {
Vector<MemberBean> getlist = new Vector<>();
try {
getCon();
String sql = "select * from mem";
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
//쿼리 실행 시킨 결과를 리턴해서 자바 객체에저장
while(rs.next()) { //저장된 데이터만큼까지 반복문을 돌림
//컬럼으로 나눠진 데이터를 빈클래스에 저장해야함
MemberBean bean = new MemberBean();
bean.setId(rs.getString(1));
bean.setPass1(rs.getString(2));
bean.setEmail(rs.getString(3));
bean.setTel(rs.getString(4));
bean.setHobby(rs.getString(5));
bean.setJob(rs.getString(6));
bean.setAge(rs.getString(7));
bean.setInfo(rs.getString(8));
getlist.add(bean);
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return getlist;
}
// 특정 회원 정보 조회
public MemberBean oneMember(String id) {
MemberBean bean = new MemberBean();
try {
getCon();
String sql = "select * from mem where id= ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if(rs.next()) {
bean.setId(rs.getString(1));
bean.setPass1(rs.getString(2));
bean.setEmail(rs.getString(3));
bean.setTel(rs.getString(4));
bean.setHobby(rs.getString(5));
bean.setJob(rs.getString(6));
bean.setAge(rs.getString(7));
bean.setInfo(rs.getString(8));
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return bean;
}
//받아온 id의 패스워드 반환
public String getPass(String id) {
String pass="";
try {
getCon();
String sql = "select pass1 from mem where id = ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if(rs.next()) {
pass = rs.getString(1);
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return pass;
}
//회원정보 수정하기
public void updateMember(MemberBean mbean) {
try {
getCon();
String sql = "update mem set "
+ "email = ?, tel=?, hobby=?, age=?, info=? "
+ "where id=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, mbean.getEmail());
pstmt.setString(2, mbean.getTel());
pstmt.setString(3, mbean.getHobby());
pstmt.setString(4, mbean.getAge());
pstmt.setString(5, mbean.getInfo());
pstmt.setString(6, mbean.getId());
pstmt.executeUpdate();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//회원 탈퇴
public void deleteMember(String id) {
getCon();
try {
String sql = "delete from mem where id=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.executeUpdate();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
728x90
728x90