세션
상태 유지를 위한 session 객체
보안과 데이터 기준으로 봤을 때 쿠키보다는 세션이 더 뛰어나기 때문에, 쿠키보다는 세션을 사용
쿠키는 로컬호스트(개인pc)에 저장되며, 세션은 서버에 저장이 된다.
보통 해킹할 때 서버보다는 개인 pc가 더 쉽기 때문에 세션이 더 보안이 뛰어난 것.
또한 저장 용량도 쿠키는 1.2mb가 최대지만, 세션은 제한이 없다.
세션과 브라우저의 관계는 브라우저 1개당 세션이 1개씩 존재한다.
web.xml : 기본으로 30분이 설정되어 있으며, 30분이 지나면 세션이 끊어진다.
- 이클립스에서 확인이 가능하다.
session 객체가 제공하는 메소드
- 세션이름에 해당하는 값을 가져옴(리턴 타입 : object)
- 모든 세션객체 이름 가져올 때(리턴은 열거형으로)
- 매개변수, 세션 이름 값 설정
- 초단위로 세션값 설정
session에 값 저장하기 / 얻어오기
- 세션이름을 Testing로 설정하고, 그 안에 ls_test의 값을 담음
- getAttribute : 세션 이름으로 값 가져오기
<getAttribute.jsp 예제>
- set값을 설장하지 않고, get값만 설장한 다음에 실행하면 위와 같은 오류 발생
<setAttribute.jsp 예제>
- 이렇게 set값을 설정한 다음에 get을 실행하면 위와같이 제대로 값을 가져오게 됨
getAttributeNames 메소드와 Enumeration 인터페이스
- 값이 참이면
- 다음 값을 가져옴
- 반복문에서 사용하는 메소드
세션에 저장된 여러가지 값들을 얻어오기위한 방법
- 이전의 예제들인 get과 set들을 모두 실행한 다음에 이 예제를 실행하면 위의 그림처럼 모든 값을 가져오게 됨
세션 정보 얻어오기
- 세션 id값
- 세션이 만들어진 시간(리턴 : long)
- 클라이언트가 마지막으로 요청한 시간
- 세션이 처음 만들어졌으면 true 아니면 false
- 기본 30분으로 설정되어있는 web.xml의 메소드
<예제>
- get~time 메소드의 단위는 밀리초이며, 6만으로 나눈 것은 분단위를 구하기 위함
세션 값 삭제하기
- 삭제
- 전체 삭제
<예제 - 세션에 저장된 모든 특정 객체 삭제>
- 세션 6개를 만든 뒤 1개를 삭제하고 다시 실행하여 5개가 뜨도록
- 만든 예제는 3개 만들고, 1개 삭제해서 2개 뜨도록
- s_name2를 삭제한 후에 다시 불러오면 이 세션을 제외하고 출력됨
<예제 - 설정된 모든 세션 제거>
세션 유효시간 설정