20.03 ~ 20.08 국비교육/JSP

세션(Session)과 쿠키(Cookie)

찹키리 2020. 4. 29. 12:37

<세션과 쿠키>

 

Http 프로토콜: stateless, 무상태, 이전 것을 기억할 필요가 없는
-> 사용자 브라우저와 서버 간의 상태에 대한 보존 없이 매 순간 새로운 연결하기 때문에 request-response과정이 끝나면 모든 연결이 끊어진다.

 

 

===> 상태 보존: 세션 / 쿠키

 

 

-세션

: 클라이언트에서 서버로 요청을 보내면, 서버는 해당 클라이언트가 보낸 요청에 함께 들어 있는 클라이언트의 정보를 갖고 있다가 동일 클라이언트로부터 또 다른 요청이 오면 이미 가지고 있던 정보를 비교해 동일 브라우저인지 판단한다.
즉, 서버가 자신에게 접속한 클라이언트의 정보를 갖고 있는 상태를 '세션'이라고 한다. (서버에 정보 저장)

*세션을 생성하면 쿠키는 자동으로 발급된다.

 

 

-쿠키

 

: 클라이언트에게 정보를 저장한다. 동일 클라이언트로부터 요청이 온 경우 쿠키가 담아 놓은 정보를 포함하고 있다면 요청 속 포함된 쿠키를 읽어 이전에 요청을 했던 클라이언트인 지를 판단한다.(클라이언트 측에 정보 저장)

 

 

 

  값 저장 어디에 보관기간 보안 용도
세션 O 서버 수 분 ~ 수 시간 로그인/아웃
쿠키 O 클라이언트 수시간 인증 -> 단순 값 저장(방문 기록 등)

 

 

 

 

<쿠키 클래스>

 

-쿠키 전송

1)쿠키 생성

Cookie myCookie = new Cookie("cookiename", "value")

 

2)쿠키 설정

myCookie.setValue("value")

myCookie.setMaxAge(int expirysec)

*쿠키의 이름에 대응하는 값을 새로 지정할 때

*초 단위로 쿠키의 수명주기를 설정할 때

 

 

3)쿠키 전송

response.addCookie(myCookie)

 

 

 

-쿠키 사용

1)쿠키 획득

Cookie[] cookies = request.getCookies()

*쿠키는 항상 배열로 받는다. 모든 쿠키를 일일이 다 꺼내 myCookie와 같은 이름을 찾기 때문이다.

 

 

2)쿠키 이름(쿠키의 이름과 값은 하나의 세트) 읽기

cookies[i].getName()

 

3)이름을 통해 설정된 값 추출

cookies[i].getValue()

 

 

 

<예제>

 

1
2
3
4
5
6
7
8
9
10
11
12
13
</head>
    <%
    String cookieName = "myCookie";
    Cookie cookie = new Cookie(cookieName, "Apple");
    cookie.setMaxAge(60); // one minute
    cookie.setValue("melon");
    response.addCookie(cookie);
    %>
<body>
    <h1>Example Cookie</h1>
    쿠키를 만듭니다.<br/>
    쿠키 내용은: <a href="tasteCookie.jsp"> 여기로</a>
</body>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

쿠키 전송 페이지

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<title>Taste Cookie</title>
</head>
<body>
    <h1>Example Cookie</h1>
    <%
    Cookie[] cookies = request.getCookies();
    if(cookies != null) {
        for(int i = 0; i < cookies.length++i) {
            if(cookies[i].getName().equals("myCookie")) {
    %>
    
    Cookie Name: <%= cookies[i].getName() %><br/>
    Cookie Value: <%= cookies[i].getValue() %><br/>
    
    <%
            }
        }
    }
    %>
</body>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

쿠키 사용 페이지

 

 

 

 

-실행

 

 

 

 

 

 

 

 

 

<세션 사용 예제>

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<title>세션사용예제(세션생성)</title>
</head>
<body>
    <%
    String id = "rorod";
    String pwd = "1234";
    
    session.setAttribute("idkey", id);
    session.setAttribute("pwdKey", pwd);
    %>
    
    세션이 생성되었습니다.<br/>
    <a href = "viewSessionInfo.jsp">세션정보를 확인하는 페이지로 이동</a>
</body>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

세션 생성 및 속성 설정

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
<title>세션사용예제(세션확인)</title>
</head>
<body>
    <%
    Enumeration en = session.getAttributeNames();
    while(en.hasMoreElements()) {
    String name = (String)en.nextElement();
    String value = (String)session.getAttribute(name);
    out.println("session name: " + name + "<br/>");
    out.println("session value: " + value + "<br/>");
    }
    %>
</body>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

세션 확인

 

 

 

 

-실행