Session은 web browser당 하나씩만 발급된다.
■ Session객체가 제공하는 메소드
1) 리턴값 java.lang.Object
메소드 getAttribute(java.lang.String name) :
세션에 바인딩된 객체중 name에 해당되는 객체 값을 가져온다.없을겨우에는 null을 반환
반환값은 Object형 이므로 반드시 형변환을 하여 사용한다.
2) 리턴값 java.util.Enumeration
메소드 getAttributeNames() :
세션에 바인딩된 모든 객체들의 이름을 Enumeration형으로 되돌려 준다.
서블릿 2.1과 이전 API들의 getValueNames메소드 대신 이것을 사용한다.
3) 리턴값 long
메소드 getCreationTime() :
세션이 만들어진 시간을 반환한다. 반환값은 long형이며 이값은 GMT 시간으로 1970.1.1
자정을 기준으로 단위의 값을 반환한다.
4) 리턴값 java.lang.String
메소드 getId() :
해당 세션을 가리키는 고유 id값을 String 형으로 변환한다.
5) 리턴값 long
메소드 getLastAccessedTime() :
해당 세션이 client가 마지막으로 request를 보낸 시간을 long형으로 반환한다.
반환값은 long형이며 이값은 GMT시간으로 1970.1.1 자정을 기준으로 한 밀리second
단위의 값을 되돌려 준다.
6) 리턴값 int
메소드 getMaxInactiveInterval() :
사용자가 다음 요청을 보낼때까지 세션을 유지하는 최대시간(초 단위)을 반환한다.
7) 리턴값 boolean
메소드 isNew() :
해당 세션이 처음 생성되었으면 true값을 반환하고 이전에 생성이 된 세션이라면 false
를 반환한다.
8) 턴값 void
메소드 removeAttribute(java.lang.Strng name) :
지정된 이름에 해당하는 객체를 이 세션에서 제거한다. 서블릿 2.1과 이전 API들의
removeValue 메소드 대신 이것을 사용한다.
9) 리턴값 void
메소드 setAttribute(java.lang.String name,java.lang.Object value) :
지정된 이름을 사용하여 이 세션에 객체를 바인딩 시킨다.이전의 putValue메소드 대신 이것
을 사용해야 한다.
10) 리턴값 void
메소드 setMaxInactiveInterval(int interval) :
사용자가 다음 요청을 보낼때 까지 세션을 유지하는 최대시간(초단위)을 설정한다.
이 시간을 넘기면 서블릿 엔진은 세션을 종료한다.
11) 리턴값 void
메소드 Invalidate() :
해당 세션을 없애고 세션에 속해있는 값들을 없앤다.
■ session에 저장된 값을 얻기 위해서는 session 의 getAttribute 메소드를 사용.
- session객체 안에 지정한 name에 해당속성이 없으면 null값을 되돌린다.
- 반환값이 Object형이기 때문에 반드시 형변환(casting)을 해야 한다.
형식 : Object getAttribute(String anme);
ex1) String ls_test="세션에 저장된 데이터";
session.setAttribute("Testing",ls_test);
ex2) Object lobj_getdata=session.getAttribute("Testing");
String ls_getdata=(String)lobj_getdata;
예)
file 이름 : getAttribute.jsp
<%@ page contentType="text;charset=euc-kr"%>
<html>
<body>
<center><h3>[ 세션 값을 얻어오는 예제 ]</h3></center>
<hr>
얻어온 값은 다음과 같다.
<hr>
<%
Object lobj_getdata=session.getAttribute("Testing");
String ls_getdata=(String)lobj_getdata;
int li_primitive=(Integer)session.getAttribute("Mydata");
out.println(" 설정된 세션값 [1] : "+ls_getdata+"<br><br>");/*
String ls_test="세션에 저장된 데이터";
session.setAttribute("Testing",ls_test);//"Testing"을 키로 문자열을 저장.result=>세션에 저장된 데이터
*/
out.println(" 설정된 세션값 [2] : "+li_primitive+"<hr>");
/*session.setAttribute("Mydata",10);//"Mydata"를 키로 정수를 저장.
result=> 10*/
%>
</body>
</html>
■ getAttributeNames 메소드 : 세션에 들어있는 모든 키 값을 가져오기 위해서 사용되는 메소드이다.
이 키 값들은 Enumeration형으로 반환된다.
형식 : Enumeration getAttributeNames()
Enumeration형은 데이터를 뽑아올때 유용한 인터페이스 Enumeration객체는 java.util 팩키지에 정의 되어있으므로
java.util.Enumeration을 import 시켜야 한다.
setAttribute 메소드에 의해 설정된 세션값들이 getAttributeNames에 의해 Enumeration형으로 반환된다.
Enumeration 객체는 여러 아이템들을 저장하는 컬렉션 클래스의 일종이며,Enumeration객체에서 아이템을 뽑아
오기 위해서는 hasMoreElements와 nextElement 메소드를 적절히 사용해야 한다.
■ 메소드
hasMoreElements : Enumeration 객체에 뽑아올 데이터가 있는지를 검사하여 있다면 true를 더 이상
데이터가 존재하지 않는다면 false를 리턴
nextElement : 다음 아이템이 존재한다는 전재하에 아이템을 하나씩 뽑아오는 역할을 한다.
nextElement 메소드도 getAttribute 메소드처럼 Object 형으로 값을 반환해 주므로 이를 형변환(casting)해야 한다.
※ 세션에 저장된 여러개의 값들을 얻어오기 위한 방법
ex)
Enumeration enum_app=session.getAttributeNames();
while(enum_app.hasMoreElements()){
ls_name=enum_app.nextElement().toString();
ls_value=session.getAttribute(ls_name).toString();
out.println("얻어온 세션 이름 : "+ls_name+"<br>");
out.println("얻어온 세션의 값 : "+ls_value+"<br>");
}
예제)
file 이름 : getAttributeNames.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import="java.util.Enumeration" %>
<html>
<body>
<center><h3>[ 설정된 세션값을 얻어오는 예제 - 2 ]</h3></center>
getAttributeNames() 메소드를 사용하여 세션값을 얻어오는 예제입니다.
<hr>
<%
String ls_validate="현재 페이지는 물론 이전 페이지에서 설정된 세션값들도 나타납니다.";
session.setAttribute("Validate",ls_validate);
String ls_name="";
String ls_value="";
Enumeration enum_app=session.getAttributeNames();
int i=0;
while(enum_app.hasMoreElements()){
i++;
ls_name=enum_app.nextElement().toString();
ls_value=session.getAttribute(ls_name).toString();
out.println("얻어온 세션이름 : ["+ i +"]"+ls_name+"<br>");
out.println("얻어온 세션 값 : ["+ i +"]"+ls_value+"<br>");
}
%>
</body>
</html>
결과------------------------>
[ 설정된 세션값을 얻어오는 예제 - 2 ]
getAttributeNames() 메소드를 사용하여 세션값을 얻어오는 예제입니다.
얻어온 세션이름 : [1]Validate
얻어온 세션 값 : [1]현재 페이지는 물론 이전 페이지에서 설정된 세션값들도 나타납니다.
session에 값을 저장하기 위해서는 session 객체의 setAttribute메소드를 사용. 형식 : session.setAttribute(String name,Object value);
name은 String형으로 들어가고,value는 Object형 이어야만 한다.
ex) String ls_test="세션에 저장된 데이터";
session.setAttribute("Testing",ls_test);
예문)
file 이름 setAttribute.jsp
<%@ page contentType="text/html;charset=euc-kr"%>
<%
String ls_test="세션에 저장된 데이터";
session.setAttribute("Testing",ls_test);//"Testing"을 키로 문자열을 저장.
session.setAttribute("Mydata",10);//"Mydata"를 키로 정수를 저장.
%>
<html>
<body>
<center><h3>[ session값을 설정하는 예제 ]</h3></center>
<hr>
세션을 설정하는 페이지
<hr>
</body>
</html>