학원/servlet jsp

11.14일 (model-1 DB연동)

쿠룽지 2023. 11. 15. 00:27
728x90
반응형

 

 

 

각 상황에 맞는 form(jsp) 작성,

MemberDAO/ VO 그때그때 내용 추가하는 방식으로 학습했음

 

 

 

ch05-ServletMain

webapp

ch17-member

registerUser.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.member.dao.MemberDAO" %>
<%@ page import="kr.member.vo.MemberVO" %>
<%
	//전송된 데이터 인코딩 처리 (post 방식일 땐 무조건 넣어야함)
	request.setCharacterEncoding("utf-8");
	
	//데이터를 받고 자바빈에 담아서 전달
	//1) 자바빈(VO) 생성 후 담기
	/* 이 긴 문장을 액션 태그를 사용하면 2줄로 표현 가능
	MemberVO member = new MemberVO();
	member.setId(request.getParameter("id"));
	member.setName(request.getParameter("name"));
	member.setPasswd(request.getParameter("passwd"));
	member.setEmail(request.getParameter("email"));
	member.setPhone(request.getParameter("phone"));*/
%>

<%-- 액션태그를 이용해서 자바빈(VO) 객체 생성 --%>
<jsp:useBean id="member" class="kr.member.vo.MemberVO"/> <%--id가 참조변수(식별자)/ class에 명시할 때에도 풀네임으로 명시해야함 --%>
<%-- request로부터 전송된 데이터를 읽어들여 자바빈에 저장 (일부러 param과 자바빈의 property값 일치시켰음)--%>
<jsp:setProperty property="*" name="member"/> 

<%	
	//넘겨주기 (MemberDAO 객체 생성 후 넘겨줄건데 private이기 때문에 memberDAO dao = new MemberDAO()라고 호출하지 못함)
	//MemberDAO 객체 생성
	MemberDAO dao = MemberDAO.getInstance();
	dao.insertMember(member); // insertMember안에서 멤버변수를 활용할 수 있게 전달
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="page-main">
	<h1>회원가입 완료</h1>
	<div class="result-display">
		<div class="align-center">
			회원가입 성공!<br>
			<button onclick="location.href='main.jsp'">홈으로</button>
		</div>
	</div>
</div>
</body>
</html>

 

 


 

 

confirmId.jsp (아이디 중복 체크)

<%@ page language="java" contentType="text/plain; charset=UTF-8"
    pageEncoding="UTF-8" trimDirectiveWhitespaces="true"%>
<%@ page import="kr.member.dao.MemberDAO" %>
<%@ page import="kr.member.vo.MemberVO" %>
<%
	//전송된 데이터 인코딩 처리
	request.setCharacterEncoding("utf-8");
	//전송된 데이터 반환
	String id = request.getParameter("id");
	
	//DAO 객체 생성
	MemberDAO dao = MemberDAO.getInstance();
	MemberVO member = dao.checkMember(id);
	
	//id를 select해서 검색결과값이 null인거니까 미중복 / null이 아니면 중복
	if(member!=null){//아이디 중복
%>
	{"result":"idDuplicated"}
<%		
	}else{//아이디 미중복
%>
	{"result":"idNotFound"}
<%		
	}
%>

 

 

 


 

 

 

registerUserForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입</title>
<link rel="stylesheet" href="style.css">
<script type="text/javascript" src="<%= request.getContextPath() %>/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	//변수 명시해서 정보처리(id중복체크 결과-submit할 때 참조하게끔)
	//아이디 중복 체크 결과 -> 0: 아이디 중복 체크 미실시, 아이디 중복 / 1: 아이디 미중복
	let count = 0;
	
	//이벤트 연결 
	$('#confirm_id').click(function(){
		if($('#id').val().trim()==''){
			alert('아이디를 입력하세요');
			$('#id').val('').focus();
			return;
		}
		
		//서버와 통신
		$.ajax({
			url:'confirmId.jsp',
			type:'post',
			data:{id:$('#id').val()}, //id값 읽어오기
			dataType:'json',
			success:function(param){
				if(param.result == 'idDuplicated'){
					count = 0;
					$('#id_signed').text('아이디 중복').css('color','red');
					$('#id').val('').focus();
				}else if(param.result == 'idNotFound'){
					count = 1;
					$('#id_signed').text('사용 가능 아이디').css('color','green');
				}else{
					count = 0;
					alert('아이디 중복체크 오류 발생');
				}
			},
			error:function(){
				count = 0;
				alert('네트워크 오류 발생');
			}
		});
	}); //end of click
	
	//아이디 입력창에 데이터를 입력하면 중복체크 관련 정보 초기화 (keydown 이벤트)
	$('#register_form #id').keydown(function(){
		count = 0;
		$('#id_signed').text('');
	});//end of keydown
	
	$('#register_form').submit(function(){ //필수입력+중복체크
		if($('#id').val().trim()==''){
			alert('아이디를 입력하세요');
			$('#id').val('').focus();
			return false;
		}
		if(count==0){
			alert('아이디 중복체크 필수');
			return false;
		}
		if($('#name').val().trim()==''){
			alert('이름을 입력하세요.');
			$('#name').val('').focus();
			return false;
		}
		if($('#passwd').val().trim()==''){
			alert('비밀번호를 입력하세요.');
			$('#passwd').val('').focus();
			return false;
		}
		if($('#email').val().trim()==''){
			alert('이메일을 입력하세요.');
			$('#email').val('').focus();
			return false;
		}
		//phone은 not null조건이 없기 때문에 안해도 됨
	});
	
});
</script>
</head>
<body>
<div class="page-main">
	<h1>회원가입</h1>
	<form action="registerUser.jsp" method="post" id="register_form">
		<ul>
			<li>
				<label for="id">아이디</label>
				<input type="text" name="id" id="id"
				  size="7" maxlength="12" autocomplete="off">
				<input type="button" id="confirm_id" 
				                                value="ID중복체크">
				<span id="id_signed"></span>                                  
			</li>
			<li>
				<label for="name">이름</label>
				<input type="text" name="name" id="name"
				   maxlength="10">
			</li>
			<li>
				<label for="passwd">비밀번호</label>
				<input type="password" name="passwd" id="passwd"
				   maxlength="12">
			</li>
			<li>
				<label for="email">이메일</label>
				<input type="email" name="email" id="email"
				  maxlength="50">
			</li>
			<li>
				<label for="phone">전화번호</label>
				<input type="text" name="phone" id="phone"
				  maxlength="15">
			</li>
		</ul>
		<div class="align-center">
			<input type="submit" value="등록">
			<input type="button" value="홈으로"
			  onclick="location.href='main.jsp'">
		</div>
	</form>
</div>
</body>
</html>

 

 


 

 

 

loginForm.jsp (로그인폼)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 폼</title>
<link rel="stylesheet" href="style.css">
<script type="text/javascript" src="<%= request.getContextPath() %>/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
	//이벤트 연결
	$('#login_form').submit(function(){
		if($('#id').val().trim()==''){
			alert('아이디를 입력하세요');
			$('#id').val('').focus();
			return false;
		}
		if($('#passwd').val().trim()==''){
			alert('비밀번호를 입력하세요');
			$('#passwd').val('').focus();
			return false;
		}
	});
});
</script>
</head>
<body>
<div class="page-main">
	<h1>로그인</h1>
	<form action="login.jsp" method="post" id="login_form">
		<ul>
			<li>
				<label for="id">아이디</label>
				<input type="text" name="id" id="id" maxlength="12">
			</li>
			<li>
				<label for="passwd">비밀번호</label>
				<input type="password" name="passwd" id="passwd" maxlength="12">
			</li>
		</ul>
		<div class="align-center">
			<input type="submit" value="로그인">
			<input type="button" value="홈으로" onclick="location.href='main.jsp'">
		</div>
	</form>
</div>
</body>
</html>

 

 

 


 

 

 

