[Spring]Cookie와 활용법(읽기, 생성 및 저장)

2021. 9. 20. 17:35프로그래밍/web

쿠키란 ? 

쿠키란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 일컫는다.  (출처: 위키백과)

 

쿠키의 구조

출처 : https://ychcom.tistory.com/entry/%EC%BF%A0%ED%82%A4Cookie%EB%9E%80

유효기간 : 유효기간이 지나면 쿠키 데이터가 소멸됨. 

도메인 : 현재 쿠키가 어떤 서버로 전송되어져야 하는지 지정하는 속성.

path : path로 지정한 곳에서 쿠키 데이터르 읽을 수 있음. 디폴트 값으로 쿠키를 생성한 곳에서만 쿠키를 읽을 수 있게 되어있음.

 

Spring Controller에서 쿠키 생성.

	@RequestMapping("/createCookie")
	public String createCookie(HttpServletResponse response) {
		logger.info("쿠키 생성");
		Cookie cookie = new Cookie("useremail","blueskii");
		cookie.setDomain("localhost");
		cookie.setPath("/");
		// 30초간 저장
		cookie.setMaxAge(30*60);
		cookie.setSecure(true);
		response.addCookie(cookie);
		
		return "redirect:/ch05/content";
	}

4. 쿠키 객체 생성
6,7,9,10 쿠키 객체 domain, path, expire, secure 설정. 
11 쿠키 객체를 response에 담아서 보내줌.

크롬에서 inspect -> application 에서 쿠키가 정상적으로 생성된 것 확인 가능.

 

spring controller에서 쿠키 읽기

방법 1)

@RequestMapping("/getCookie1")
	public String getCookie1(@CookieValue String useremail, @CookieValue("useremail") String umail) {
		logger.info("실행");
		logger.info(umail);
		return "redirect:/ch05/content";
	}

2 annotation을 통해서 cookieValue를 손쉽게 가져올수 있음.

방법 2)

@RequestMapping("/getCookie2")
	public String getCookie2(HttpServletRequest request) {
		Cookie[] list = request.getCookies();
		for(Cookie cookie:list) {
			if(cookie.getName().equals("useremail")) {
				logger.info(cookie.getValue());
			}
		}
		return "redirect:/ch05/content";
	}

httpServletRequest 객체를 통해서 쿠키 리스트를 가져오고, 그 중에서 name을 생성할때 설정한 useremail을 통해서 가져올 수 있음.

 

JavaScript에서 쿠키 읽기

function getCookie() {
	console.log(document.cookie);
}