728x90
서블릿이 제공하는 "HttpSession"
1. 세션 생성
request.getSession(true)
● request.getSession(true) : 세션이 있으면 기존세션반환, 세션이 없으면 새로운 세션을 생성해서 반환.
● request.getSession(false) : 세션이 있으면 기존세션반환, 세션이 없으면 새로운 세션 생성 하지않고 null 반환.
기본값은 true이다.
2. 세션에 로그인 회원 정보 보관
session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);
코드로 확인하기 !!!!
LoginForm.java
import lombok.Data;
import javax.validation.constraints.NotEmpty;
@Data
public class LoginForm {
@NotEmpty
private String loginId;
@NotEmpty
private String password;
}
SessionConst.java
>> httpSession에 데이터를 보관하고 조회할 떄, 같은 이름이 중복되어 사용되므로, 상수를 하나 정의했다.
public class SessionConst {
public static final String LOGIN_MEMBER = "loginMember";
}
LoginController.java
@PostMapping("/login")
public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServiletRequest request){
if(bindingResult.hasErrors()){
return "login/loginForm";
}
Member loginMember = loginService.login(form.getLoginId(), form.getPassword());
if (loginMember == null) {
bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다.");
return "login/loginForm";
}
// 로그인 성공 처리
// 세션이 있으면 있는 세션반환, 없으면 신규 세션 생성
HttpSession session = request.getSession();
//세션에 로그인 회원 정보 보관
session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);
return "redirect:/";
}
세션이 유지되어 있으면 "로그인된 home"으로 이동.
세션이 유지되어있지 않으면 "로그인 되어있지 않는 home"으로 이동
HomeController.java
@GetMapping("/")
public String homeLogin(HttpServletRequest request, Model model){
//세션이 없으면 "로그인 되어있지 않는 home"으로 이동
HttpSession session = request.getSession(false); //false옵션을 사용해서 세션을 생성하지 않아야 함.
if (session == null) {
return "home";
}
Member loginMember = (Member) session.getAttribute(SessionConst.LOGIN_MEMBER);
// 세션에 회원데이터가 없으면 "로그인 되어있지 않는 home"으로 이동
if (loginMember == null) {
return "home";
}
//세션이 유지되어 있으면 "로그인된 home"으로 이동.
model.addAttribute("member", loginMember);
return "loginHome";
}
'mini_project > 회원가입, 로그인 구현하기' 카테고리의 다른 글
[spring] 인터셉터(interceptor) (0) | 2021.12.16 |
---|---|
[servlet] 필터 (filter) 개념 / 흐름 / 예시 (0) | 2021.12.16 |
[Spring] 세션(session)에 따른 컨트롤 "@SessionAttribute", 타임아웃 설정 (0) | 2021.12.14 |
로그인/로그아웃 구현하기_spring boot, jsp, javascript, mybatis 사용 (0) | 2021.06.09 |
회원가입 구현하기_spring boot, jsp, javascript, mybatis 사용 (2) | 2021.06.09 |