세션
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 |