[spring 팀프로젝트] - 웹사이트 제작 9. 마이페이지 - (3)회원정보 수정(+비밀번호 변경)

JINI·2022년 12월 10일
0
post-thumbnail

회원정보 수정하기는 해당 아이디의 회원 정보를 그대로 가져와 아이디를 제외한 다른 항목들을 변경할 수 있고 수정된 정보로 저장되고 비밀번호도 암호화되어 저장 된다.

✂️수정 전

✂️수정 후

🧩회원 정보 수정하기


1. 회원 정보 가져오기
2. 수정한 정보 저장하기
✔️비밀번호 재암호화

📝1.수정할 회원 정보 가져오기

🎨jsp

<button type="button" id="modify-btn" onclick="location.href='${contextPath }/member/myInfoModify?id=${info.id }'">수정하기 &gt;</button>

정보 상세보기 페이지에 만든 수정하기 버튼은 해당 아이디를 가지고 수정하기 페이지로 연결한다.


📕Controller

@GetMapping("myInfoModify")
	public String myInfoModify(HttpSession session, Model model) {
		model.addAttribute("info", ms.memberInfo((String)session.getAttribute(LOGIN))); 
		return "member/myInfoModify";
	}

회원정보 상세보기와 같은 코드이고 한줄로 줄였다.


📕Service/serviceImpl

public void updateMember(String id, Model model);
public void updateMember(String id, Model model) {
		model.addAttribute("modifyInfo", memberMapper.memberInfo(id) );
	}


📝2.수정 내용 저장하기

🎨jsp

<form action="${contextPath}/member/modifySave" method="post">
	<label for="id">아이디</label> <input type="text" name="id" id="id" value="${info.id }" readonly> 
    <label for="pwd">비밀번호</label>
    	<input type="password" name="pwd" id="pwd" class="user-margin" placeholder="4~12자의 영문 대소문자와 숫자만 입력">
   	<label for="name">이름</label>
    	<input type="text" name="name" id="name"> 
    <label for="phone">휴대폰 번호 (-없이)</label> 
    	<input type="tel" name="phone" id="phone"> 
    <label for="email">이메일</label> 
    	<input type="email" name="email" id="email">
    <button type="submit" id="save-btn">변경 내용 저장</button>
</form>

변경할 항목들을 db에서 가져와 아이디를 제외하고 수정이 가능하도록 input에 넣어준다.
해당 폼은 post방식으로 입력한 컨트롤러로 연결된다.


📕Controller

@PostMapping("modifySave")
	public String modify(memberDTO dto){
		int result = ms.modifySave(dto);
		if(result==1) {
			return "redirect:myInfo";
		}
		return "redirect:myInfoModify";
	}

수정 내용을 dto에 저장해 service로 보낼 값을 int형 변수 result에 넣고 값이 1이면 성공으로 수정된 마이페이를 보여주고 실패시 다시 수정페이지로 돌아간다.


📕Service/serviceImpl

✔️변경된 비밀번호 재암호화해 저장하기

public int modifySave(memberDTO dto);
public int modifySave(memberDTO dto) {
		String modifyPwd = pwEncoder.encode(dto.getPwd());
		dto.setPwd(modifyPwd); 

		int result = 0;          
		try {
			result = memberMapper.modifySave(dto);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

db에서 가져온 비밀번호를 암호화한 값을 String형 변수에 넣고
새로운 값을 dto에 다시 저장한다.

0인 intr형 변수를 만들고 동일하게 변경하는 값이 오류나는 것을 예외로 처리해서 성공시 데이터를 mapper로 보내고 실패시 서버에 오류 메시지를 표시하도록 한다.

이상없으면 result를 돌려준다.


📕mapper.java

public int modifySave(memberDTO dto);

📕mapper.xml

<update id="modifySave">
		update box_member set buser_pwd=#{pwd},
		buser_name=#{name}, buser_phone=#{phone},buser_email=#{email}
		where
		buser_id=#{id}
</update>

새로운 내용을 저장하기위해 update를 사용해 쿼리문을 작성한다.
해당 아이디를 가진 사용자의 비밀번호, 이름, 번호, 메일을 저장한다.


profile
꾸준히 성장하는 개발자

0개의 댓글