본문 바로가기
Back_end/JSP

JSP - 세션

by hyeon1016 2024. 10. 30.

세션

session은 JSP의 내장 객체 중 하나로 클라이언트와 서버 간의 특정 정보를 지속적으로 유지하는 데 사용된다. 주로 로그인 인증, 장바구니 등에 사용하며 사용자가 브라우저를 닫지 않는 이상 계속 유지된다.

서버에서만 접근 가능하기 때문에 보안이 좋다.

 

WHY?

- 특정 정보를 유지하기 위함

- 데이터 관리가 편하다.

 

session 내장 객체의 메서드

메서드 반환 타입 설명
getAttribute(String name) Object 속성 이름이 name인 값을 Object타입으로 반환 
(형변환 필수)
getAttributeNames() Enumeration 모든 속성의 이름을 Enumeration 객체로 반환 
(while 필수)
getCreationTime() long 1970년 1월 1일 00:00:00 UTC(유니버설 타임)부터 
세션이 생성된 시간까지 경과한 시간을 반환 1/1000초
getId() String 세션의 고유 아이디를 반환한다. (주민등록번호)
getLastAccessedTime() long 해당 세션에 클라이언트가 마지막으로 
request를 보낸 시간을 반환
getMaxInactiveInterval
(int interval)
int 라이프 사이클의 남은 시간 반환(세션의 유지 시간)
/기본값 1800초
isNew() boolean 세션의 생성 여부 반환
/ 첫 생성시 true, 중복 생성시 false
removeAttribute(String name) void name 속성을 제거한다.
setAttribute(
String name, Object value)
void name에 value 할당
setMaxInactiveInterval
(int interval)
void 세션 유지 기간 설정 (라이프 사이클 설정)
Invalidate()   현재 세션에 저장된 모든 세션 속성을 제거한다.



세션 생성

setAttribute()

session.setAttribute(String name, Object obj);

 

request 객체의 setAttribute와 동일한 방법으로 사용 가능하다.(key = value)

 

getSession()

HttpSession session = request.getSession(true);

 

파라미터를 true로 설정하면 새로운 세션을 생성한다. 파라미터가 없는 것과 동일하다.

*새로운 세션을 생성할 때 사용한다.

 

HttpSession session = request.getSession(false);

 

파라미터를 false로 설정했을 때 생성된 세션이 있다면 그 세션을 반환하며, 없다면 null을 반환한다.

*생성된 세션이 필요할 때 사용한다.

 

 

세션 정보

단일 세션

String id = (String)session.getAttribute("id");

 

getAttribute() 메서드에 세션의 키(name)을 파라미터로 설정하여 특정 세션의 속성 값을 가져올 수 있으며, 반드시 형변환을 해줘야한다.

*만약 세션이 없다면 null값이 반환된다.

 

다중 세션

Enumeration en = session.getAttributeNames();

while(en.hasMoreElements()){
	String name = en.nextElement().toString();
	String value = session.getAttribute(name).toString;
}

 

getAttributeNames() 메서드를 사용하여 세션의 모든 키(name)을 Enumeration 객체에 담아 가져올 수 있다.

*while문을 사용해 세션의 키(name)를 구할 수 있다. 

 

 

세션 삭제

단일 세션

session.removeAttribute(String name);

 

removeAttribute() 메서드의 파라미터를 name으로 주면 세션의 키(name)가 name인 세션을 삭제한다.

 

다중 세션

session.invalidate();

 

모든 세션을 삭제하는 메서드이며, 로그아웃에 사용한다.

 

 

유효 시간 설정

session.setMaxInactiveInterval(int interval);

 

세션이 유지되는 시간을 설정하는 메서드로 초 단위로 설정 가능하다.
*세션의 기본 유효 시간은 1800초로 30분이다.

 

'Back_end > JSP' 카테고리의 다른 글

JSP - 데이터베이스  (0) 2024.10.30
JSP - 쿠키  (0) 2024.10.30
JSP - 필터  (0) 2024.10.28
JSP - 예외처리  (0) 2024.10.28
JSP - 시큐리티/보안 처리  (0) 2024.10.28