1) 인터셉터 경로 추가
.addPathPatterns("/usr/member/modify")
.addPathPatterns("/usr/member/doModify")
.addPathPatterns("/usr/member/checkPassword")
.addPathPatterns("/usr/member/doCheckPassword");
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
로 이동 한다.회원 수정 뷰
를 보여줌 , 수정 뷰에서 입력된 데이터를 /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();
}
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에 업데이트