login.jsp (로그인) / +main.jsp 로 리다이렉트

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.member.dao.MemberDAO" %>
<%@ page import="kr.member.vo.MemberVO" %>
<% 
	//전송된 데이터 인코딩 처리
	request.setCharacterEncoding("utf-8");
	//전송된 데이터 반환
	String id = request.getParameter("id");
	String passwd = request.getParameter("passwd");
	
	MemberDAO dao = MemberDAO.getInstance();
	//id 존재 여부 확인 
	MemberVO member = dao.checkMember(id); //member이 null이 아니어야함
	boolean check = false;
	
	if(member!=null){//id 존재
		//사용자가 입력한 비밀번호와 DB에 저장된 비밀번호 일치여부 확인
		check = member.isCheckedPassword(passwd); //일치하면 T 불일치 시 F (check 기본값이 False라 else 안 만들거임)
	}
	
	if(check){ //아이디와 비밀번호 인증 성공 (true)
		//로그인 처리 (session에 로그인 정보를 저장해놓고 판별)
		session.setAttribute("user_num", member.getNum());
		session.setAttribute("user_id", id); //로그인처리된거기 때문에 member.이걸 따로 안해도됨 (해도 되고 안해도 되고)
		//main.jsp로 리다이렉트
		response.sendRedirect("main.jsp");
	}else{//id 또는 비밀번호 인증 실패 (false)
%>
	<script>
		alert('아이디 또는 비밀번호가 불일치합니다.');
		history.go(-1); //home
	</script>
<%		
	}
%>

 

 

 


 

 

logout.jsp (로그아웃) / +main.jsp 로 리다이렉트

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
	//리다이렉트 할거기 때문에 ui필요 없음(별다른 폼없이 session삭제 후 main으로 넘길거라서)
	//로그아웃
	session.invalidate();
	//main.jsp로 리다이렉트
	response.sendRedirect("main.jsp");
%>

 


 

 

myPage.jsp(상세정보)

+로그아웃 상태에서 myPage.jsp 실행하면 로그인폼으로 리다이렉트 (로그인 상태에서 상세정보 보는 창)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.member.dao.MemberDAO" %>
<%@ page import="kr.member.vo.MemberVO" %>
<%
	Integer user_num = (Integer)session.getAttribute("user_num"); // login.jsp에서 user_num/ user_id라고 지정
	if(user_num==null){ //로그인이 되지 않은 경우
		response.sendRedirect("loginForm.jsp");
	}else{//로그인이 된 경우
%>
	<%-- 로그인이 됐을 경우 보여지게 하기 위해서 잘라서 위로 올림 --%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원상세정보</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<%
	MemberDAO dao = MemberDAO.getInstance();
	MemberVO member = dao.getMember(user_num);
	
    //phone이 null일 경우 null출력이 아닌 빈문자열 처리
	if(member.getPhone()==null){
		member.setPhone(""); //null이 아닌 빈문자열 처리
	}
%>
<div class="page-main">
	<h1>회원정보</h1>
	<ul>
		<li>아이디 : <%= member.getId() %></li>
		<li>이름 : <%= member.getName() %></li>
		<li>이메일 : <%= member.getEmail() %></li>
		<li>전화번호 : <%= member.getPhone() %></li>
		<li>가입일 : <%= member.getReg_date() %></li>
	</ul>
	<hr size="1" width="100%" noshade="noshade">
	<div class="align-right">
		<input type="button" value="회원정보수정" onclick="location.href='modifyUserForm.jsp'">
		<input type="button" value="회원탈퇴" onclick="location.href='deleteUserForm.jsp'">
		<input type="button" value="홈으로" onclick="location.href='main.jsp'">
	</div>
</div>
</body>
</html>
<%		
	}
%>

 

 

 


 

 

modifyUserForm.jsp (상세정보 변경)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.member.dao.MemberDAO" %>
<%@ page import="kr.member.vo.MemberVO" %>
<%
	Integer user_num = (Integer)session.getAttribute("user_num");
	if(user_num==null){ //로그인이 되지 않은 경우
		response.sendRedirect("loginForm.jsp");
	}else{ //로그인이 된 경우
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원정보수정</title>
<link rel="stylesheet" href="style.css">
<script type="text/javascript" src="<%= request.getContextPath() %>/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
	//이벤트 연결
	$('#modify_form').submit(function(){
		if($('#name').val().trim()==''){ //공백입력시
			alert('이름을 입력하세요.');
			$('#name').val('').focus();
			return false;
		}
		if($('#passwd').val().trim()==''){
			alert('비밀번호를 입력하세요.');
			$('#passwd').val('').focus();
			return false;
		}
		if($('#email').val().trim()==''){
			alert('이메일을 입력하세요.');
			$('#email').val('').focus();
			return false;
		}
	});
});

</script>
</head>
<body>
<%
	MemberDAO dao = MemberDAO.getInstance();
	MemberVO member = dao.getMember(user_num);
	//null일 경우에는 비어있게 처리
	if(member.getPhone()==null){
		member.setPhone("");
	}
