상세 컨텐츠

본문 제목

세션(session)

WebProgramming/JSP

by ChrisMare 2018. 10. 19. 16:53

본문

세션(Session)

서버와의 관계를 유지하기 위한 수단이다.

단, 쿠키와 달리 클라이언트의 특정 위치에 저장되는 것이 아니라, 서버상에 객체로 존재 한다.

그렇기 때문에 세션은 서버에서만 접근 가능하고 보안이 좋고, 저장할 수 있는 데이터에 한계가 없다.



세션 문법

 세션은 클라이언트의 요청이 발생하면 자동생성이 되고 session이라는 내부 객체를 지원하여 세션의 속성을 설정할 수 있다.



세션객체는 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 ) )


SessionTestEx )

sessionInit.jsp

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


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
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>

cs


결과 )


'WebProgramming > JSP' 카테고리의 다른 글

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

관련글 더보기

댓글 영역