<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>