Java 및 JSP

[JSP] 세션(Session)

jane.dev 2021. 8. 7. 23:27
반응형

2021.08.05 - [JSP] - [JSP] 쿠키(Cookie)

 

[JSP] 쿠키(Cookie)

쿠키(Cookie) 웹 브라우저에서 서버로 어떠한 데이터를 요청하면, 서버에서는 알맞은 로직을 수행하고 데이터를 웹 브라우저로 응답함 그리고 HTTP 프로토콜은 응답 후 웹 브라우저와의 관계를 종

wheneveryouwantsz.tistory.com

세션(Session)
쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단
쿠키와 달리 클라이언트가 아닌 서버 상에 객체 형태로 존재

 

서버당 하나의 세션 객체를 가질 수 있으며, 브라우저 별로 서로 다른 세션을 사용함

서버에서만 접근이 가능하여 보안이 좋고, 저장할 수 있는 데이터에 한계가 없음

 

세션 객체 관련 메서드

session.setAttribute()

세션에 데이터 저장

 

session.getAttribute()

세션에 저장되어 있는 데이터를 얻음

 

session.getMaxInactiveInterval()

세션의 유효시간 설정(디폴트 값: 30분)

 

session.setMaxInactiveInterval()

세션의 유효시간을 얻음

 

session.invalidate()

모든 세션 삭제

 

예제) 세션을 사용해서 만약 로그인이 완료된 사용자가 다시 로그인 페이지에 방문할 경우 로그인 완료 페이지로 이동시키기

--R03.jsp(로그인 폼)--

<%
	String loginOk = (String)session.getAttribute("id_session");	// 세션 조회
	if(loginOk != null){						// 세션 발급 여부 확인
		response.sendRedirect("R04.jsp");
	}
%>

로그인 폼 윗부분에 로그인을 한 이력을 통해 세션이 발급되었는지 검사하고 세션이 발급되었다면 로그인 완료 페이지로 이동

 

<h2>로그인을 진행해주세요.</h2><hr>
<form action = "R04.jsp" method = "post">
	<input type = "text" name = "id" placeholder = "ID" required /><br>
	<input type = "password" name = "pw" placeholder = "PASSWORD" required /><br>
	<input type = "submit" value = "LOGIN" /><br>
</form>

로그인 폼

 

 

--R04.jsp(로그인 확인 및 완료)--

<%
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	String loginOk = (String)session.getAttribute("id_session");	// 세션 발급 여부 확인
	if(loginOk != null){		// 로그인 폼에서 넘어온 경우, id가 null값으로 나오기 때문에 확인
		id = loginOk;
	}else{
		if(id.equals("abc") && pw.equals("abc")){	// 임의의 아이디와 비밀번호
			session.setAttribute("id_session", id);	// 위와 일치하면 세션 발급(아이디)
			session.setAttribute("pw_session", pw);	// 세션 발급(비밀번호)
		}else{
			response.sendRedirect("R05.jsp");	// 일치하지 않으면 로그인 실패로 이동
		}
	}
%>

폼에서 받아온 데이터를 각 변수(id, pw)에 초기화하고

세션 발급 여부를 통해

여: 폼에서 들어온 데이터 없이 페이지 이동이 있었기 때문에 id에 세션의 value값을 넣어줌

부: 아이디와 비밀번호 일치 검사

 

<h2><%= id %>님 로그인이 완료되었습니다.</h2><hr>
<a href = "R06.jsp">로그아웃하기</a>

 

 

--R05.jsp(로그인 실패)--

<h2>로그인에 실패했습니다. 다시 시도해주세요.</h2><hr>
<a href = "R03.jsp">로그인하기</a>

 

 

--R06.jsp(로그아웃)--

<%
	session.invalidate();
%>

로그아웃 페이지로 넘어오면 세션 만료시킴

 

<h2>로그아웃 되었습니다.</h2><hr>
<a href = "R03.jsp">로그인하기</a>