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>
