본문 바로가기

Language/Java / JSP

[JSP] Cookie(쿠키) 생성, 가져오기, 삭제

반응형

지난번 포스팅에서 Session 에 대해 포스팅 하였다. 사실 앞선 글에서 보안적인 이슈때문에 세션 사용에 대해서 설명하였는데,
사실 쿠키도 보안적인 내용만 아니라면 유용하게 사용이 가능하다.

예를들어 자주찾는 웹사이트에서 로그인 할때 본인의 로그인 폼에서 아이디가 자동으로 입력되거나 할때 그렇다.

또 이전에는 사용자의 로그인 정보나 인증 정보등을 세션을 통해 서버에 저장하였으나, 스마트폰을 이용해
인터넷을 즐기는 사용자가 늘어나면서 이제는 모바일웹의 경우 세션과 쿠키를 적절하게 혼합하여 로그인등을 구현하기도 한다.


쿠키의 경우 세션과는 달리 사용자 클라이언트 PC에 저장이 되므로 보안적인 면에서 상당히 제약이 있다고 말 하였다.
하지만 특수한 경우로 세션 사용이 여의치 않거나 할때에는 쿠키를 적절히 사용해야 하는데 이때에는 쿠키의 유효시간을
조정하여 외부로의 유출(?)을 최소화 할 수 있다.


쿠키를 생성하고 사용하는것은 앞서 설명했던 세션 만큼이나 간단하므로 간단한 예제 몇개를 보면 금방 이해가 될 것이다.


1. 쿠키 생성하기

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%

	// 회원번호
	String memberNo = "58272836" ;



	// 회원번호를 쿠키에 지정한다
	Cookie c = new Cookie("memberNo", memberNo) ;
	
	// 쿠키에 설명을 추가한다
	c.setComment("회원번호") ;
	
	// 쿠키 유효기간을 설정한다. 초단위 : 60*60*24= 1일 
	c.setMaxAge(60*60*24) ;
	
	// 응답헤더에 쿠키를 추가한다.
	response.addCookie(c) ;
%>



2. 쿠키 사용하기(값 가져오기)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%

	// 쿠키값 가져오기
	Cookie[] cookies = request.getCookies() ;
	
	if(cookies != null){
		
		for(int i=0; i < cookies.length; i++){
			Cookie c = cookies[i] ;
			
			// 저장된 쿠키 이름을 가져온다
			String cName = c.getName();
			
			// 쿠키값을 가져온다
			String cValue = c.getValue() ;
			
			
		}
	}

%>



3. 쿠키 삭제하기

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%

	// 전체 쿠키 삭제하기
	Cookie[] cookies = request.getCookies() ;
	
	if(cookies != null){
		for(int i=0; i < cookies.length; i++){
			
			// 쿠키의 유효시간을 0으로 설정하여 만료시킨다
			cookies[i].setMaxAge(0) ;
			
			// 응답 헤더에 추가한다
			response.addCookie(cookies[i]) ;
		}
	}
	
	
	// 특정 쿠키만 삭제하기
	Cookie kc = new Cookie("memberNo", null) ;
	kc.setMaxAge(0) ;
	response.addCookie(kc) ;


%>

* 특정 쿠키만 삭제시 해당 쿠키명의 value 값을 null로 지정하고 유효시간을 0으로 처리하여 만료시키면 된다.



덧) 일반 사용자가 브라우저 내의 기능인 "쿠키 차단"을 사용했을경우 쿠키는 무용지물이 된다.