본문 바로가기

JSP/JSP Programming

[JSP] 세션(Session) 객체 사용하여 값을 저장하고 얻어오기

반응형

■ 세션(Session) 객체 사용하여 값을 저장하고 얻어오기

 -. 웹 브라우저 당 한개씩 자동 생성되는 세션에 값을 저장하거나 세션에 저장된 값을 사용해 본다.

 -. 세션에 값 저장하기 위해서는 session 객체의 setAttribute 메소드를 사용

 -. 세션에 저장된 값을 얻기 위해서는 session 객체의 getAttribute 메소드를 사용


01. 세션(Session)에 값 저장하기

형식

session.setAttribute(String name, Object value);

 -. session에 값을 저장하기 위해서는 그 값을 저장하는 대상을 식별하기 위한 키가 있어야 한다.

 -. name이 바로 세션에 저장된 특정 값을 찾아오기 위한 키로 사용된다.

 -. 이 키와 일대일 대응으로 저장하고 싶은 값을 value 위치에 지정한다.

 -. name과 value는 1:1 대응이다.

 -. name은 String 형으로 들어가고 value는 Object형이어야만 한다.

    (즉 int, doublic, char등의 primitive 형은 사용할 수 없다.)

 -. 동일한 이름으로 세션에 저장하게 되면, 항상 덮어씌우게 된다.


02. 세션(Session)에 저장된 값 얻어오기

형식

Object getAttribute(String name)

 -. 세션에 저장된 값을 얻어오기 위해 사용되는 getAttribute 메소드를 사용한다.

 -. 세션 객체 안에 지정한 name에 해당되는 속성이 없으면 getAttribute가 null 값을 되돌린다.

 -. 주의할 점은 반환되는 값이 Object형이기 때문에 반드시 적절한 형변환을 해야한다.

 -. 세션에 저장된 값을 String 형태로 얻어오려면 cast 연산자로 형 변환을 해야한다.

     왜냐하면 getAttribute 메소드는 결과값을 Object 형으로 되돌리기 때문이다.

 -. 세션 내부에서는 이를 Object 형으로 관리하고 이를 되돌려질 때에도 Object형으로 되돌린다.

 -. 만일 primitive 형인 int변수에 저장하려면 레퍼 클래스인 Integer 형으로 변환해야 하낟.


# 세션에 값 저장하고 저장된 값 얻어오기

  setAttribute.jsp (세션에 값 저장하기)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
    String ls_test = "세션에 저장된 데이터가 바로 접니다. ^O^";
    session.setAttribute("Testing", ls_test);    // "Testing"을 키로 문자열을 저장
   
    session.setAttribute("MyData", 10);    // "MyData"를 키로 정수를 저장
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>세션에 값 설정하기</title>
</head>
<body>
<center><h3>[ 세션 값을 설정하는 예제 ]</h3></center>
<hr/>
세션값을 설정하는 페이지 입니다.
<hr/>
</body>
</html>

 소스보기

 출력화면

 getAttribute.jsp (세션에 저장된 값 얻어오기)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>세션에 저장된 값 얻어오기</title>
</head>
<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/>");
    out.println("설정된 세션값 [2] → " + li_primitive + "<hr/>");
%>
</body>
</html>

 소스보기

 출력화면




03. getAttributeNames 메소드와 Enumeration 인터페이스

 -. getAttributeNames 메소드는 세션에 들어있는 모든 키 값을 가져오기 위해서 사용되는 메소드이다.

    이 키 값들은 Enumeration 형으로 변환된다.

형식

Enumeration getAttributeNames();

 -. Enumeration형은 데이터를 뽑아올 떄 유용한 인터페이스(Interface)로써 손쉽게 포함된 모든 데이터를 뽑아올 수 있다.

 -. Enumeration 객체는 java.util 패키지에 정의되어 있으므로서 사용하려면 java.util.Enumeration을 import 시켜야 한다.

 -. setAttribute 메소드에 의해 설정된 세션값들이 getAttribute에 의해 Enumeration형으로 반환된다.

 -. Enumeration 객체는 여러 아이템들을 저장하는 컬렉션 클래스의 일종이다.

 -. Enumeration 객체에 여러 아이템들을 뽑아오기 위해서는 hasMoreElements와 nextElement 메소드를 적절하게 사용해야 한다.


메 소 드

설                           명

hasMoreElements

 -. Enumeraion 객체에 뽑아올 데이터가 있는지를 검사하여 있다면 true를

    더이상 데이터가 존재하지 않는다면 false를 리턴한다.

nextElement

 -. 다음 아이템이 존재한다는 전제하에서 아이템을 하나씩 뽑아오는 역할을 한다.

 -. nextElement 메소드도 getAttribute 메소드처럼 Object형으로 값을 반환하므로 이를 형 변환 해야 한다.



# 설정된 모든 세션의 키와 값을 얻어와 출력하기

 getAttributeNames.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.util.Enumeration" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>설정된 모든 세션의 키와 값을 얻어와 출력하기</title>
</head>
<body>
<center>
    <h3>[ 설정된 세션 값을 얻어오는 예제 - 2 ]</h3>
</center>
<hr/>
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("<br/>얻어온 세션 이름 [ " + i +" ] : " + ls_name + "<br/>");
        out.println("<br/>얻어온 세션 값 [ " + i +" ] : " + ls_value + "<hr/>");
}
%>
</body>
</html>

 소스보기

 출력화면



반응형