본문 바로가기

카테고리 없음

Spring 04. 마이페이지 정보수정하기

 

 

<a href="${contextPath}/mypage.me">마이페이지</a>

@Controller
@SessionAttributes({"loginUser"}) 
// Model안에 추가된 값이 key값과 일치하는 값이 있으면 해당 값을 session으로 이관
public class MemberController {

	private MemberService mService;


	@GetMapping("/mypage.me") // 마이페이지로 이동
	public String myPage() {
		return "member/myPage";
	}

	// 내정보 수정기능
	// 수정 성공시 mypage로 url재요청
	// 수정 실패시 에러페이지
	@PostMapping("/update.me")
	public String updateMember(
			Member m,
			Model model,
			HttpSession session,
			RedirectAttributes ra) {
		
		int result = mService.updateMember(m);
		String url = "";
		
		if(result > 0) {
			// 성공시 DB에 저장된 회원정보를 다시 불러와서 저장
			Member updateMember = mService.loginMember(m.getUserId());
			model.addAttribute("loginUser", updateMember);
			// "loginUser"에 updateMember로 엎어쓰기
            
            
			// RedirectAttributes는 처음에 데이터를 sessionScope에 담음
			// redirect완료 후 sessionScope에 저장된 데이터를 requestScope로 다시 이관시킴
			// 1회성 Msg에 주로 사용함
//			session.setAttribute("alertMsg", "정보수정 성공");
			ra.addFlashAttribute("alertMsg", "정보수정 성공");
			
			url = "redirect:/mypage.me";
//			url = "member/myPage"; // <- url재요청은 되지만 입력된 정보가 안넘어감!
			// url로 보낼시 경로지정 XX. 직접 포워딩처리 하지 않음!
		}else {
			// 실패시
			model.addAttribute("errorMsg", "정보수정 실패!");
			url = "common/errorPage";
		}
		return url;
	}
}

 

 

// member-mapper.xml

<!-- 회원정보 수정 -->
<update id="updateMember" parameterType="member">
    UPDATE MEMBER
       SET EMAIL = #{email}, 
           BIRTHDAY = #{birthday}, 
           GENDER = #{gender},
           PHONE = #{phone}, 
           ADDRESS = #{address}, 
           MODIFY_DATE = SYSDATE
     WHERE USER_ID = #{userId}
       AND STATUS = 'Y'
</update>

 

 

변경전 / 변경후

 

성공시 alertMsg
정보 변경전
정보 변경후