프로그래밍 공부

2025.02.19 JSP 공부

3452 2025. 2. 19. 17:20

세션(session)

 

클라이언트와 웹 서버간의 상태를 지속적으로 유지하는 방법이다.

 

기존의 request는 response를 거치면 사라지는 반면에

 

session의 경우에는 Invalidate() 하기 전까지 계속 사용할 수 있다.

 

 

세션 메서드

메서드 반환 유형 설명
getAttribute(String name) java.lang.Object 세션 속성 이름이 name인 속성 값을 Object 형으로 반환한다. 해당 속성 이름이 없으면 null을 반환한다.
getAttributeNames() java.util.Enumeration 세션 속성 이름을 Enumeration 객체 타입으로 반환한다.
getCreationTime() long 세션이 생성된 시간을 반환한다. 
getId() java.lang.String 세션에 할당된 고유 아이디를 String 형으로 반환한다.
getLastAccessedTime() long 해당 세션에 클라이언트가 마지막으로 request를 보낸 시간을 반환한다.
getMaxInactiveInterval(int interval) int 해당 세션을 유지하기 위해 세션 유지 시간을 반환한다.
기본값은 1800초(30분)이다.
isNew() boolean 해당 세션의 생성 여부를 반환한다. 처음 생성된 세션이면 true, 이전에 생성된 세션이면 false를 반환한다.
removeAttribute(String name) void 세션 속성 이름이 name인 속성을 제거한다.
setAttribute(String name, Object value) void 세션 속성 이름이 name인 속성에 value를 할당한다.
setMaxInactiveInterval(int interval) void 해당 세션을 유지하기 위한 세션 유지 시간을 초 단위로 설정한다.
Invalidate()   현재 세션에 저장된 모든 세션 속성을 제거한다.

 

 

역할이 같은 리퀘스트와 비슷한 메서드를 가지고 있다.

 

세션의 경우 Invalidate()로 제거하지 않는 한 지속적인 사용이 가능하므로 시간과 관련된 메서드들이 있다.

 

예를 들어 getLastAccessedTime()의 경우 마지막 로그인 시간을 계산해서 장기 미접속 인원을 식별한다거나

 

getMaxInactiveInterval() 메서드를 이용해서 은행이나 공공기관 로그인 시간을 제한해서 시간이 지나면 자동으로 로그아웃이 되게 할 수 있다.

 

 

세션 생성

 

세션의 경우 JSP에서는 별 다른 설정을 하지 않아도 자동으로 생성된다.

 

그렇기 때문에 따로 생성하지 않고도 session.setAttribute() session.getAttribute() 등의 메서드를 사용할 수 있다.

 

 

그렇지만 세션이 항상 필요한것은 아니기 때문에 불필요한 세션 생성으로 인해 메모리 낭비가 발생할 수 있다.

 

그렇기 때문에 세션을 수동으로 생성하는 방법이 존재하며, 아래는 자동생성을 끄고 수동으로 생성하는 방법이다.

 

<%@ page session = "false" %> // 세션 자동 생성 끄기(기본값 true)

 

<%

      HttpSession httpSession = request.getSession(); // 수동으로 세션 생성

%>

 

 

세션 정보

 

리퀘스트와 마찬가지로 setAttribute()로 값을 넣게 되면 Object 형태로 자동으로 형변환되서 session 안에 저장되기 때문에 getAttribute()로 꺼내면 Object 형으로 나오게 된다.

 

그렇기 때문에 변수에 담기 위해서는 반드시 앞에 (String)을 붙이거나 뒤에 .toString() 메서드를 활용하여 캐스팅 해서 변수에 담아야한다.

 

예시)

 

String value = session.getAttribute(name); // Object 타입을 String에 담으려 해서 오류 발생

 

String value = (String)session.getAttribute(name); // String으로 캐스팅하여 변수에 담기 때문에 가능

 

String value = session.getAttribute(name).toString(); // toString()메서드로 String으로 변환하기 때문에 가능

 

 

세션 삭제

 

단일 세션 삭제하기

 

void removeAttrubute(String name) // name을 키로 가지는 속성 삭제

 

session.removeAttribute("id"); // id를 키로 가지는 속성을 세션에서 삭제

 

다중 세션 삭제하기

 

void invalidate() // 세션 객체 자체를 삭제

 

session.invalidate(); // 세션 객체 자체를 삭제

 

 

세션 유효 시간 설정

 

void setMaxInactiveInterval(int interval) // interval초 후에 세션을 자동으로 삭제한다.

 

세션 유효 시간은 interval을 빈칸으로 두면 기본값이 1800초이다.

 

session.setMaxInactiveInterval(60*60); // 3600초(1시간) 후에 자동으로 세션 삭제

'프로그래밍 공부' 카테고리의 다른 글

2025.02.21 JSP 공부  (0) 2025.02.21
2025.02.20 JSP 공부  (0) 2025.02.20
2025.02.18 JSP 공부  (0) 2025.02.18
2025.02.17 JSP 공부  (0) 2025.02.17
2025.02.14 JSP 공부  (0) 2025.02.14