%>
<div class="page-main">
	<h1>회원정보수정</h1>
	<form action="modifyUser.jsp" method="post" id="modify_form">
		<ul>
			<li>
				<label for="name">이름</label>
				<input type="text" name="name" id="name" value="<%= member.getName() %>" maxlength="10">
			</li>
			<li>
				<label for="passwd">비밀번호</label>
				<input type="password" name="passwd" id="passwd" maxlength="12">
			</li>
			<li>
				<label for="email">이메일</label>
				<input type="text" name="email" id="email" value="<%= member.getEmail() %>">
			</li>
			<li>
				<label for="phone">전화번호</label>
				<input type="text" name="phone" id="phone" value="<%= member.getPhone() %>" maxlength="15">
			</li>
		</ul>
		
		<div class="align-center">
			<input type="submit" value="수정">
			<input type="button" value="홈으로" onclick="location.href='main.jsp'">
		</div>
	</form>
</div>
</body>
</html>
<%
	}
%>

이름/ 이메일/ 전화번호/ 비밀번호 만 변경 가능

 

 


 

 

modifyUser.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.member.dao.MemberDAO" %>
<%
	Integer user_num = (Integer)session.getAttribute("user_num"); // num이 있으면 로그인 된거 없으면 로그인 x
	if(user_num==null){ //로그인이 되지 않은 경우
		response.sendRedirect("loginForm.jsp");
	}else{//로그인이 된 경우
		//전송된 데이터 인코딩 처리
		request.setCharacterEncoding("utf-8");
%>    
<jsp:useBean id="member" class="kr.member.vo.MemberVO" /> <%-- 자바빈 객체 생성/ id가 참조변수 역할 --%>
<jsp:setProperty name="member" property="*" />
<%
	//num이 전송되지 않았기 때문에 session에 저장된 num을 사용 (memberVO에 없기 때문에 별도로 담아줘야함)
	member.setNum(user_num); //num 빼냈으니 하나의 레코드에 접근해서 update 가능해짐
	
	MemberDAO dao = MemberDAO.getInstance();
	dao.updateMember(member);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원정보수정 완료</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="page-main">
	<h1>회원정보수정 완료</h1>
	<div class="result-display">
		<div class="align-center">
			회원정보수정 완료<br>
			<button onclick="location.href='myPage.jsp'">MyPage</button>
		</div>
	</div>
</div>
</body>
</html>
<%
	}
%>

 

 

 


 

 

deleteUserForm.jsp (회원탈퇴폼)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	Integer user_num = (Integer)session.getAttribute("user_num");
	if(user_num==null){ //로그인이 되지 않은 경우
		response.sendRedirect("loginForm.jsp");
	}else{ //로그인된 경우
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원탈퇴 폼</title>
<link rel="stylesheet" href="style.css">
<script type="text/javascript">
window.onload = function(){
	let form = document.getElementById('delete_form');
	//이벤트 연결
	form.onsubmit=function(){
		let id = document.getElementById('id');
		if(id.value.trim()==''){ // 순수 자바스크립트기 때문에 val이 아닌 value라고 하는 것
			alert('아이디를 입력하세요');
			id.value = '';
			id.focus();
			return false;
		}
		let passwd = document.getElementById('passwd');
		if(passwd.value.trim()==''){
			alert('비밀번호를 입력하세요');
			passwd.value = '';
			passwd.focus();
			return false;
		}
		//비밀번호 확인
		let cpasswd = document.getElementById('cpasswd');
		if(cpasswd.value.trim()==''){
			alert('비밀번호 확인을 입력하세요');
			cpasswd.value = '';
			cpasswd.focus();
			return false;
		}
		//비밀번호와 비밀번호확인 일치 여부 체크
		if(passwd.value != cpasswd.value){
			alert('비밀번호와 비밀번호 확인이 불일치합니다.');
			cpasswd.value = ''; //비밀번호 확인 초기화
			cpasswd.focus();
			return false;
		}
	};
};
</script>
</head>
<body>
<div class="page-main">
	<h1>회원탈퇴</h1>
	<form id="delete_form" action="deleteUser.jsp" method="post">
	<ul>
		<li>
			<label for="id">아이디</label>
			<input type="text" name="id" id="id" maxlength="12">
		</li>
		<li>
			<label for="passwd">비밀번호</label>
			<input type="password" name="passwd" id="passwd" maxlength="12">
		</li>
		<li>
			<label for="cpasswd">비밀번호 확인</label>
			<input type="password" name="cpasswd" id="cpasswd" maxlength="12">
		</li>
	</ul>
	<div class="align-center">
		<input type="submit" value="회원탈퇴">
		<input type="button" value="홈으로" onclick="location.href='main.jsp'">
	</div>
	</form>
</div>
</body>
</html>
<%
	}
