본문 바로가기
개발 공부 Today I Learned

[국비 39일차 TIL] 마이페이지, pw 변경

by 개발자신입 2024. 1. 16.
반응형

 

 

로그인 후 마이페이지 만들기

로그인을 한 후 나만 볼 수 있는 마이페이지를 만들었다. 마이페이지에서 비밀번호도 변경 가능하다. 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!-- jstl을 쓰기 위한 코어태그 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> ----- 내 정보 보기 -----</title>
<link href="./css/index.css" rel="stylesheet">
<link href="./css/menu.css" rel="stylesheet">
<script type="text/javascript" src="./js/menu.js"></script>

<style type="text/css">
#newpw_button {
  width: 100px;
  padding: 7px;
  border: none;
  border-radius: 5px;
  color: white;
  font-weight: bold;
  background-color: #8E44EC;
  cursor: pointer;
  outline: none;
  margin: 10px;
}

        #newPW {
            width: 200px; /* 변경 가능한 비밀번호 길이에 맞게 조절 */
            padding: 5px;
            margin-bottom: 10px;
        }
        
        
</style>
</head>
<body>
<% 
// 로그인 검사하기
if(session.getAttribute("mid") == null) {
	response.sendRedirect("./login");
}
%>
	<div class="container">
	<header>
		<%@ include file="menu.jsp"%>
	</header>
		<div class="mainStyle">
		<div>
			<article>
				<h1>내 정보 볼까요</h1>
				${myInfo.mname } / ${myInfo.mid } /
			</article>
			
			<div>
				<form action="./myInfo" method="post" onsubmit="return check()">
					<input type="password" name="newPW" id="newPW" placeholder="변경할 암호를 입력하세요.">
					<button type="submit" id="newpw_button" name="newpw_button">수정하기</button>
				</form>
			</div>
			
		</div>
	</div>
</div>
	
<footer>
	<c:import url="footer.jsp"/>
</footer>

<script type="text/javascript">
	function check(){
		var pw = document.querySelector("#newPW");
        if (pw.value.length < 4) {
            alert("패스워드는 4글자 이상이어야 합니다.");
            return false;
        }
    }

</script>

	<a href="./board">- 게시판으로 넘어가기 -</a>
</body>
</html>

 

MyInfo.java

비밀번호를 변경할 수 있도록 서블릿 파일에서 작업을 해줘야 한다.

 

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		
		// 비밀번호 바꾸기
		
		// 세션 만들기
		HttpSession session = request.getSession();
		
		// 비번 수정 가능하도록 
		MemberDTO dto = new MemberDTO();
		dto.setMpw(request.getParameter("newPW"));
		
		// 세션값 보내기
		dto.setMid((String)session.getAttribute("mid"));
		
		MemberDAO dao = new MemberDAO();
		int result = dao.newpw(dto);
		
		System.out.println(result);
		response.sendRedirect("./board");
	}
}

 

MemberDAO

MemberDAO에서도 추가적으로 작업을 해야한다.

 

	public int newpw(MemberDTO dto) {
		int result = 0;
		Connection con = db.getConnection();
		PreparedStatement pstmt = null;
		String sql = "UPDATE member SET mpw=? WHERE mid=?";
		
		try {
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, dto.getMpw());
			pstmt.setString(2, dto.getMid());
			
			result = pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			close(null, pstmt, con);
			
		}
		return result;
	}

 

 

반응형

댓글