Skip to main content

Session

· 3 min read
  1. 세션이란
  • 쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단
  • 쿠키와 달리 클라이언트의 특정 위치에 저장되는 것이 아니라, 서버상에 객체로 존재
  • 따라서 세션은 서버에서만 접근이 가능하여 보안이 좋고, 저장할 수 있는 데이터에 한계가 없다.
  1. 세션 문법
  • 클라이언트의 요청이 발생하면 자동생성 (컨테이너)

  • session이라는 내부 객체를 지원하여 세션의 속성을 설정

  • 클라이언트요청 -> seesion 자동 생성 -> Session 속성 설정(session 내부 객체의 메소드 이용)

  • 관련 메소드

    • setAttribute(): 세션에 데이터를 저장
    • getAttribute(): 세션에서 데이터를 얻는다
    • getAttributeNames(): 세션에 저장되어 있는 모든 데이터의 이름(유니크한 키값)을 얻는다
    • getId(): 자동 생성된 세션의 유니크한 아이디를 얻는다.
    • isNew(): 세션의 최초 생성되었는지, 이전에 생성된 세션인지를 구분
    • getMaxInactiveInterval(): 세션의 유효시간을 얻는다. 가장 최근 요청시점을 기준으로 카운트 된다.(apache-tomcat/web.xml에서 디폴트 30분으로 되어있음 변경가능)
          <session-config>
      <session-timeout>30</session-timeout>
      </session-config>
      ```
    • removeAttribute(): 세션에서 특정 데이터 제거
    • invalidate(): 세션의 모든 데이터를 삭제
  • session 초기화

        <%
    session.setAttribute("mySessionName", "mySessionData");
    session.setAttribute("myNum", 12345);
    %>
  • session get

        <%
    Object obj1 = session.getAttribute("mySessionName");
    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 = ses`0xzion.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.println("sessionID : " + sessionID + "<br/>");
int sessionInter = session.getMaxInactiveInterval();
out.println("sessionInter : " + sessionInter + "<br/>");


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

session.removeAttribute("mySessionName");
Enumeration enumeration2 = session.getAttributeNames();
while(enumeration2.hasMoreElements()){
sName = enumeration2.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");
}

%>