public static final String LOGIN_MEMBER = "loginMember";
@PostMapping("/login") // 세션에 담아주기 public String loginv2(@ModelAttribute LoginForm form, Model model, RedirectAttributes redirectAttributes , HttpServletRequest request) { Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); System.out.println(loginMember); if( loginMember == null) { // 로그인실패 model.addAttribute("msg", "로그인실패"); return "login/loginForm"; } // 로그인 성공 HttpSession session = request.getSession(); //세션에 로그인 회원정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); redirectAttributes.addFlashAttribute("msg","로그인 성공"); return "redirect:/"; }
request.getSession(true)
- 세션이 있으면 기존 세션을 반환한다.
세션이 없으면 새로운 세션을 생성해서 반환한다.
request.getSession(false)
- 세션이 있으면 기존 세션을 반환한다.
세션이 없으면 새로운 세션을 생성하지 않고, null을 반환
LoginController.java
@PostMapping("/logout") public String logoutv2(HttpServletRequest request) { //세션을 삭제 HttpSession session = request.getSession(false); // session이 null이 아니라는건 기존에 세션이 존재했었다는 뜻이므로 // 세션이 null이 아니라면 session.invalidate()로 세션 삭제해주기. if(session != null) { session.invalidate(); } return "redirect:/"; }
@GetMapping public String homev3(HttpServletRequest request, Model model) { //세션 반환 HttpSession session = request.getSession(false); // 로그인한 사용자가 아니라면 home으로 보낸다. if ( session == null) { return "home"; } Member loginMember = (Member)session.getAttribute(SessionConst.LOGIN_MEMBER); // 사용자가 없으면 null 처리 필요 // 세션은 있지만 loginMember객체가 null이라면 if(loginMember == null) { return "home"; } // loginHome : 로그인에 성공한 사람만이 볼 수 있는 화면 model.addAttribute("member", loginMember); return "loginHome"; }
@GetMapping public String homev4(@SessionAttribute(name=SessionConst.LOGIN_MEMBER,required=false)Member loginMember, Model model) { // session attribute를 뒤져서 member에 값을 넣어준다. // 사용자가 없으면 null 처리 필요 if(loginMember == null) { return "home"; } // loginHome : 로그인에 성공한 사람만이 볼 수 있는 화면 model.addAttribute("member", loginMember); return "loginHome"; }