[Spring Boot 게시판] 29일차

김정현·2022년 11월 7일
0

SPRINGBOOT게시판

목록 보기
29/36

회원정보 수정 폼, 수정 기능 구현

1) 인터셉터 경로 추가

	.addPathPatterns("/usr/member/modify")
    .addPathPatterns("/usr/member/doModify")
    .addPathPatterns("/usr/member/checkPassword")
    .addPathPatterns("/usr/member/doCheckPassword");
  • 로그인해야 가능한 경로이므로 로그인상태가 아니라면 해당 uri에 접근을 막음
  • 위에 uri는 회원정보 변경 관련

2) MemberController

	@RequestMapping("/usr/member/modify")
	public String showModify() {		
		return "usr/member/modify";
	}
	
	@RequestMapping("/usr/member/doModify")
	@ResponseBody
	public String doModify(String loginPw, String nickname, String cellphoneNum, String email) {		
		ResultData modifyRd = memberService.modify(rq.getLoginedMemberId() ,loginPw, nickname,cellphoneNum, email);	
		
		return rq.jsReplace(modifyRd.getMsg(), "/");
	}
  • 회원정보 수정 전 패스워드 체크후 /usr/member/modify 로 이동 한다.
  • 해당 uri로 요청시 회원 수정 뷰를 보여줌 , 수정 뷰에서 입력된 데이터를 /usr/member/doModify 로 요청하여 수정 처리

3) 회원정보 수정 뷰

	<script>
	let MemberModify__submitDone = false;
	function MemberModify__submitForm(form){
		if(MemberModify__submitDone){
			alert('이미 처리중 입니다.');
			return;
		}
		form.nickname.value = form.nickname.value.trim();
		if(form.nickname.value.length==0){
			alert('닉네임을 작성해주세요.');
			form.nickname.focus();
			return;
		}				
		form.loginPwConfirm.value = form.loginPwConfirm.value.trim();		
		if(form.loginPwConfirm.value.length==0){
			alert('새 비밀번호 확인을 작성 해주세요.');
			form.loginPwConfirm.focus();
			return;
		}
		
			~~~ 생략 ~~~	
		
		MemberModify__submitDone = true;
		form.submit();		
	}	
  • 이전 회원가입, 댓글수정에서 했던 script문
  • 수정될 데이터의 내용이 작성되지않으면 전송을 시키지 않음
  • 또한 비빌번호 , 비밀번호 확인이 일치하지 않을시에도 전송을 시키지 않음

4) 회원정보 수정 쿼리문

	<update id="modify">
		UPDATE `member`
		<set>
			updateDate =NOW()
		<if test="loginPw != null">
			,loginPw = #{loginPw}
		</if>
		<if test="nickname != null">
			,nickname = #{nickname}
		</if>
		<if test="cellphoneNum != null">
			,cellphoneNum = #{cellphoneNum}
		</if>
		<if test="email != null">
			,email = #{email}
		</if>
		</set>
		WHERE id = #{actorId}
	</update>
  • 회원 수정폼에서 새 비밀번호를 입력하지 않았다면 loginPw는 null값으로 전송된다.

  • 새 비밀번호로 비밀번호 변경을 할 경우, 즉 null값이 아닌경우 DB에 업데이트

0개의 댓글