Session

Session

  • Cookie처럼 웹브라우저와의 관계를 유지하기 위한 수단
  • 서버상의 객체로 존재 Cf)Cookie는 클라이언트의 특정 위치에 저장
  • 따라서 Session은 서버에서만 접근 가능하여 보안이 좋고, 저장할 수 있는 데이터의 한계가 없음
  1. 클라이언트 요청 - 웹브라우저
  2. Session 자동 생성
  3. Session 속성 설정 - session내부 객체의 메소드 이용
  • 각 브라우저마다 세션 생성됨

Session 관련 메소드

1
2
3
4
5
6
7
8
setAttribute() - 세션에 데이터 저장
getAttribute() - 세션에서 데이터 획득
getAttributeNames() - 세셔넹 저장되어 있는 모든 데이터의 이름(유니크한 키값)을 획득
getId() - 자동 생성된 세션의 유니크한 아이디 획득
isNew() - 세션이 최초 생성되었는지, 이전에 생성된 세션인지 구분
getMaxInactiveInterval() - 세션의 유효시간 획득, 가장 최근 요청시점을 기준으로 카운트
removeAttribute() - 세션에서 특정 데이터 제거
inValidate() - 세션의 모든 데이터를 삭제

Example

  • sessionInit.jsp

    1
    2
    3
    4
    5
    6
    <%
    session.setAttribute("mySessionName","mySessionData");
    sessoin.setAttribute("myNum",12345);
    %>

    <a href="sessionGet.jsp">session get</a>
  • sessoinGet.jsp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <%
    Object obj1 = session.getAttribute("mySessionName"); // 이때 반환 값은 무조건 Object형임***
    String mySessionName = (String)obj1;
    out.println(mySessionName + "<br/>");

    Object obj2 = session.getAttribute("myNum");
    Integer myNum = (Integer)obj2;
    out.println(myNum + "<br/>");

    out.println("****************************** <br/>");

    String sName;
    String sValue;
    Enumeration enumeration = session.getAttributeNames(); // 모든 세션 값들 가져옴
    while(enumeration.hasMoreElements()){
    sName = enumeration.nextElement().toString();
    sValue = session.getAttribute(sName).toString();

    out.println("sName: " + sName + "<br/>");
    out.println("sValue: " + sValue + "<br/>");
    }

    out.println("****************************** <br/>");

    String sessionId = session.getId(); //세션 아이디 획득
    out.pringln("sessionId: " + sessionId);
    int sessionInter = session.getMaxInactiveInterval();
    out.pringln("sessionInter: " + sessionInter);

    out.println("****************************** <br/>");

    session.removeAttribute("mySessionData"); //특정 데이터를 삭제
    Enumeration enumeration1 = session.getAttributeNames();
    while(enumeration1.hasMoreElements()){
    sName = enumeration1.nextElement().toString();
    sValue = session.getAttribute(sName).toString();

    out.println("sName: " + sName + "<br/>");
    out.println("sValue: " + sValue + "<br/>");
    }

    out.println("****************************** <br/>");

    session.inValidate(); //세션 자체를 삭제
    if(request.isRequestedSessionIdValid()){
    out.println("session valid");
    } else {
    out.println("session invalid");
    }
    %>
Comments