수업(국비지원)/JSP

[JSP] MVC MODEL2 방식 - 비밀번호 변경(passwordForm)

byeolsub 2023. 4. 20. 23:39

📌 MemberController.java - 내용 추가

1. 로그아웃 상태인 경우, 로그인 하세요. 메세지 출력.
     opener 페이지를 loginForm.jsp페이지 이동.
     현재 페이지 닫기
2. pass,chgpass 파라미터 값 저장
3. pass 비밀번호가 db에 저장된 비밀번호와 틀리면 비밀번호 오류 메세지 출력.
    현재 페지이를 passwordForm.jsp 페이지 이동
4. pass 비밀번호가 db에 저장된 비밀번호와 같으면 => 비밀번호 검증 완료
    MemberDao.updatePass(login,chgpass) => 새로운 비밀번호로 수정
       - 비밀번호 수정 성공 : 
           메세지 출력 후 opener 페이지를 info.jsp 페이지 이동. 현재페이지 닫기
       - 비밀번호 수정 실패 : 
           메세지 출력 후 opener 페이지를 updateForm.jsp 페이지 이동. 현재 페이지 닫기     

 

@RequestMapping("passwordForm")
	public String passwordForm (HttpServletRequest request, HttpServletResponse response) {
		return "/view/member/passwordForm.jsp";
	}

	@RequestMapping("password")
	public String password (HttpServletRequest request, HttpServletResponse response) {
		String login = (String)request.getSession().getAttribute("login");
		boolean opener = true;
	    boolean closer = true;
		String msg = null;
		String url = null;
		if(login == null) { //1. 로그아웃 상태인 경우
			msg = "로그인 하세요.";
			url = "loginForm";
		} else { //로그인 상태 
			//2. pass,chgpass 파라미터 값 저장
			String pass = request.getParameter("pass");
			String chgpass = request.getParameter("chgpass");
			MemberDao dao = new MemberDao();
			Member mem = dao.selectOne(login);
			if(pass.equals(mem.getPass())) { //4. pass 비밀번호가 db에 저장된 비밀번호와 같으면
				if(dao.updatePass(login, chgpass)) { //비밀번호 수정 성공
					msg = "비밀번호가 변경 되었습니다.";
					url = "info?id=" + login;
				} else { //비밀번호 수정 실패
					msg = "비밀번호 변경 시 오류가 발생했습니다.";
					url = "updateForm?id=" + login;
				}
			} else { //3. pass 비밀번호가 db에 저장된 비밀번호와 틀리면
				msg = "비밀번호 오류";
				closer = false;
		    	opener = false;
		    	url = "passwordForm";
			}
		}
		request.setAttribute("msg",msg);
		request.setAttribute("url",url);
		request.setAttribute("opener",opener);
		request.setAttribute("closer",closer);
		return "/view/member/password.jsp";
	}

 

 📌

  • passwordForm
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%--/jsp3/src/main/webapp/view/member/passwordForm.jsp
  1. javascript inchk 함수 구현하기
       - pass, chgpass 값을 필수 입력
       - chgpass == chgpass2 값이 다르면 오류
--%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>비밀번호 변경</title>
<link rel="stylesheet" href="../css/main.css">
<script type="text/javascript">
    function inchk(f) {
    	if(f.pass.value == '') {
   		 alert("현재 비밀번호를 입력하세요.")
   		 f.pass.focus()
   		 return false
   	 }
   	 if(f.chgpass.value == '') {
   		 alert("변경 비밀번호를 입력하세요.")
   		 f.chgpass.focus()
   		 return false
   	 }
   	 if(f.chgpass.value != f.chgpass.value) {
   		 alert("비밀번호가 서로 일치하지 않습니다.")
   		 f.chgpass.focus()
   		 return false
   	 }
    }
</script>
</head>
<body>
<form action="password" method="post" name="f" onsubmit="return inchk(this)">
<table><caption>비밀번호 변경</caption>
<tr><th>현재 비밀번호</th>
    <td><input type="password" name="pass"></td></tr>
<tr><th>변경 비밀번호</th>
    <td><input type="password" name="chgpass"></td></tr>
    <tr><th>변경 비밀번호 재입력</th>
    <td><input type="password" name="chgpass2"></td></tr>
<tr><td colspan="2"><input type="submit" value="비밀번호 변경"></td></tr>    
</table>
</form>
</body>
</html>
  • password
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="<http://java.sun.com/jsp/jstl/core>" %>
<%-- /jsp3/src/main/webapp/view/member/password.jsp --%>
   alert("${msg}")
   <c:if test="${opner}"> //opener : 회원정보 수정 창 
   opener.location.href="${url}"
   </c:if>
   <c:if test="${!opener}">
   location.href="${url}" <%--현재 페이지를 url 값으로 이동 --%>
   </c:if>
   <c:if test ="${closer}"> //closer : 비밀번호 변경-프로필1 창
    self.close()
   </c:if>