쌍용교육(JAVA)/JSP

쌍용교육 -JSP수업 50~51일차 member

구 승 2024. 4. 30. 14:03

table.sql 

create table smember(
num number not null,
id varchar2(12) unique not null,
name varchar2(30) not null,
passwd varchar2(12) not null,
email varchar2(50) not null,
phone varchar2(15),
reg_date date default sysdate not null,
constraint smember_pk primary key (num)
);
create sequence smember_seq;

main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원관리 메인</title>
<!-- href="/ch03_JSP/css/style.css" ==> 컨텍스트 경로 -->
<!-- <link rel="stylesheet" href="/ch03_JSP/css/style.css" type="text/css"> -->
 <!-- request.getContextPath() 를 명시해주면 주소의 이름이 바뀌더라도 문제가 없음 -->
<link rel="stylesheet" href="<%= request.getContextPath() %>/css/style.css" type="text/css">
</head>
<body>
<%
	String user_id = (String)session.getAttribute("user_id");
%>
<div class="page-main">
	<h1>회원관리 메인</h1>
	<div class = "align-right">
	<%
		if(user_id == null){//로그인이 되지 않은 경우
	%>
		<a href="registerUserForm.jsp">회원가입</a>
		<a href="loginForm.jsp">로그인</a>
	<%
		}else{//로그인이 된 경우
	%>
		<a href="myPage.jsp">MyPage</a>
		[<b><%= user_id %></b>님 로그인 중]
		<a href="logout.jsp">로그아웃</a>
	<%
		}
	%>
	</div>
</div>
</body>
</html>

kr.member.vo(폴더)

   MemberVO.java -> 이클립스가 이름을 인식못하는 버그가 생겨서

   MemberInfoVO.java 로 이름 수정

package kr.member.vo;

import java.sql.Date;

public class MemberInfoVO {
	//프로퍼티  
	private int num;
	private String id;
	private String name;
	private String passwd;
	private String email;
	private String phone;
	private Date reg_date;
	
	//비밀번호 체크
	public boolean isCheckedPassword(String userPasswd) {
		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;
	}
	
}

kr.member.dao(폴더)

  MemberDAO.java

package kr.member.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import kr.member.vo.MemberInfoVO;
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(MemberInfoVO member) throws Exception{
		Connection conn = null;
		PreparedStatement pstmt = null;
		String sql = null;
		try {
			//커넥션풀로부터 거넥션을 할당
			conn = DBUtil.getConnection();
			//SQL문 작성
			sql = "INSERT INTO smember (num,id,name,passwd,email,phone)"
					+ "VALUES (smember_seq.nextval,?,?,?,?,?)";
			//PreparedStatement 객체 생성
			pstmt=conn.prepareStatement(sql);
			pstmt.setString(1, member.getId());
			pstmt.setString(2, member.getName());
			pstmt.setString(3, member.getPasswd());
			pstmt.setString(4, member.getEmail());
			pstmt.setString(5, member.getPhone());
			//SQL문 실행
			pstmt.executeUpdate();
			
		}catch(Exception e) {
			throw new Exception(e);
		}finally {
			//자원 정리
			DBUtil.executeClose(null, pstmt, conn);
		}

	}
	//회원상세정보
	public MemberInfoVO getMember(int num) throws Exception{
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		MemberInfoVO member = null;
		String sql = 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();
			
			if(rs.next()) {
				member = new MemberInfoVO();
				member.setNum(rs.getInt("num"));
				member.setId(rs.getString("id"));
				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;
	}
	
	//아이디 중복 체크, 로그인 체크(MemberInfoVO가 전달되면 아이디가 중복된 것. MemberInfoVO가 null이라면 중복이 아닌것)
	public MemberInfoVO checkMember(String id) throws Exception{
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		MemberInfoVO member = null;
		String sql = 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()) {
				member = new MemberInfoVO();
				member.setId(rs.getString("id"));
				member.setNum(rs.getInt("num"));
				member.setPasswd(rs.getString("passwd"));
			}else {
				
			}
		}catch(Exception e) {
			throw new Exception(e);
		}finally {
			DBUtil.executeClose(rs, pstmt, conn);
		}
		
		return member; 
	}
	
	//회원정보 수정
	public void updateMember(MemberInfoVO 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=?";
			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=?";
			pstmt = conn.prepareStatement(sql);
			
			//?에 데이터 바인딩
			pstmt.setInt(1, num);
			//SQL문 실행
			pstmt.executeUpdate();
		}catch(Exception e) {
			throw new Exception(e);
		}finally {
			//자원정리
			DBUtil.executeClose(null, pstmt, conn);
		}
		
	}

}

ch03_JSP => META-INF 

context.xml
0.00MB

username="C##user01"인것중C##을 삭제

위에 파일을 토대로 kr.util => -DBUtil.java 코드 수정

package kr.util;

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

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;



