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>