
비밀번호 수정 다이어그램.drawio
MemberController
// 비밀번호 수정
@RequestMapping(value = "/updatePassword.do", method = RequestMethod.POST)
public ResponseEntity updatePassword(@RequestParam("newMemberPw") String newPwd,
HttpSession session, HttpServletRequest requ) {
ResponseEntity res = null;
MemberDomain memberDomain = (MemberDomain) session.getAttribute("member");
String memberId = memberDomain.getMemberId();
System.out.println("memberIdCheck 들어옴? " + memberId);
System.out.println("newPwd 들어옴? " + newPwd);
Map<String, String> updatePw = new HashMap<>();
updatePw.put("memberId", memberId);
updatePw.put("newPwd", newPwd);
try {
memberService.updatePwd(updatePw);
session.removeAttribute("member");
session.removeAttribute("isLogOn");
String msg = "<script>";
msg += " alert('비밀번호가 수정되었습니다. 로그인 화면으로 이동합니다.');";
msg += " opener.location.href ='" + requ.getContextPath() + "/member/loginForm.do'; ";
msg += " window.close(); ";
msg += " </script>";
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.add("Content-Type", "text/html; charset=utf-8");
res = new ResponseEntity(msg, responseHeaders, HttpStatus.CREATED);
} catch (Exception e) {
e.printStackTrace();
String msg = "<script>";
msg += " alert('비밀번호가 수정에 실패하였습니다. 다시 시도해 주세요.');";
msg += " opener.location.href ='" + requ.getContextPath() + "/member/memberModifyForm.do'; ";
msg += " window.close(); ";
msg += " </script>";
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.add("Content-Type", "text/html; charset=utf-8");
res = new ResponseEntity(msg, responseHeaders, HttpStatus.CREATED);
}
return res;
}
MemberServiceImpl
// 비밀번호 수정
@Override
public void updatePwd(Map<String, String> updatePw) throws Exception {
memberDAO.updatePwd(updatePw);
}
MemberDAOImpl
// 비밀번호 수정
@Override
public void updatePwd(Map<String, String> updatePw) throws DataAccessException {
sqlSession.update("mapper.member.updatePwd", updatePw);
}
member.xml
<!-- 비밀번호 수정 -->
<update id="updatePwd" parameterType="Map">
<![CDATA[
update member
set memberPw = #{newPwd}
where memberid = #{memberId}
]]>
</update>
changePassword.jsp
const memberPwd = `${member.memberPw}`;
const contextPath = `${contextPath}`;
$(document).ready(function() {
$('#newPwd1, #newPwd2').on('input', function() {
pwdCheck();
});
});
function updatePassword() {
var currentPwdInput = $('#currentPwd').val();
var newPwdInput = $('#newPwd1').val();
var newPwdConfirm = $('#newPwd2').val();
if (newPwdInput === memberPwd) {
alert("새 비밀번호는 기존 비밀번호와 같을 수 없습니다.");
return false;
}
if (currentPwdInput === memberPwd && newPwdInput === newPwdConfirm && newPwdInput !== "") {
return true;
} else if (currentPwdInput !== memberPwd) {
alert("기존 비밀번호가 잘못되었습니다.");
return false;
} else {
alert("새 비밀번호가 일치하지 않거나 비밀번호가 비어 있습니다.");
return false;
}
}
function pwdCheck() {
var newPwdInput = $('#newPwd1').val();
var newPwdConfirm = $('#newPwd2').val();
var pwdMsg = $('#pwdMsg');
var pwdLengthCheck = newPwdInput.length;
// 비밀번호 길이 체크
if (pwdLengthCheck < 4 || pwdLengthCheck > 16) {
pwdMsg.text("비밀번호는 4~16자 입니다.");
return;
} else {
pwdMsg.text("");
}
// 비밀번호 확인 체크
if (newPwdConfirm !== newPwdInput) {
pwdMsg.text("입력하신 비밀번호와 다릅니다.");
} else if (newPwdInput === "" || newPwdConfirm === "") {
pwdMsg.text("");
} else {
pwdMsg.text("");
}
}