본문 바로가기

JSP

session.jsp

세션은 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법으로 웹 쇼핑몰에서 장바구니나 주문 처리와 같은 회원 전용 페이지의 경우 로그인 인증을 통해 사용권한을 부여하고 다른 웹 페이지에 갔다와서 로그인 상태가 유지되므로 회원전용 페이지를 계속 사용할 수 있는데 이렇게 권한 상태를 유지하는 것이 세션의 역할이다. 세션은 웹서버에서만 접근이 가능하고 보안유지에 유리하고 데이터를 저장하는데 한계가 없는 장점이 있다. 세션은 웹 서버에만 존재하는 객체로 웹 브라우저마다 하나씩 존재하므로 웹 서버의 서비스를 제공받는 사용자를 구분하는 단위가 된다. 세션을 이용하면 클라이언트가 웹 서버의 세션에 의해 가상으로 연결된 상태가 되므로 웹 브라우저를 닫기전까지는 웹을 이동해도 사용자 정보를 잃지 않는다. jsp는 session 내장객체와 메소드를 제공하여 세션을 활용할 수 있다.

 

session내장객체 메소드의 종류


세션을 사용하려면 세션을 생성해야 하는데 session은 내장객체이기 때문에 바로 사용이 가능하고 setAttribute("속성명", "속성값")을 이용해서 세션의 속성을 설정하면 계속 세션 상태를 유지할 수 있다. 만약 동일한 세션의 속성명으로 세션을 생성하면 마지막에 설정한 것이 세션 속성값이 된다.

세션에 저장된 하나의 세션 속성 이름에 대한 속성값을 얻어오려면 getAttribute()를 사용하며 이 메소드는 반환형이 oBject이므로 반드시 형 변환을 사용해야 한다. 매개변수로 세션에 저장된 세션 속성 이름을 넣으면 속성값을 반환하는데 해당 속성명이 없으면 null을 반환한다.

세션에 저장된 여러개의 세션 속셩명에 대한 속성값을 얻어오려면 getAttributeNames()를 사용하며 반환 유형이 Enumeration 객체 타입이므로 모든 세션 정보를 얻어오는데 유용하다. Enum 객체를 사용하려면 jsp페이지에 <%@page import="java.util.Enumeration"%>로 import 한다.

세션을 더이상 유지할 필요가 없으면 removeAttribute("속성명")을 사용하면 삭제하고 싶은 속성명을 개별적으로 삭제가 가능하고 invalidate()를 사용하면 모든 세션속성값을 삭제한다. 세션이 삭제되면 현재 사용중인 session 내장객체가 삭제되므로 내장객체에 저장된 해당 속성도 삭제된다. <br> JSessionId는 서버에서 사용자를 식별하기 위한 식별자로 자동으로 쿠키에 생성해주는 sessionId값으로 session.getId()를 이용해 얻을 수 있다. 세션이 끊기지 않는 이상 유지되는 값이며 브라우저에서 강제삭제는 가능하지만 refresh하면 다시 자동 생성된다.

단일 세션 삭제하기
-세션에 저장된 하나의 세션 속성 이름을 삭제하려면 removeAttribute() 메소드를 사용
void removeAttribute("memeberId");

다중 세션 삭제하기
-세션에 저장된 모든 세션 속성 이름을 삭제하려면 invalidate() 메소드를 사용
session.invalidate()

세션 유효 시간
-세션을 유지하기 위한 세션의 일정 시간
-웹 브라우저에 마지막 접근한 시간부터 일정 시간 이내에 다시 웹 브라우저에 접근하지 않으면 자동으로 세션이 종료
-세션 유효 시간을 설정하기 위해 session 내장 객체의 setMaxInactiveInterval() 메소드를 사용
session.setMaxInactiveInterval(60*30);//default값 (단위:초)
session.setMaxInactiveInterval(5);//5초로 변경

'JSP' 카테고리의 다른 글

cookie  (0) 2023.07.12
filter jsp  (0) 2023.07.07
프로그래밍적 시큐리티&예외처리 jsp  (0) 2023.07.06
다국어 처리, 시큐리티 jsp  (0) 2023.07.05
정규표현식 유효성 검사  (0) 2023.07.04