본문 바로가기
ETC.../JSP

(JSP) JSP 세션처리

by izen8 2009. 10. 31.
반응형

 

1. 세션설정


세 션 값을 설정하기 위해서는 setAttribute(String key, Object value) 메소드를 사용한다. 여기서 key는 String 형으로 지정하지만, 값은 Object 형으로 지정하기 때문에 일반적으로 많이 사용하는 String 뿐만 아니라, 프로그램에서 사용하고 있던 객체(Object)를 세션으로 설정할 수도 있다.

session.setAttribute("id", "gildong");  // 문자열을 값으로 설정

Hashtable h = new Hashtable();  // 해쉬테이블을 값으로 설절
h.put("id"  , "gildong");
h.put("name", "홍길동");
h.put("tel" , "011-673-9335");
session.setAttribute("user", h);


2. 세션에서 값 가져오기

JSP 웹 페이지에서 세션 값을 가져오기 위해서는 getAttribute(String key) 메소드를 사용한다. 여기서 주의해야 할 점으로는 세션의 값이 Object 형으로 저장되기 때문에 반환되는 데이터의 형도 동일하게 Object 형이된다. 따라서, 리턴 받고자 하는 데이터형으로 캐스팅(Casting)을 해 주어야 한다.

String    id = (String)    session.getAttribute("id");
Hashtable h  = (Hashtable) session.getAttribute("user");

위의 ①에서 해쉬테이블을 세션으로 설정한 후 세션에서 값을 가져오는 예를 getSession.jsp 프로그램으로 구현하면 다음과 같다.


3. 세션에서 사용하는 주요 메소드

앞 에서 살펴본 session 객체는 javax.servlet.http.HttpSession 인터페이스로 구현되어 있으며, setAttribute() 와 getAttribute() 외에더 다음과 같은 여러 가지의 메소드를 제공하고 있다.

public Object getAttribute(String key)
세션에 들어 있는 값중에서 key에 해당하는 값을 가져오며, 값이 없을 경우 null을 리턴한다. 리턴하는 데이터형이 Object이므로 String이나 Hashtable 등으로 캐스팅해서 사용해야 한다.


public void setAttribute(String key, Object value)
문자열로 지정되는 key 값에 해당하는 세션 값을 Object 형으로 설정한다.


public void removeAttribute(String key)
세션중에서 key에 해당하는 값을 제거한다.


public Enumeration getAttributeNames()
세션으로 설정되어 있는 모든 키를 java.util.* 에 포함되어 있는 Enumberation 형태로 가져온다. 따라서, 이 메소드를 사용하기 위해서는 page 지시부에 java.util.*를 import 한 후 사용해야 한다.


public String getId()
세션이 열리면 각 세션에 대해서 고유한 ID가 할당되는데, 이 아이디를 문자열로 리턴한다.


public long getCreationTime()
세션이 처음 생성된 시간을 밀리 초로 계산하여 long형 정수로 리턴하며, 기준은 70년1월1일 00시 00분 00초이다.


public long getLastAccessedTime()
세션에 클라이언트가 마지막으로 request를 보낸 시간을 long 형으로 리턴한다.

public int getMaxInactiveInterval()
클라이언트의 요구가 없을 때 서버가 현재의 세션을 언제까지 유지할지를 정수로 리턴하며, 디폴트로는 30분으로 지정되어 있다.


public void invalidate()
현재의 세션을 모두 제거하므로, 세션의 속성값들이 자동적으로 상실된다.


public boolean isNew()
서버측에서 새로운 session객체를 생성하고 아직 클라이언트에게 세션ID를 할당하지 않은 경우 true를 리턴하고 기존의 세션이 유지되고 있는 상태라면 false를 리턴한다.


public void setMaxInactiveInterval(int seconds)
세션이 유지되는 시간을 밀리 초 단위로 설정하는 것으로서, 이 시간동안 클라이언트의 요청이 없으면 세션은 제거된다.

 

반응형

댓글