Spring #12 - 여러컨트롤러 제어하기

김형우·2022년 3월 4일
0

Spring

목록 보기
13/19

1. member/mypage.jsp

  1. 정보수정
    : 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>
  1. 암호변경
    : 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>
  1. 회원탈퇴
    : 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)
  1. @RequestParam(name = "menu") int menu로 넘어온 쿼리를 확인한다.
  2. 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. 추가된 점

  1. 암호변경
  • Member.java
    : entity
    1-1. 암호변경을 위해 새로 지정할 암호를 담기위한 변수
    : @Transient
    : 일시적, 임시적 (DB에 새로운 컬럼을 생성하지 않음)
    : 개발에서 필요한 정보를 보관하기위한 용도
@Transient
private String newPw = null;
profile
The best

0개의 댓글