본문 바로가기
Java, JSP

[JSP] 세션(session)의 개념과 사용법

by LasBe 2022. 2. 12.
반응형

⚡️ 세션(session)이란


세션이란 웹 컨테이너에서 클라이언트의 정보를 서버에 보관하는 기능입니다.

 

1회성으로 연결이 종료되는 http 프로토콜의 단점을 보완해 클라이언트와 서버 간 접속을 유지시켜줍니다.

 

웹 서버는 웹 컨테이너의 상태를 유지하기 위한 정보를 저장하고,

저장한 정보는 브라우저를 닫을 때, 일정 시간이 지났을 때, 서버에서 세션을 삭제했을 때 비로소 삭제가 이루어집니다.

 

사용자 컴퓨터에 저장되는 쿠키와는 달리 세션은

서버에 저장되어 관리되기 때문에 비교적 보안이 좋습니다.

 

그럼 세션의 사용법에 대해 알아보겠습니다.

 

 

 

⚡️ 세션에 값 저장하기


session.setAttribute(이름, 값)

setAttribute 메소드는 이름, 값 쌍으로 세션에 정보를 저장할 수 있습니다.

 

 

 

⚡️ 세션에서 값 가져오기


session.getAttribute(name)

getAttribute 메소드는 세션에 저장된 값을 이름으로 조회해 값을 반환받습니다.

 

값은 반환받을 때 Object 타입으로 돌아오기 때문에 사용하실 때 형변환이 필요합니다.

 

 

 

⚡️ 세션에서 이름 가져오기


Enumeration attr = session.getAttributeNames();

while(attr.hasMoreElements())	{
	String attrName = (String)attr.nextElement();
	String attrValue = (String)session.getAttribute(attrName);
	out.println("세션의 속성명은"+attrName+" 이고 ");
	out.println("세션의 속성값은"+attrValue+"이다.<br>");
}

세션에 어떤 값이 저장되어 있는지 확인할 때는 getAttributeName() 메소드를 사용해

문자열로 반환받은 name들을 Enumeration으로 가공합니다.

 

Enumeration은 일종의 반복자로 컬렉션에서의 iterator와 동일한 역할을 수행합니다.

 

hasMoreElements()는 다음 값이 존재하면 true, 존재하지 않으면 false를 반환하고,

nextElement()를 이용해 다음 값을 순차적으로 꺼내 리턴합니다.

 

 

 

⚡️ 세션 정보 삭제하기


// 특정 세션 값 삭제
session.removeAttribute(name)

// 모든 세션 값 삭제
session.invalidate()

removeAttribute는 파라미터로 이름을 넣어 그에 해당하는 정보를 삭제합니다.

 

invalidate는 세션 정보에 대한 모든 정보를 제거합니다.

 

로그아웃 기능을 구현할 때 주로 모든 정보를 삭제하는 invalidate가 사용됩니다.

 

 

 

⚡️ 세션 유지 시간 설정하기


<session-config>
  <session-timeout>30</session-timeout>
</session-config>

서버에 접속한 후 클라이언트가 요청을 보내지 않았을 때 세션의 기본적인 유지시간은 30분입니다.

 

이 유지시간에 대한 설정은 web.xml 파일 위와 같은 부분에서

session-timeout 태그를 직접 조작해 변경 가능합니다.

반응형

댓글


오픈 채팅