수업(국비지원)/JSP

[JSP] MVC MODEL1 방식 - 비밀번호 변경, 비밀번호 변경 저장(passwordForm, password)

byeolsub 2023. 4. 19. 17:21

📌 passwordForm 비밀번호 변경

<%— 1. javascript inchk 함수 구현하기
       - pass, chgpass 값을 필수 입력
       - chgpass == chgpass2 값이 다르면 오류 —%>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- /jsp2/src/main/webapp/model1/member/passwordForm.jsp --%>
  
<!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.jsp" 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 비밀번호 변경 저장

 <%—
 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 페이지 이동. 현재 페이지 닫기                       
--%>    

 

<%@ page import="model1.Member"%>
<%@ page import="model1.MemberDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- /jsp2/src/main/webapp/model1/member/password.jsp --%>

<% 
  String id = request.getParameter("id");
  String logion = (String)session.getAttribute("login");  
  String msg = null;
  String url = null;
//1. 로그아웃 상태인 경우
   if(id == null) {        
     msg = "로그인 하세요."
     url = "loginForm.jsp"
   }
//2. pass,chgpass 파라미터 값 저장
  String pass = (String)session.getAttribute("pass");
  String chgpass = request.getParameter("chgpass");
  MemberDao dao = new MemberDao();
  Member mem = dao.selectOne(login);
// 3. pass 비밀번호가 db에 저장된 비밀번호와 틀리면
   if(!pass.equals(mem.getPass())) { 
      msg = "비밀번호 오류";
      url = "passwordForm.jsp" + id;
   } else { //4. pass 비밀번호가 db에 저장된 비밀번호와 같으면
       MemberDao.updatePass(login,chgpass);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>

 

 

📌 memberDao.java 에 updatePass추가

public boolean updatePass(String id, String pass) {
//1.Connection DB연결
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
String sql = "update member set pass=? where id=?";
try {
//2.PreparedStatement DB결과를 불러서 
//pstmt로 멤버를
pstmt = conn.prepareStatement(sql);//sql연결 관리
pstmt.setString(1, pass);
pstmt.setString(2, id);
return pstmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, null);
}
return false;
}