public class DBUtil {	
	//Connection 객체를 생성해서 반환
	public static Connection getConnection() throws Exception{
		Context initCtx = new InitialContext();
		DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/xe");
		
		return ds.getConnection();
		
	}
	//자원정리
	public static void executeClose(ResultSet rs, PreparedStatement pstmt,
							Connection conn) {
		if(rs!=null)try {rs.close();}catch(SQLException e) {}
		if(pstmt!=null)try {pstmt.close();}catch(SQLException e) {}
		if(conn!=null)try {conn.close();}catch(SQLException e) {}
	}
		
	
}

 

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="<%= request.getContextPath() %>/css/style.css" type="text/css">
<script type="text/javascript" src="<%= request.getContextPath() %>/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	//아이디 중복 체크 결과 -> 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()},
			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','black');
				}else{
					count = 0;
					alert('id중복체크 오류');
				}
			},
			error:function(){
				count = 0;
				alert('네트워크 오류 발생');
			}
		});
		
	});//end of click
	
	//아이디 입력창에 데이터를 입력하면 중복체크 관련 정보 초기화(ID중복확인을 누른뒤 그 상태로 다른 값 입력시 내용이 사라짐)
	$('#register_form #id').keydown(function(){
		count = 0;
		$('#id_signed').text('');
	});//end of keydown
	
	$('#register_form').submit(function(){
		const items = document.querySelectorAll('.input-check');
		for(let i=0;i<items.length;i++){
			if(items[i].value.trim()==''){
				const label  = document.querySelector('label[for="'+items[i].id+'"]');
				alert(label.textContent + '항목은 필수 입력');
				items[i].value = '';
				items[i].focus();
				return false;
			}
			if(items[i].id =='id'&& count ==0){
				alert('아이디 중복체크 필수');
				return false;
			}
		}
	});
});
</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" class="input-check">
				<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" 
				  class="input-check" maxlength="10">
			</li>
			<li>
				<label for ="passwd">비밀번호</label>
				<input type="password" name="passwd" id="passwd" 
				  class="input-check" maxlength="12">
			</li>
			<li>
				<label for ="email">이메일</label>
				<input type="email" name="email" id="email" 
				  class="input-check" 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>

registerUser.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import ="kr.member.dao.MemberDAO" %>
<%
	//전송된 데이터 인코딩 타입 지정
	request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="member" class="kr.member.vo.MemberInfoVO"/>
<%-- request로부터 전송된 데이터를 읽어들여 자바빈에 저장 --%>
<jsp:setProperty property="*" name="member"/>
<%
	MemberDAO dao = MemberDAO.getInstance();
	dao.insertMember(member);
%> 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입</title>
<link rel="stylesheet" href="<%= request.getContextPath() %>/css/style.css" type="text/css">
</head>
<body>
<div class="page-main">
	<h1>회원가입 완료</h1>
	<div class="result-display">
		<div class="align-center">
			회원가입 성공!<p>
			<button onclick="location.href='main.jsp'">홈으로</button>
		</div>
	</div>
</div>
</body>
</html>

comfirmId.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.MemberInfoVO" %>

<%
	//전송된 데이터 인코딩 타입 지정
	request.setCharacterEncoding("utf-8");
	//전송된 데이터 반환
	String id = request.getParameter("id");
	
	MemberDAO dao = MemberDAO.getInstance();
	MemberInfoVO member = dao.checkMember(id);
	if(member !=null){//아이디 중복
%>
	{"result":"idDuplicated"}
<%		
	}else{//아이디 미중복
%>
	{"result":"idNotFound"}
<%
	}
			
%>

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="<%= request.getContextPath() %>/css/style.css" type="text/css">
<script type="text/javascript" src="<%= request.getContextPath() %>/js/jquery-3.7.1.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 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import ="kr.member.dao.MemberDAO" %>
<%@ page import ="kr.member.vo.MemberInfoVO" %>
<%
	//전송된 데이터 인코딩 타입 지정
	request.setCharacterEncoding("utf-8");
	//전송된 데이터 반환
	String id = request.getParameter("id");
	String passwd = request.getParameter("passwd");
	
	MemberDAO dao = MemberDAO.getInstance();
	//id 존재 여부 확인
	MemberInfoVO member = dao.checkMember(id);
	boolean check = false;
	
	if(member!=null){//id 존재
		//사용자가 입력한 비밀번호와 table에 저장된 비밀번호 일치 여부 확인
		check = member.isCheckedPassword(passwd);	
	}
	if(check){//인증성공 (check가 true일 떄)
		//로그인 처리
		session.setAttribute("user_num", member.getNum());
		session.setAttribute("user_id", id); 
		
		//main.jsp로 리다이렉트
		response.sendRedirect("main.jsp");
	}else{//인증실패
%>
	<script type = "text/javascript">
		alert('아이디 또는 비밀번호가 불일치합니다.');
		history.go(-1);
	</script>
<%		
	}
	
%>

