서버와의 관계를 유지하기 위한 수단이다.
단, 쿠키와 달리 클라이언트의 특정 위치에 저장되는 것이 아니라, 서버상에 객체로 존재 한다.
그렇기 때문에 세션은 서버에서만 접근 가능하고 보안이 좋고, 저장할 수 있는 데이터에 한계가 없다.
세션객체는 JSP컨테이너에서 브라우저하나당 고유id를 가진 session을 생성해준다. 따라서 여러 브라우저가 요청을 해도 그 브라우저 고유 id의 session을 각각 만들어 줍니다.
여러 브라우저의 요청 시 session 생성 과정
메소드 명 |
기능 |
setAttribute() |
세션에 데이터를 저장한다. |
getAttribute() |
세션에서 데이터를 가져온다. ( 주의 사항 : 세션도 객체이기 때문에 Object Type이다. ) |
getAttributeNames() |
세션에 저장되어 있는 모든 데이터의 이름(고유 키값)을 가져온다. |
getId() |
자동 생성된 세션의 고유 아이디를 가져온다. |
isNew() |
세션이 최초 생성되었는지, 이전에 생성된 세션인지를 판단 |
getMaxInactiveInterval() |
세션의 유효시간을 가져온다. ( 가장 최근 요청시간을 기준으로 카운트 ) |
removeAttribute() |
세션에서 특정 데이터를 제거한다. |
Invalidate() |
세션의 모든 데이터를 삭제한다. |
* getMaxInactiveInterval( ) 은 default 값으로 30분으로 설정되어있다.
변경하기 위해서는 해당 톰캣의 web.xml을 수정해야된다. ( Tomcat > conf > web.xml > Ctrl + F ( session-config ) )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Session Init</title> </head> <body> <h1>sessionInit.jsp 입니다.</h1> <% // session.setAttribute("Name","value"); session.setAttribute("id", "ChrisMare"); session.setAttribute("pw", 1234); %> <a href="sessionGet.jsp">sessiongGet.jsp</a> </body> </html> | cs |
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 54 55 56 57 58 59 60 61 62 | <%@page import="java.util.Enumeration"%> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Session Get</title> </head> <body> <h1>sessionGet.jsp 입니다.</h1> <% Object sessionObj = session.getAttribute("id"); String id = sessionObj.toString(); out.println(id + "<br>"); Object sessionObj2 = session.getAttribute("pw"); Integer sessionPw = (Integer)sessionObj2; out.println(sessionPw + "<br>"); out.println("<hr>"); String sessionName; String sessionValue; Enumeration enumeration = session.getAttributeNames(); // 세션객체를 직렬화해서 받음 while(enumeration.hasMoreElements()){ sessionName = enumeration.nextElement().toString(); sessionValue = session.getAttribute(sessionName).toString(); out.println("sessionName : " + sessionName + "<br>"); out.println("sessionValue : " + sessionValue + "<br>"); } out.println("<hr>"); String sessionID = session.getId(); // 브라우저당 session 고유 ID out.println("sessionID : " + sessionID + "<br>"); int s_interval = session.getMaxInactiveInterval(); // session 최대 유효시간 => 톰캣 xml파일에 기본값 60분 out.println("sessionInterval : " + s_interval + "<br>"); out.println("<hr>"); // 해당 session Name 삭제 session.removeAttribute("id"); // 삭제 후 다시 직렬화해서 재 확인 enumeration = session.getAttributeNames(); while(enumeration.hasMoreElements()){ sessionName = enumeration.nextElement().toString(); sessionValue = session.getAttribute(sessionName).toString(); out.println("sessionName : " + sessionName + "<br>"); out.println("sessionValue : " + sessionValue + "<br>"); } out.println("<hr>"); session.invalidate(); // session 모두 삭제 // session이 유효한지 확인을 위해 재요청 if(request.isRequestedSessionIdValid()) { out.println("session valid"); }else{ out.println("session invalid"); } %> </body> </html> |
JSP 에러 종류 (0) | 2018.10.19 |
---|---|
예외 페이지 (0) | 2018.10.19 |
쿠키(Cookie) (0) | 2018.10.18 |
request/response 객체 (0) | 2018.10.18 |
JSP 동작 원리 (0) | 2018.10.18 |
댓글 영역