원하는 페이지로 가는 기능을 구현하기 위해서는 컨트롤러에서 memberLoginAction 조금 수정할 부분이 있다. 어제 담아놨던 save를 꺼내올 수 있도록 객체를 불러와야 한다.

1. 상단에 세션을 주입받고,

2. if구문을 새로 추가하기. 이렇게 하면 회원목록 페이지 가기를 눌렀을 때, 먼저 로그인 페이지로 이동한뒤에 로그인을 하면 가려던 페이지인 회원목록 페이지로 이동을 할 수 있다.
비밀번호가 일치하면 saveUrl 세션 값이 있는지 확인하고 해당 URL로 리다이렉트하거나 기본 경로로 리다이렉트한다.
@RequestMapping(value="memberLoginAction.aws", method=RequestMethod.POST)
public String memberLoginAction(
@RequestParam("memberid") String memberid,
@RequestParam("memberpw") String memberpw,
RedirectAttributes rttr, // 리다이렉트 시 일회성 데이터를 전달하기 위한 객체
HttpSession session // 세션 객체, 로그인 상태를 유지하는 데 사용
) {
MemberVo mv = memberService.memberLoginCheck(memberid);
//저장된 비밀번호를 가져온다.
// 로그인 후 이동할 경로 초기화
String path = "";
if(mv != null) { // 회원 정보가 존재할 경우
String reservedPw = mv.getMemberpw(); // 저장된 비밀번호를 가져옴
// 입력한 비밀번호와 저장된 비밀번호를 비교
if(bCryptPasswordEncoder.matches(memberpw, reservedPw)) { // 비밀번호가 일치할 경우
//System.out.println("비밀번호 일치");
rttr.addAttribute("midx",mv.getMidx());
rttr.addAttribute("memberId",mv.getMemberid());
rttr.addAttribute("memberName",mv.getMembername());
// 로그인 요청 이전 페이지가 세션에 저장되어 있는지 확인
logger.info("saveUrl==> " + session.getAttribute("saveUrl"));
if(session.getAttribute("saveUrl") != null) {
// 이전 페이지로 리다이렉트
path ="redirect:"+ session.getAttribute("saveUrl").toString();
}else {
// 기본 페이지로 리다이렉트
path ="redirect:/";
}
}else {
// 비밀번호가 일치하지 않을 경우 경고 메시지를 설정하고 로그인 페이지로 리다이렉트
rttr.addFlashAttribute("msg","아이디/비밀번호를 확인해주세요");
path = "redirect:/member/memberLogin.aws";
}
}else {
// 아이디에 해당하는 회원 정보가 없을 경우 경고 메시지 설정 후 로그인 페이지로 리다이렉트
rttr.addFlashAttribute("msg","해당하는 아이디가 없습니다."); //일회성 메소드 메세지가 한 번만 나온다
path = "redirect:/member/memberLogin.aws";
}
//회원정보를 세션에 담는다.
return path;
}

<% if (session.getAttribute("midx") != null){
out.println(session.getAttribute("memberName")+"<a href='"+request.getContextPath()+"/member/memberLogout.aws'>님, 로그아웃</a>");
} %>
1. 인덱스 페이지로 가서 로그아웃 부분에 링크를 하나 걸어준다.
@RequestMapping(value="memberLogout.aws", method=RequestMethod.GET)
public String memberLogout(HttpSession session) {
session.removeAttribute("midx");
session.removeAttribute("memberName");
session.removeAttribute("memberId");
session.invalidate();
// 회원 목록을 보여줄 뷰 페이지 경로 반환
return "redirect:/";
}
2. MemberController로 이동해서 로그아웃 처리 기능 만들기