WEB/ERMaster

[ERMaster] shoppingmall - find ID, PW

hvoon 2022. 9. 10. 12:27

 
function find_account(){
	var url="shop.do?command=findAccount";
	var opt="toolbar=no, menubar=no, scrollbars=no, resizable=no, "
					+"width=700, height=500, top=300, left=300";
	window.open(url , "Find Id/Pw", opt);
}
else if(command.equals("findAccount")) ac=new FindAccountAction();
package com.sam.shop.controller.action;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FindAccountAction implements Action {

	@Override
	public void execute(HttpServletRequest request, 
			HttpServletResponse response) 
			throws ServletException, IOException {
		
		String url="member/findAccount.jsp";
		request.getRequestDispatcher(url).forward(request,response);
	}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="css/shopping.css" rel="stylesheet">
</head>
<body>
<center><h2>아이디 찾기 / 비밀번호 찾기</h2></center>
<form>
<table align="center" bgcolor="black" cellspacing="1" width="400">
	<tr align="center" bgcolor="#FDE8FF" height="200">
		<td width="230"><h3>아이디 찾기</h3><br>
			<input type="button" class="submit" value="이동" 
				onClick="location.href='shop.do?command=findIdForm'">
		</td>
		<td width="230"><h3>비밀번호 찾기</h3><br>
			<input type="button"  class="submit" value="이동" 
				onClick="location.href='shop.do?command=findPwForm'">
		</td>
	</tr>
</table>
</form>
</body>
</html>

아이디 찾기

else if(command.equals("findIdForm")) ac=new FindIdFormAction();
package com.sam.shop.controller.action;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FindIdFormAction implements Action {

	@Override
	public void execute(HttpServletRequest request, 
			HttpServletResponse response) 
			throws ServletException, IOException {

		String url="member/findIdForm.jsp";
		request.getRequestDispatcher(url).forward(request,response);
	}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="css/shopping.css" rel="stylesheet">
</head>
<body>
<center><h2>아이디 찾기</h2></center>
<form method="post" name="frm" action="shop.do">
	<input type="hidden" name="command" value="findIdStep1">
	<table align="center" bgcolor="black" cellspacing="1" 
           width="400">
		<tr align="center" bgcolor="#FDE8FF">
			<td width="430"><h3>성명
				<input type="text" name="name" value="${name}">
			</h3></td></tr>
		<tr align="center" bgcolor="#FDE8FF">
			<td width="430"><h3>전화번호
				<input type="text" name="phone" value="${phone}">
			</h3></td></tr>
		<tr align="center" bgcolor="#FDE8FF">
			<td width="430"><h3>
				<input type="submit"value="인증번호 전송"></h3>
					${msg}</td></tr>
	</table>
</form>
</body>
</html>

 

아이디 찾기 실행

else if(command.equals("findIdStep1")) ac=new FindIdStep1Action();
package com.sam.shop.controller.action;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sam.shop.dao.MemberDao;
import com.sam.shop.dto.MemberVO;

public class FindIdStep1Action implements Action {

	@Override
	public void execute(HttpServletRequest request, 
		HttpServletResponse response) 
		throws ServletException, IOException {
// 이 단계에서 인증번호를 해당 휴대폰 번호에 문자로 전송하고
// 다음 페이지에서 사용자에게 입력받도록 화면을 구성
		
		String url="member/findIdForm.jsp";
		String name=request.getParameter("name");
		String phone=request.getParameter("phone");
		
		MemberDao mdao=MemberDao.getInstance();
		MemberVO mvo=mdao.getMemberByname(name,phone);
		// 이름과 전화번호로 검색해서 일치하는 회원이 없으면 
		// 인증번호 입력창으로 이동
		
		request.setAttribute("name", name);
		request.setAttribute("phone", phone);
		
		if(mvo==null) {
			request.setAttribute("msg",
                    "해당이름과 전화번호의 회원이 없습니다");
		}else {
			request.setAttribute("MemberVO", mvo);
			url="member/findIdconfirmNumber.jsp";
		}
		request.getRequestDispatcher(url).forward(request,response);
	}
}

 

MemberDao에 getMemberByname 생성

public MemberVO getMemberByname(String name, String phone) {
	MemberVO mvo=null;
	String sql="select *from member where name=? and phone=?";
	con = Dbman.getConnection();
	try {
		pstmt = con.prepareStatement(sql);
		pstmt.setString(1, name);
		pstmt.setString(2, phone);
		rs=pstmt.executeQuery();
		if(rs.next()) {
			mvo=new MemberVO();
			mvo.setId(rs.getString("id"));
			mvo.setName(rs.getString("name"));
			mvo.setPhone(rs.getString("phone"));
		}
	} catch (SQLException e) {	e.printStackTrace(); 		
	} finally { 	Dbman.close(con, pstmt, rs); }	
	return mvo;
}

 

인증번호 입력 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="css/shopping.css" rel="stylesheet">
</head>
<body>
<h2>ID 찾기</h2>

<form method="post" name="frm" action="shop.do">
	<input type="hidden" name="command" value="findIdStep2">
	<table align="center" bgcolor="black" cellspacing="1" 
				width="400">
		<tr align="center" bgcolor="#FDE8FF">
			<td width="430"><h3>성명: ${name }</h3>
				<input type="hidden" name="name" value="${name}">
			</td></tr>
		<tr align="center" bgcolor="#FDE8FF">
			<td width="430"><h3>전화번호: ${phone }</h3>
				<input type="hidden" name="phone" value="${phone}">
				<input type="hidden" name="id" 
							value="${MemberVO.id }">
			</td></tr>
		<tr align="center" bgcolor="#FDE8FF">
			<td width="430"><h3>인증번호
				<input type="text" name="confirmNum"></h3>
				전송받을 번호를 입력하세요<br>${msg }<br>
				<input type="submit" value="인증번호 확인"></h3>
				</td></tr>
	</table>
</form>
</body>
</html>

 

인증번호 확인

else if(command.equals("findIdStep2")) ac=new FindIdStep2Action();
package com.sam.shop.controller.action;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sam.shop.dto.MemberVO;

public class FindIdStep2Action implements Action {

	@Override
	public void execute(HttpServletRequest request, 
			HttpServletResponse response) 
			throws ServletException, IOException {
		
		String confirmNum=request.getParameter("confirmNum");
		
		MemberVO mvo=new MemberVO();
		mvo.setId(request.getParameter("id"));
		mvo.setName(request.getParameter("name"));
		mvo.setPhone(request.getParameter("phone"));
		
		request.setAttribute("name", mvo.getName());
		request.setAttribute("phone", mvo.getPhone());
		request.setAttribute("id", mvo.getId());
		request.setAttribute("MemberVO", mvo);
		
		String url="member/viewId.jsp";
		if(!confirmNum.equals("0000")) {
			request.setAttribute("msg", "인증번호가 맞지 않습니다");
			url="member/findIdconfirmNumber.jsp";
		}
		request.getRequestDispatcher(url).forward(request,response);
	}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="css/shopping.css" rel="stylesheet">
<script src="member/member.js"></script>
</head>
<body>
<center><h2>아이디 찾기</h2></center>
	<table align="center" bgcolor="black" cellspacing="1" 
           width="400">
		<tr align="center" bgcolor="#FDE8FF">
			<td width="430"><h3>성명: ${name}
			</td></tr>
		<tr align="center" bgcolor="#FDE8FF">
			<td width="430"><h3>전화번호: ${phone }
			</td></tr>
		<tr align="center" bgcolor="#FDE8FF">
			<td width="430">
			<h3>조회한 회원의 아이디는 ${id}입니다</h3>
				<input type="button" class="submit" 
                     value="로그인창으로" onClick="move_login();">
				<input type="button" class="submit" 
                   value="비밀번호찾기"
	               onClick="location.href='shop.do?command=findPwForm$id=${id}'">
			</td></tr>
	</table>
</body>
</html>
function move_login(){
	opener.location.href='shop.do?command=loginForm';
	self.close();
}

비밀번호 찾기

else if(command.equals("findPwForm")) ac=new FindPwFormAction();
package com.sam.shop.controller.action;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FindPwFormAction implements Action {

	@Override
	public void execute(HttpServletRequest request, 
			HttpServletResponse response)
			throws ServletException, IOException {
		String url="member/findPwForm.jsp";
		
		request.setAttribute("id", request.getParameter("id"));
		request.getRequestDispatcher(url).forward(request,response);
	}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="css/shopping.css" rel="stylesheet">
</head>
<body>
<h2>비밀번호 찾기</h2>
<form method="post" name="frm" action="shop.do">
	<input type="hidden" name="command" value="findPwStep1">
	<table align="center" bgcolor="black" cellspacing="1" 
				width="400">
		<tr align="center" bgcolor="#FDE8FF">
			<td width="430"><h3>아이디
				<input type="text" name="id" value="${id}">
			</h3></td></tr>
		<tr align="center" bgcolor="#FDE8FF">
			<td width="430"><h3>성명
				<input type="text" name="name" value="${name }">
			</h3></td></tr>
		<tr align="center" bgcolor="#FDE8FF">
			<td width="430"><h3>전화번호
				<input type="text" name="phone" value="${phone }">
			</h3></td></tr>
		<tr align="center" bgcolor="#FDE8FF">
			<td width="430"><h3>
				<input type="submit" name="phone" 
							value="인증번호 전송">
			</h3>${msg}</td></tr>
		</table>
</form>
</body>
</html>

 

비밀번호 찾기 실행

else if(command.equals("findPwStep1")) ac=new FindPwStep1Action();
package com.sam.shop.controller.action;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sam.shop.dao.MemberDao;
import com.sam.shop.dto.MemberVO;

public class FindPwStep1Action implements Action {

	@Override
	public void execute(HttpServletRequest request, 
			HttpServletResponse response) 
			throws ServletException, IOException {

		// 아이디 이름 전화로 조회한 회원이 있으면 
        // 인증번호 입력창으로
		// 없으면 다시 이름 전화 아이디 입력 창으로 이동
		String id=request.getParameter("id");
		String name=request.getParameter("name");
		String phone=request.getParameter("phone");
		
		MemberDao mdao=MemberDao.getInstance();
		// 아이디 이름 전화번호가 한번에 일치해야 
        // 검색결과가 리턴되는 메서드 생성&호출
		// MemberVO mvo=
		//        mdao.getMemberByNamePhoneId(id,name,phone);
		// 이 메서드는 해당 회원을 검색을 할 수는 있지만 
        // 정보가 틀렸을 때
		// 어떤 항목이 잘못되었는지 알 수가 없음
		// 이름과 전화번호로 검색해서 일치하는 회원이 없으면 
		// 인증번호 입력창으로 이동
		
		String url="member/findPwForm.jsp";
		request.setAttribute("id",id);
		request.setAttribute("name",name);
		request.setAttribute("phone",phone);
		
		MemberVO mvo=mdao.getMember(id);
		if(mvo==null){
			request.setAttribute("msg", "id가 일치하지 않습니다");
		} else if(!name.equals(mvo.getName())){
			request.setAttribute("msg","이름이 일치하지 않습니다");
		} else if(!phone.equals(mvo.getPhone())){
			request.setAttribute("msg","전화번호가 일치하지 않습니다");
		} else {
			url="member/findPwConfirmNumber.jsp"; 
		}
		request.getRequestDispatcher(url).forward(request,response);
	}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href=css/shopping.css rel="stylesheet">
</head>
<body>
<h2>Id/Pw 찾기</h2>
<form method="post" name="frm" action="shop.do">
<input type="hidden" name="command" value="findPwStep2">
<table align="center" bgcolor="black" cellspacing="1" 
			width="400">
	<tr align="center" bgcolor="#FDE8FF"><td width="430">
		<h3>아이디: ${id }</h3>
			<input type="hidden" name="id" 
                        value="${id }"></td></tr>
	<tr align="center" bgcolor="#FDE8FF"><td width="430">
		<h3>성명: ${name }</h3>
			<input type="hidden" name="name" 
						value="${name }"></td></tr>
	<tr align="center" bgcolor="#FDE8FF"><td width="430">
		<h3>전화번호: ${phone }</h3>
			<input type="hidden" name="phone"
						value="${phone }"></td></tr>
	<tr align="center" bgcolor="#FDE8FF"><td width="430">
		<h3>인증번호: ${phone }
			<input type="text" name="confirmNum"></h3>
			전송받을 인증번호를 입력하세요
			<input type="submit" value="인증번호 확인">
			</td></tr>
</table>
</form>
</body>
</html>

 

인증번호 확인 후

else if(command.equals("findPwStep2")) ac=new FindPwStep2Action();
package com.sam.shop.controller.action;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FindPwStep2Action implements Action {

	@Override
	public void execute(HttpServletRequest request, 
			HttpServletResponse response) 
			throws ServletException, IOException {
		
		String confirmNum=request.getParameter("confirmNum");
		
		String id=request.getParameter("id");
		String name=request.getParameter("name");
		String phone=request.getParameter("phone"); //파라미터 저장
		
		request.setAttribute("id", id);
		request.setAttribute("name", name);
		request.setAttribute("phone", phone); 
		// 그들을 리퀘스트에 담고
		// findPwconfirmNumber.jsp로 이동하든
		// resetPw.jsp로 이동하든 
		// 위 세개의 항목은 모두 필요하므로 리퀘스트에 담아둠
		
		String url="member/findPwConfirmNumber.jsp";
		if(confirmNum.equals("0000")) {
			url="member/resetPw.jsp";
		}
		request.getRequestDispatcher(url).forward(request,response);
	}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="css/shopping.css" rel="stylesheet">
<script src="member/member.js"></script>
</head>
<body>
<h2>비밀번호 재성절</h2>
<form method="post" name="frm" action="shop.do">
	<input type="hidden" name="command" value="resetPw">
	<input type="hidden" name="id" value="${id }">
	<table align="center" bgcolor="black" cellspacing="1"
				width="400">
		<tr align="center" bgcolor="#FDE8FF"><td width="430">
			<h3>비밀번호
				<input type="password" name="pwd">
			</h3></td></tr>
		<tr align="center" bgcolor="#FDE8FF"><td width="430">
			<h3>비밀번호확인
				<input type="password" name="pwd_chk">
			</h3></td></tr>
		<tr align="center" bgcolor="#FDE8FF"><td width="430">
			<h3>
				<input type="submit" value="비밀번호 재설정" 
					onClick="return resetPw();">
			</h3></td></tr>
	</table>
</form>
</body>
</html>
function resetPw(){
	if( document.frm.pwd.value==""){
		alert("비밀번호을 입력해 주세요");		
		document.joinForm.pwd.focus();	
		return false;	
	}else if( document.frm.pwd.value!=document.frm.pwd_chk.value){
		alert("비밀번호가 일치하지 않습니다");		
		document.joinForm.pwd_chk.focus();		
		return false;
	}else{ 
		return true;
	}
}

 

비밀번호 재설정

else if(command.equals("resetPw")) ac=new ResetPwAction();
package com.sam.shop.controller.action;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sam.shop.dao.MemberDao;
import com.sam.shop.dto.MemberVO;

public class ResetPwAction implements Action {

	@Override
	public void execute(HttpServletRequest request, 
			HttpServletResponse response) 
			throws ServletException, IOException {
		// 아이디와 패스워드 전달받아서
		MemberVO mvo=new MemberVO();
		mvo.setId(request.getParameter("id"));
		mvo.setPwd(request.getParameter("pwd"));
		
		// 패스워드를 수정하고
		MemberDao mdao=MemberDao.getInstance();
		mdao.resetPw(mvo);
		
		// 패스워드 리셋 완료 페이지로 이동함
		String url="member/resetPwComplete.jsp";
		request.getRequestDispatcher(url).forward(request,response);
	}
}
public void resetPw(MemberVO mvo) {
	String sql="update member set pwd=? where id=?";
	con = Dbman.getConnection();
	try {
		pstmt = con.prepareStatement(sql);
		pstmt.setString(1, mvo.getPwd());
		pstmt.setString(2, mvo.getId());
		pstmt.executeUpdate();
	} catch (SQLException e) {	e.printStackTrace(); 		
	} finally { 	Dbman.close(con, pstmt, rs); }	
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="css/shopping.css" rel="stylesheet">
<script src="member/member.js"></script>
</head>
<body>
<h2>비밀번호 재설정 완료</h2>
<table align="center" bgcolor="black" cellspacing="1" 
			width="400">
	<tr align="center" bgcolor="#FDE8FF" height="200">
		<td width="230"><h3>비밀번호 재설정이 완료되었습니다</h3><br>
			<input type="button" value="로그인 페이지로" 
						onClick="move_login();">
		</td></tr>
</table>
</body>
</html>