Web Programming/이론

쿠키(Cookie) 와 세션(Session)

Sunwoo_bang 2021. 1. 7. 11:55

1. HTTP 프로토콜
 이번에도 쿠키와 세션에 대해 알아보기전에 HTTP프로토콜을 잠시 살펴보자.


HTTP프로토콜은 Request와 Response로 이루어져있어.
클라이언트(브라우저)에서 request를 하면 서버는 그에 맞는 response를 응답하고 연결을 종료하지.

쿠키와 세션은 바로 이 연결이 종료될 때 정보나 데이터를 유지하기 위해서 필요한 녀석들이야.

 


2. 쿠키(Cookie)
쿠키는 서버에서 생성하고 클라이언트측에 저장 돼.
서버에 요청할 때마다 쿠키의 속성값이 변경, 참조될 수 있어.
사이트 내의 모든 페이지에서 읽을 수 있는 전역 변수이기도 해.

쿠키는 로컬에 txt파일 형태로 저장되기 때문에
보안에 취약하다는 단점이 있어. 따라서 데이터 저장시 URLEncode 처리가, 데이터 읽어올 때 URLDecode 처리가 필요해.

 

<저장>

String input = URLEncoder.encode("저장할 값");
//쿠키 생성
Cookie info = new Cookie("mycookie", input);
// 쿠키의 유효시간 (초)'
info.setMaxAge(60);
// 쿠키가 유효한 경로 설정
info.setPath("/");
// 쿠키가 유효한 도메인 설정
// --> 상용화시에는 사이트에 맞게 수정해야 함
info.setDomain("localhost");
// 쿠키저장하기
response.addCookie(info);


<읽기>

// 저장된 쿠키 목록을 가져온다.
Cookie[] cookies = request.getCookies();
// 쿠키값을 저장할 문자열
String mycookie = null;
 
// 쿠키목록이 있다면
if (cookies != null) {
    for (int i=0; i<cookies.length; i++) {
        // 쿠키의 이름을 취득한다.
        String cookieName = cookies[i].getName();
            // 이름이 내가 원하는 값일 경우 값을 복사한다.
        if (cookieName.equals("mycookie")) {
            mycookie = cookies[i].getValue();
            // 원하는 값을 찾으면 break;
            break;
        }
    }
}

 


3. 세션(Session)
클라이언트의 요청이 발생하면 자동으로 생성되고 서버상 메모리에 객체로 저장돼.
세션 내부객체의 메소드를 이용하여 속성을 설정해.

세션은 서버에서만 접근이 가능하여 보안이 쿠키보다 강하고, 데이터의 용량에 제한이 없어.
다만 서버 메모리에 직접 저장되기 때문에 많은 세션은 서버에 좋지 않아고 볼 수 있지.

<사용>

session.setMaxInactiveInterval(30);
// 세션 저장하기 -> 모든 형태의 객체 저장 가능
String input = "Hello world";
session.setAttribute("session01", input);
 
// 세션 읽기 -> 리턴값을 원래의 형태로 변환 필요함
String input = (String) session.getAttribute("mysession");

//세션 개별 삭제
session.removeAttribute("session01");

//세션 전체 삭제	
session.invalidate();

'Web Programming > 이론' 카테고리의 다른 글

[JSP] 서블릿이란? (Java Servlet)  (0) 2021.01.17
[JSP] Directive  (0) 2021.01.07