%>

 

 

 


 

 

MemberDAO 

package kr.member.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import kr.member.vo.MemberVO;
import kr.util.DBUtil;

public class MemberDAO {
	/*
	 * 싱글턴 패턴은 생성자를 private으로 지정해서 외부에서 호출할 수 없도록
	 * 처리하고 static 메서드를 호출해서 객체가 한 번만 생성되고 생성된 객체를
	 * 공유할 수 있도록 처리하는 방식을 의미 
	 */
	private static MemberDAO instance = new MemberDAO();
	
	public static MemberDAO getInstance() {
		return instance;
	}
	
	private MemberDAO() {}
	
	//회원가입
	public void insertMember(MemberVO member)throws Exception{ 
		Connection conn = null;
		PreparedStatement pstmt = null;
		String sql = null;
		
		try {
			//커넥션 풀로부터 커넥션 할당받아서 1~2단계는 신경안써도 됨
			//커넥션풀로부터 커넥션을 할당
			conn = DBUtil.getConnection(); //1~2단계 끝
			
			//SQL문 작성
			sql = "INSERT INTO smember (num,id,name,passwd,email,phone) VALUES (smember_seq.nextval,?,?,?,?,?)"; //reg_date는 default값이 있어서 명시 x
			
			//PreparedStatement 객체 생성
			pstmt = conn.prepareStatement(sql);
			
			//?에 데이터 바인딩
			pstmt.setString(1, member.getId()); //member에 넣었기 때문에 접근해서 빼내야함
			pstmt.setString(2, member.getName());
			pstmt.setString(3, member.getPasswd());
			pstmt.setString(4, member.getEmail());
			pstmt.setString(5, member.getPhone());
			
			//4단계 : sql문장 실행
			pstmt.executeUpdate();
			
		}catch(Exception e) { 
			throw new Exception(e); //원래 발생한 예외 문구 던지기
		}finally {
			DBUtil.executeClose(null, pstmt, conn); 
		}
	}
	/*
	 * 메서드를 통해 동작시킬 때 예외 발생 시 콘솔에는 에러가 뜨는데 화면엔 안뜸(정상작동된 것처럼 보이게 함)
	 * 그래서 에러 페이지가 전송되게 만들어야 하는데 그럼 catch가 없어야함
	 * catch가 없을 시 예외가 발생하게 되면 catch쪽으로 갈 수 없으니까 에러 페이지가 전송됨
	 * 
	 * catch를 아예 안쓰거나 catch를 던지면 됨
	 */
	
	
	//회원상세정보
	public MemberVO getMember(int num)throws Exception{ //num(pk)로 정보를 읽고 MemberVO에 담는 것
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		String sql = null;
		MemberVO member = null;
		
		try {
			//커넥션풀로부터 커넥션을 할당
			conn = DBUtil.getConnection();
			//SQL문 작성
			sql = "SELECT * FROM smember WHERE num=?";
			//PreparedStatement 객체 생성
			pstmt = conn.prepareStatement(sql);
			//?에 데이터 바인딩
			pstmt.setInt(1, num);
			//SQL문 실행
			rs = pstmt.executeQuery();
			//pk로 1개의 레코드만 빼내기 때문에 if문 (여러개면 while)
			if(rs.next()) {
				member = new MemberVO(); //자바빈 객체 생성
				//아래로 다 명시하고 필요할 때 출력하던가 아님 원하는 것만 넣고 다 출력하던가 상관없는데 그냥 다 명시하고 뽑아내는게 편하다했음
				member.setNum(rs.getInt("num"));
				member.setId(rs.getString("id"));
				member.setPasswd(rs.getString("passwd"));
				member.setName(rs.getString("name"));
				member.setEmail(rs.getString("email"));
				member.setPhone(rs.getString("phone"));
				member.setReg_date(rs.getDate("reg_date"));
			}
		}catch(Exception e) {
			throw new Exception(e);
		}finally {
			DBUtil.executeClose(rs, pstmt, conn);
		}
		return member;
	}
	
