JSP Servlet 기초(8) 세션
- JSP
- 2018. 1. 29. 18:39
이번엔 jsp 세션에 대해 알아 보겠습니다
앞에서 웹브라우저와의 관계를 유지하는 수단으로 쿠키를 알아보았습니다.
세션도 쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단입니다
하지만 쿠키와 달리 클라이언트에 값을 저장하는것이 아니라
서버상에 객체로 존재 합니다. 세션은 서버에서만 접근이 가능합니다.
그래서 쿠키보다 보안이 좋고 저장할수 있는 데이터에 한계가 없습니다.
세션을 알아보기전 간단한 세션 관련 메소드를 알아 보겠습니다.
setAttribute() : 세션에 데이터를 저장합니다.
getAttribute() : 세션에서 데이터를 얻습니다.
getAttributeNames() : 세션에 저장되어 있는 모든 데이터의
이름(유니크한 키값)을 얻습니다.
getId() : 세션의 유니크한 아이디를 얻습니다
isNew() : 세션이 최초 생성되었는지 이전에 생성된 세션인지를 구분합니다.
getMaxInactiveInterval() : 세션의 유효시간을 얻습니다
가장 최근 요청 시점을 기준으로 카운트 됩니다.
removeAttribute() : 세션에서 특정 데이터를 제거합니다.
invalidate() : 세션의 모든 데이터를 삭제합니다.
이제 세션실습에 필요한 파일을 생성합니다.
세션을 생성할 sessionSet.jsp 와 세션을 확인할 sessionGet.jsp 를 만들어줍니다.
sessionSet.jsp 를 먼저 보면
1 2 3 4 5 6 7 8 9 10 11 | <body> <% session.setAttribute("SessionName", "SessionValue"); session.setAttribute("asdfg", 12345); %> <a href="sessionGet.jsp">session Get</a> </body> | cs |
session.setAttribute로 세션을 set(정의) 해줍니다.
세션의 이름은 SessionName , 그 안에 들어갈 값(value)는
SessionValue 로 설정합니다
그밑에 세션은 이름을 asdfg, 값(value)은 12345 로 설정한다.
이렇게 총 2개의 세션을 생성한것이다.
다음 하이퍼 링크로 session Get 을 눌러 sessionGet.jsp 로 이동되게 합니다.
sessionGet.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 51 52 53 | <body> <% Object obj1 = session.getAttribute("SessionName"); String SessionName = (String)obj1; out.println(SessionName +"<br />"); Object obj2 = session.getAttribute("asdfg"); Integer asdfg = (Integer)obj2; out.println(asdfg +"<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.println("sessionID : " + sessionID + "<br />"); int sessionInter = session.getMaxInactiveInterval(); out.println("sessionInter : " + sessionInter + "<br />"); out.println("************************ <br />"); session.removeAttribute("SessionName"); 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"); } %> </body> | cs |
먼저 4line에서 Object obj1 = session.getAttribute("SessionName");
을 보면 sessionSet.jsp 에서 SessionName 이라는 이름으로 만든 세션을
session.getAttribute 으로 받아온다. 받아온 데이터를
Object 형으로 obj1 이라는 이름으로 다시 저장하는데
전에 request.getParameter 로 파라미터값을 요청 받아오면 String 으로 반환되어
값을 저장 할때 String 형으로 저장 했다 이와 마찬가지로
session.getAttribute 를 이용하여 세션값을 가져오면 Object 형으로 값이 반환되기
때문에 Object 형으로 값을 저장하는 것이다.
다음 obj1에 저장된 세션값을 다시 String 형으로 형변환 시킨후
SessionName 라는 String 형식 의 값으로 저장한다.
String SessionName = (String)obj1;
out.println(SessionName +"<br />");을 통해 SessionName 의 값을 출력한다
출력값은 SessionValue 가 될것이다.
8,9,10 line 은 두번째 세션을 똑같이 정의한다.
다음 16line Enumeration enumeration = session.getAttributeNames();
에서 Enumeration 은 열거형 인터페이스로 저장된 값들을 직렬화로 저장한다.
즉 session.getAttributeNames 로 세션의 이름들을 불러와 enumeration에
저장한다음 반복문인 while 문으로 세션의 이름을 뽑아 내는거다.
while문 안의enumeration.hasMoreElements()는 요소가 존재 하면 true를
반환 한다 결국 while(true) 가 되기 때문에 반복실행 된다.
다음 sName 과 sVale 에 세션에 저장된 이름과 값을 저장한다.
위와같이 출력될것이다.
'JSP' 카테고리의 다른 글
JSP Servlet 기초(10) 자바 빈 (0) | 2018.01.30 |
---|---|
JSP Servlet 기초(9) 세션을 이용한 로그인 (2) | 2018.01.29 |
JSP Servlet 기초(7) 쿠키를 이용한 로그인 (0) | 2018.01.29 |
JSP Servlet 기초(6) 쿠키생성 (2) | 2018.01.29 |
JSP Servlet 기초(5) response (0) | 2018.01.29 |