session.setAttribute
session.getAttribute
session.invalidate
세션이란?
크롬과 엣지에서 로그인할 경우 두 세션은 다르다.
세션이 생성되는 원리 : 웹브라우저에 주소를 입력하는 순간 세션이 만들어짐
구분할 수 있으려면 구분이 가능해야하며 웹브라우저 사이에서도 다른 아이디로 있어야 함
같은 브라우저 일 때 세션 아이디가 같으면 탭1과 탭2의 세션 아이디가 같다.
세션 이용 방법
- 세션 생성 및 얻기
HttpSession session = request.getSession();
HttpSession session = request.getSession(true);
request의 getSession()메서드는 서버에 생성된 세션이 있다면 세션을 반환하고, 없다면 새 세션을 생성하여 반환한다. (인수 default가 true)
새롭게 생성된 세션인지는 HttpSession의 isNew() 메서드로 알 수 있다.
HttpSession session = request.getSession(false);
request의 getSession()메서드의 파라미터로 false를 전달하면, 이미 생성된 세션이 있을때 그 세션을 반환하고, 없으면 null을 반환한다.
- 세션에 값 저장하기
setAttribute(String name, Object value)
setAttribute는 name, value 쌍으로 객체 Object를 저장하는 메서드이다.
세션이 유지되는 동안 저장된다.
session.setAttribute(이름, 값)
이렇게 사용할 수 있다.
- 세션 값 조회하기
getAttribute(String naem)
getAttribute 메서드로 세션에 저장된 값을 조회할 수 있다.
리턴 타입은 Object이므로 형변환이 필요하다
메서드 setAttribute에 이용한 name을 알고 있으면 다음과 같이 조회 가능
String value = (String)session.getAttribute("name");
- 세션 값 삭제하기
removeAttribute(String name)
removeAttribute 메서드로 name값에 해당하는 세션 정보를 삭제할 수 있다
invalidate()
invalidate로 모든 세션 정보를 한번에 삭제할 수 있다.
sessionInfo.jsp
<title>세션 정보</title>
</head>
<body>
<%
//long 타입의 시간 값을 저장하기 위해 사용
Date time = new Date();
SimpleDateFormat formatter =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
%>
세션ID : <%=session.getId()%> <br />
<%
//세션의 생성 시간을 Date 객체인 time에 저장
time.setTime(session.getCreationTime());
%>
세션생성기간 : <%=formatter.format(time)%> <br />
<%
//세션의 마지막 접근 시간(long)->Date 타입으로 세팅
time.setTime(session.getLastAccessedTime());
%>
최근접근시간 : <%=formatter.format(time)%> <br />
</body>
다른 브라우저에서 실행했을 경우 세션ID가 다르다.
->세션은 웹 브라우저가 아닌 서버에 값을 저장하기 때문!!
setMemberInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
session.setAttribute("MEMBERID", "ddit");
session.setAttribute("NAME", "개똥이");
%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
세션에 정보를 저장했습니다. <br />
<a href="getMemberInfo.jsp">저장된 세션의 정보 보기</a>
</body>
</html>
getMemberInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String memberId = (String)session.getAttribute("MEMBERID"); //ddit
String name = (String)session.getAttribute("NAME"); //개똥이
%>
<!DOCTYPE html>
<html>
<head>
<title>저장된 세션의 정보 확인</title>
</head>
<body>
회원id : <%=memberId%><br />
회원이름 : <%=name%><br />
<a href="setMemberInfo.jsp">되돌아가기</a>
</body>
</html>