logout.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//로그아웃
	session.invalidate();
	response.sendRedirect("main.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.MemberInfoVO" %>
<%
	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="<%= request.getContextPath() %>/css/style.css" type="text/css">
</head>
<body>
<%
	MemberDAO dao = MemberDAO.getInstance();
	MemberInfoVO member = dao.getMember(user_num);
	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.MemberInfoVO" %>
<%
	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="<%= request.getContextPath() %>/css/style.css" type="text/css">
<script type="text/javascript" src="<%= request.getContextPath() %>/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	$('#modify_form').submit(function(){
		const items = document.querySelectorAll('.input-check');
		for(let i=0;i<items.length;i++){
			if(items[i].value.trim()==''){
				const label  = document.querySelector('label[for="'+items[i].id+'"]');
				alert(label.textContent + '항목은 필수 입력');
				items[i].value = '';
				items[i].focus();
				return false;
			}
		}
	});
});
</script>
</head>
<body>
<%
	MemberDAO dao = MemberDAO.getInstance();
	MemberInfoVO member = dao.getMember(user_num);
	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() %>"
				  class="input-check" maxlength="10">
			</li>
			<li>
				<label for ="passwd">비밀번호</label>
				<!-- 비밀번호는 변경하기전에 보이면 안되기때문에 넣지않음 -->
				<input type="password" name="passwd" id="passwd" 
				  class="input-check" maxlength="12">
			</li>
			<li>
				<label for ="email">이메일</label>
				<input type="email" name="email" id="email"
				 value="<%= member.getEmail() %>"
				  class="input-check" maxlength="50">
			</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");
	if(user_num==null){//로그인이 되지 않은 경우
		response.sendRedirect("loginForm.jsp");
	}else{//로그인이 된 경우
		//전송된 데이터 인코딩 타입 지정
		request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="member" class="kr.member.vo.MemberInfoVO"/>
<jsp:setProperty property="*" name="member"/>
<%
	//num이 전송되지 않았기 때문에 session에 저장된 num을 사용
	member.setNum(user_num);

	MemberDAO dao = MemberDAO.getInstance();
	dao.updateMember(member);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원정보수정 완료</title>
<link rel="stylesheet" href="<%= request.getContextPath() %>/css/style.css" type="text/css">
</head>
<body>
<div class="page-main">
	<h1>회원정보 수정완료</h1>
	<div class="result-display">
		<div class="align-center">
			회원정보수정 완료!<p>
			<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="<%= request.getContextPath() %>/css/style.css" type="text/css">
<script type="text/javascript" src="<%= request.getContextPath() %>/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript">
$(function(){
	//이벤트 연결
	$('#delete_form').submit(function(){
		if($('#id').val().trim()==''){
			alert('아이디를 입력하세요');
			$('#id').val('').focus();
			return false;
		}
		if($('#passwd').val().trim()==''){
			alert('비밀번호를 입력하세요');
			$('#passwd').val('').focus();
			return false;
		}
		if($('#cpasswd').val().trim()==''){
			alert('비밀번호 확인을 입력하세요');
			$('#cpasswd').val('').focus();
			return false;
		}
		//비밀번호와 비밀번호 확인 일치 여부 체크
		if($('#passwd').val()!=$('#cpasswd').val()){
			alert('비밀번호와 비밀번호 확인이 불일치합니다.');
			$('#cpasswd').val('').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="passwd">비밀번호 확인</label>
				<input type="password" 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>
<%
	
}
%>

deleteUser.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import ="kr.member.dao.MemberDAO" %>
<%@ page import ="kr.member.vo.MemberInfoVO" %>
<%
	String user_id = (String)session.getAttribute("user_id");
	if(user_id==null){//로그인이 되지 않은 경우
		response.sendRedirect("loginForm.jsp");
	}else{//로그인이 된 경우
	//전송된 데이터 인코딩 타입 지정
	request.setCharacterEncoding("utf-8");
	//전송된 데이터를 반환
	String id = request.getParameter("id");
	String passwd = request.getParameter("passwd");
	
	//id, 비밀번호 일치 여부 체크
	MemberDAO dao = MemberDAO.getInstance();
	MemberInfoVO member = dao.checkMember(id);
	boolean check = false;
	//아이디가 등록되어 있고 로그인한 아이디와 일치할 경우
	if(member!=null && user_id.equals(id)){ //user_id=> 세션에 저장되어있는 id. equals(id)=> 내가 입력한 id
		//비밀번호 일치 여부 체크
		check = member.isCheckedPassword(passwd);
	}
	if(check){//인증 성공
		//회원 정보 삭제
		dao.deleteMember(member.getNum());
		//로그아웃
		session.invalidate();
	
%>		
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 탈퇴</title>
<link rel="stylesheet" href="<%= request.getContextPath() %>/css/style.css" type="text/css">
</head>
<body>
<div class="page-main">
	<h1>회원 탈퇴 완료</h1>
	<div class="result-display">
		회원탈퇴가 완료되었습니다.<p>
		<button onclick="location.href='main.jsp'">홈으로</button>
	</div>
</div>
</body>
</html>
<%
		}else{
%>
	<script type="text/javascript">
		alert('아이디 또는 비밀번호가 불일치합니다.');
		history.go(-1);
	</script>
<%	
		}
	}
%>

 

실행영상