	//아이디 중복 체크, 로그인 체크 (같이)
	public MemberVO checkMember(String id)throws Exception{
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		String sql = null;
		MemberVO member = null; //여기다 넣고 반환할거라서
		
		try {
			//커넥션 풀로부터 커넥션을 할당
			conn = DBUtil.getConnection();
			//SQL문 작성
			sql = "SELECT * FROM smember WHERE id=?";
			//PreparedStatement 객체 생성
			pstmt = conn.prepareStatement(sql);
			//?에 데이터 바인딩
			pstmt.setString(1, id);
			//SQL문 실행
			rs = pstmt.executeQuery();
			if(rs.next()) { //행이 있으면 데이터를 넘겨줌 (id 중복 시)
				member = new MemberVO(); //자바빈(VO) 객체 생성
				member.setId(rs.getString("id"));
				member.setNum(rs.getInt("num"));
				member.setPasswd(rs.getString("passwd"));
			}//else는 없음 (MemberVO member = null가 있기 때문에 행이 없으면 null을 반환)
		}catch(Exception e) {
			throw new Exception(e); //예외를 던져야 예외발생 시 에러페이지가 보임
		}finally {
			DBUtil.executeClose(rs, pstmt, conn);
		}
		return member;
	}
	
	
	//회원정보수정
	public void updateMember(MemberVO member)throws Exception{
		Connection conn = null;
		PreparedStatement pstmt = null;
		String sql = null;
		
		try {
			//커넥션풀로부터 커넥션을 할당
			conn = DBUtil.getConnection();
			//SQL문 작성
			sql = "UPDATE smember SET name=?,passwd=?,email=?,phone=? WHERE num=?";
			//PreparedStatement 객체 생성
			pstmt = conn.prepareStatement(sql);
			
			//?에 데이터 바인딩
			pstmt.setString(1, member.getName());
			pstmt.setString(2, member.getPasswd());
			pstmt.setString(3, member.getEmail());
			pstmt.setString(4, member.getPhone());
			pstmt.setInt(5, member.getNum());
			
			//SQL문 실행
			pstmt.executeUpdate();
			
		}catch(Exception e) {
			throw new Exception(e);
		}finally{
			DBUtil.executeClose(null, pstmt, conn);
		}
	}
	
	//회원탈퇴(회원정보삭제)
	public void deleteMember(int num)throws Exception{
		Connection conn = null;
		PreparedStatement pstmt = null;
		String sql = null;
		
		try {
			//커넥션풀로부터 커넥션을 할당
			conn = DBUtil.getConnection();
			//SQL문 작성
			sql = "DELETE FROM smember WHERE num=?";
			//PreparedStatement 객체 생성
			pstmt = conn.prepareStatement(sql);
			//?에 데이터 바인딩
			pstmt.setInt(1, num);
			//SQL문 실행
			pstmt.executeUpdate();
		}catch(Exception e) {
			throw new Exception(e);
		}finally {
			DBUtil.executeClose(null, pstmt, conn);
		}
	}
	
}

 

 


 

MemberVO

package kr.member.vo;

import java.sql.Date;

//자바빈 : 자바와 데이터베이스가 연동할 때 데이터를 보관하고 관리하는 클래스
//VO : value Object
//DTO : Data Transfer Object
public class MemberVO {
	//멤버변수(프로퍼티)
	private int num;
	private String id;
	private String name;
	private String passwd;
	private String email;
	private String phone;
	private Date reg_date;
	
	//비밀번호 체크 (db 안 passwd와 사용자가 입력한 passwd 일치여부 체크)
	public boolean isCheckedPassword(String userPasswd) {
		//DB에 저장된 비밀번호	사용자가 입력한 비밀번호
		if(passwd.equals(userPasswd)) {//비밀번호 일치
			return true;
		}
		return false; //비밀번호 불일치
	}
	
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPasswd() {
		return passwd;
	}
	public void setPasswd(String passwd) {
		this.passwd = passwd;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public Date getReg_date() {
		return reg_date;
	}
	public void setReg_date(Date reg_date) {
		this.reg_date = reg_date;
	}
}

 

 

 

아직 미완.. 내일 완성할 듯

 

728x90

 

728x90
반응형