1. member/mypage.jsp
- 정보수정
: submit 할 경우 정보를 /member/mypage?menu=1
로 넘긴다.
<form th:action="@{/member/mypage(menu=1)}" method="post">
<div class="lbldiv">
<label class="lbl1">아이디</label>
<input th:value="${member.id}" name="id" class="form-control form-control-sm" type="text" placeholder="아이디" aria-label=".form-control-sm example" readonly>
</div>
<div class="lbldiv">
<label class="lbl1">이름</label>
<input th:value="${member.name}" name="name" class="form-control form-control-sm" type="text" placeholder="이름" aria-label=".form-control-sm example">
</div>
<div class="lbldiv">
<label class="lbl1">나이</label>
<input th:value="${member.age}" name="age" class="form-control form-control-sm" type="number" placeholder="나이" aria-label=".form-control-sm example">
</div>
<input type="submit" class="btn btn-primary" value="정보수정">
</form>
- 암호변경
: submit 할 경우 정보를 /member/mypage?menu=2
로 넘긴다.
<form th:action="@{/member/mypage(menu=2)}" method="post">
<div class="lbldiv">
<label class="lbl1">현재암호</label>
<input name="pw" class="form-control form-control-sm" type="text" placeholder="현재암호" aria-label=".form-control-sm example">
</div>
<div class="lbldiv">
<label class="lbl1">변경암호</label>
<input name="newPw" class="form-control form-control-sm" type="text" placeholder="변경암호" aria-label=".form-control-sm example">
</div>
<div class="lbldiv">
<label class="lbl1">암호확인</label>
<input name="newPw1" class="form-control form-control-sm" type="text" placeholder="암호확인" aria-label=".form-control-sm example">
</div>
<input type="submit" class="btn btn-primary" value="암호변경">
</form>
- 회원탈퇴
: submit 할 경우 정보를 /member/mypage?menu=3
로 넘긴다.
<form th:action="@{/member/mypage(menu=3)}" method="post">
<div class="lbldiv">
<label class="lbl1">암호</label>
<input name="pw" class="form-control form-control-sm" type="text" placeholder="암호" aria-label=".form-control-sm example">
</div>
<input type="submit" class="btn btn-primary" value="회원탈퇴">
</form>
2. MemberController.java
- 정보수정 (/member/mypage?menu=1)
- 암호변경 (/member/mypage?menu=2)
- 회원탈퇴 (/member/mypage?menu=3)
@RequestParam(name = "menu") int menu
로 넘어온 쿼리를 확인한다.
- if문으로 각 menu값에 맞는 명령을 수행한다.
@PostMapping(value = "/mypage")
public String mypagePOST(
// id name age만 담김
@RequestParam(name = "menu") int menu,
@ModelAttribute Member member) {
// System.out.println("member.toString() ===> " + member.toString());
if (menu == 1) {
int ret = memberDB.updateMember(member);
if (ret == 1) {
// post에서는 jsp표시 X
// redirect를 이용하여 주소를 변경(새로고침)
// 127.0.0.1:8080/member/selectlist
httpSession.setAttribute("USERNAME", member.getName());
return "redirect:/member/mypage";
}
return "redirect:/member/mypage";
} else if (menu == 2) {
System.out.println("member.toString() ===> " + member.toString());
String userid = (String) httpSession.getAttribute("USERID");
member.setId(userid);
long ret = memberDB.updatePassword(member);
System.out.println("ret ===> " + ret);
if (ret == 1) {
return "redirect:/member/mypage";
}
return "redirect:/member/mypage";
} else if (menu == 3) {
String userid = (String) httpSession.getAttribute("USERID");
member.setId(userid);
member.setPw(member.getPw());
long ret = memberDB.byeMember(member);
if (ret == 1) {
return "redirect:/member/logout";
}
return "redirect:/member/mypage";
}
// 127.0.0.1:8080/member/update?id=c
return "redirect:/home";
}
3. 추가된 점
- 암호변경
- Member.java
: entity
1-1. 암호변경을 위해 새로 지정할 암호를 담기위한 변수
: @Transient
: 일시적, 임시적 (DB에 새로운 컬럼을 생성하지 않음)
: 개발에서 필요한 정보를 보관하기위한 용도
@Transient
private String newPw = null;