본문 바로가기

Spring

[Spring] 세션(Session)이란?

반응형

세션(Session)

 

세션(Session)

세션은 클라이언트가 웹 애플리케이션 서버에 접속할 때 서버 쪽에 생성되는 공간으로 내부적으로는 세션 아이디를 통해 참조된다. 브라우저는 서버에 접속할 때 발급받은 세션 아이디를 기억하고 서버는 해당 세션 아이디로 할당된 영역에 접근하는 형식이다. 

 

세션(Session)의 특징

1. 세션 유효 시간이나 브라우저 종료 전까지 유지되므로 서로 다른 페이지에서도 정보 공유가 가능함

2. 로그인 유지, 장바구니, 컨트롤러 구현 등에서 사용됨

3. 사용자마다 생성되는 공간으로 많은 사용자가 동시에 사용하면 대량의 메모리가 필요하다. 대책이 필요하다. 

* 세션 관리를 위해 별도의 세션 관리 데이터베이스를 사용하는 경우도 있다. redis라는 인메모리 데이터베이스를 사용하기도 한다. redis는 NoSQL 형태로 단순 key-value 구조의 데이터를 빠르게 처리할 수 있다. 

 

Session 예시 

// 1. 로그인 
	@RequestMapping("login")
	public String loginView(@RequestParam(value="logId", required=false) String logId
						  , @RequestParam(value="logPass", required=false) String logPass
						  , Model model
						  , HttpSession session
						  , HttpServletResponse response) throws IOException {
		//로그인 상태									
		if(session.getAttribute("memInfo") != null) {
			return "redirect:list";
		}
		
		if(logId == null) {
			return "login";
		}else {
			Map<String, Object> map = sqlSession.selectOne("mapper.loginChk", logId);
			if(map == null) {
				model.addAttribute("loginMsg", "idFail");
				return "login"; 
			}else if (!logPass.equals(map.get("memPass").toString())) {
				model.addAttribute("loginMsg", "passwordFail");
				return "login"; 
			}else {
				session.setAttribute("memInfo", map);
				return "redirect:list";
			}
		}
	}

session.setAttribute("memInfo", map);

:  session 객체의 setAttribute 메서드를 사용하여 key-value 형태로 저장한다. key는"memInfo"가 되고, value값은 map이 된다. 이렇게 저장된 값은 JSP에서 사용이 가능하다. 

 

var sessionChk = '${memInfo}';
	
if(sessionChk == null || sessionChk == ''){
    alert("로그인 후 이용하세요");
    location.href = 'login';
}

${memInfo}로 세션에 저장된 값을 불러올 수 있다. map형태로 저장된 아이디, 비밀번호 등의 값을 확인할 수 있다. 

반응형