상세 컨텐츠

본문 제목

Cookie 객체 - Spring

Spring

by ssu_jo 2021. 4. 22. 23:44

본문

728x90

1.Cookie란?

웹브라우저와 웹서버의 통신 시 웹 프로그래밍 자원이 생성하여 클라이언트 쪽에 저장하는 임시 파일을 말합니다.
크기는 4KB 이하입니다.
쿠키에는 클라이언트의 각종 정보가 1개의 쿠키명에 대응하는 1개의 쿠키값 형태로 여러 개 저장되어 있습니다.
쿠키명은 쿠키값을 호출하기 위해 사용 됩니다.
웹서버가 클라이언트에게 전송하는 응답 메시지에 저장된 쿠키명과 쿠키값은 클라이언트 쪽에 저장됩니다.
클라이언트 쪽에 저장된 쿠키명과 쿠키값은 웹브라우저로 웹서버에 접속 시 요청 메시지에 포함되어 서버 쪽으로 전송됩니다.

- 쿠키값 자격 요건
알파벳과 숫자로만 이루어져야 합니다.
$로 시작할 수 없고 공백, 괄호, 등호, 콤마, 콜론, 세미콜론을 포함할 수 없습니다.(포함하려면 인코딩해야 함)
만약 쿠키값이 한글인 경우에는 URLEncoder.encode(~)를 사용해야 합니다.

 예) Cookie cookie = new Cookie(“msg”, URLEncoder.encode(“저장한글쿠키값”, “euc-kr”));


2.Cookie 장점

클라이언트가 필요한 데이터를 웹서버 쪽에 두지 않고 클라이언트 쪽에 저장하여 사용함으로 각종 편의를 제공합니다.

예) 포탈 사이트 로그인 시 아이디, 암호 저장 옵션을 체크하면 아이디, 암호가 쿠키에 저장되어 이후 자동 로그인
인터넷 쇼핑몰에서 클라이언트가 열어본 물건들의 정보를 다른 웹페이지에서도 보여주는 경우
전자상거래 시 클라이언트 쪽 쿠키 사용
쿠키를 이용하여 클라이언트와의 연결 상태를 지속하는 경우


웹 프로그래밍 자원이 상업용으로 이용 가능한 각종 통계 자료를 얻는 데 사용됩니다.

예) 쇼핑몰에서 클라이언트가 선택한 물건들의 정보가 쿠키로 저장되었을 경우
    쿠키를 이용한 물건들의 조회수, 정확한 사이트 방문자 수 관련 통계 자료 등


웹서버가 필요한 데이터를 웹서버 쪽에 두지 않고, 클라이언트 쪽에 저장함으로써 웹서버에 부담을 주지 않습니다.

 

3. Cookie의 단점

해킹에 의해 중요한 개인 정보가 저장된 쿠키가 누출될 수 있습니다.
광고회사나 인터넷 서비스업체의 자료 확보 수단으로 변칙 활용되면서 사생활 침해가 될 수 있습니다.



4. Cookie 객체

한 쌍의 쿠키명과 쿠키값을 관리하는 객체를 말합니다.
Cookie 클래스는 javax.servlet.http 패키지 안에 있습니다.
※ 한 쌍만 저장됨

- 메소드

이름 설명
String getName() Cookies 객체에 저장된 쿠키명을 리턴
String getValue() Cookies 객체에 저장된 쿠키값을 리턴
void setMaxAge(int second) 쿠키의 생존기간을 초로 설정
※ 쿠키 제거 전용 메소드는 없음
이미 클라이언트로 넘어간 쿠키를 제거할 방법은 없음


· 요청 메시지에 저장된 쿠키값 꺼내기
1. 요청 메시지에 저장된 쿠키 관리 객체인 Cookie 객체를 배열로 얻습니다.

Cookie[] 객체참조변수 = HttpServletRequest객체저 장객체참조변수.getCookies();


2. Cookie 객체에 저장된 쿠키명을 얻습니다.

String 변수명 = 객체참조변수[i].getName();


3. Cookie 객체에 저장된 쿠키값을 얻습니다.

String 변수명 = 객체참조변수[i].getValue();


예)

String cookieVal = “”; // 쿠키값 저장 변수 선언
Cookie[] cookies = request.getCookies(); // 다량의 Cookie 객체를 배열로 얻기

if (cookies != null) { // 클라이언트가 보낸 모든 Cookie 객체를 배열에 담아 리턴
  for (int i = 0; i<cookies.length; ++i) {
    if (cookies[i].getName().equals(“쿠키명”)) { // cookies[i]에 저장된 Cookies 객체의 쿠키명이 “쿠키명”와 같으면
      cookieVal = cookies[i].getValue(); // 저장된 쿠키값을 cookieVal 변수에 저장
      break;
    }
  }
}


 · 응답 메시지에 쿠키명-쿠키값 저장하기
1. Cookie 객체 생성하고 쿠키명, 쿠키값을 저장합니다.

Cookie 객체참조변수 = new Cookie(“쿠키명”, 쿠키 값);


2. Cookie 객체에 저장된 쿠키의 수명을 설정합니다.

객체참조변수.setMaxAge(second);


3. 응답 메시지에 쿠키를 저장합니다.

HttpServletRespons객체참조변수.addCookie(객체참조 변수);


4. 웹서버가 응답 메시지를 웹브라우저로 보냅니다.
5. 웹브라우저가 응답 메시지에 저장된 쿠키를 꺼내어 저장

만약 Cookie 객체에 설정한 쿠키명이 클라이언트 쪽에 없다면 새로운 쿠키가 저장합니다.
만약 Cookie 객체에 설정한 쿠키명이 클라이언트 쪽에 있다면 덮어씁니다.(쿠키값 또는 쿠키 수명이 수정됨)

예)

Cookie login_id = new Cookie(“login_id”, “abc123”);
login_id.setMaxAge(60*60*24*30); // 수명이 0이 아니므로 클라이언트 쪽에
response.addCookie(login_id); // 새로운 쿠키 또는 기존 쿠키의 쿠키값 또는 수명 수정이 목적
Cookie login_id = new Cookie(“login_id”, “abc123”);
login_id.setMaxAge(0); // 수명이 0이 이므로 클라이언트 쪽
response.addCookie(login_id); // 기존 쿠키의 수명 제거가 목적
Cookie login_id = new Cookie(“login_id”, null); // 쿠키값이 null 이므로
login_id.setMaxAge(60*60*24*30); // 클라이언트 쪽
response.addCookie(login_id); // 기존 쿠키값 제거가 목적
728x90
LIST

'Spring' 카테고리의 다른 글

JSP 기술의 종류  (0) 2021.04.30
JSP(Java Server Page) - Spring  (0) 2021.04.24
HttpSession 객체 - Spring  (0) 2021.04.21
HttpServletResponse 객체 - Spring  (0) 2021.04.19
HttpServletRequest 객체 - Spring  (0) 2021.04.15

관련글 더보기

댓글 영역