Spring

Spring - Cookie

jaewoo 2022. 12. 23. 17:48

 

쿠키(Cookie )

이름과 값의 쌍으로 구성된 정보, 아스키 문자만 가능하다.

name = value 형식으로 젖아한다. name = value와 domain, path, Max-Age를 저장한다.

특수문자 안됨, 한글은 URL인코딩이 필요하다.

 

  • 서버에서 브라우저에 저장시킨다.
  • 유효기간이 지나면 자동으로 삭제된다(Max-Age)
  • domain과 path에 대한 정보를 가지고 있어 같은 곳에 요청을 날리면 요청헤더에 담겨 요청된다.

 

 

Cookie 생성

Cookie ck = new Cookie("id","test");
ck.setMaxAge(60*60*48);		//유효기간 2일(48시간)
response.addCookie(ck);

 쿠키가 생성되면 쿠키는 절대시간과 상대시간 두개를 가지게 된다. (서버와 클라이언트에 시간이 완전히 같지 않은 경우가 있어서)

 

Cookie 삭제

Cookie ck = new Cookie("id","");	//변경할 쿠키와 같은 이름 쿠키 생성
ck.setMaxAge(0);	//유효기간을 0으로 설정
response.addCookie(ck);//응답에 쿠키 추가

Cookie 변경하기

Cookie ck = new Cookie("id","");
ck.setValue(URLEncoder.encode("쿠키");	//한글은 URL인코딩 해서 넣어야 한다. 꺼널때는 decoding해줘야 함
ck.setDomain("www.naver.com");
ck.setPath("/path");
ck.setMaxAge(60*60*24);

response.addCookie(ck);

Cookie 읽기

Cookie[] cookies = request.getCookies();		//쿠키가 없다면 null
for(Cookie cookie:cookies){
		String name = cookie.getName();
		String value = cookie.getValue();
		
		System.out.println(name+":"+"value);
}

EL을 통해 Cookie를 사용할때는 ${cookie.name.value} 를 사용하면 된다. name은 쿠키 값 설정할때 만든 name을 적으면 된다. 

input 체크박스에 값을 Controller에서 String으로 받을 경우 on이라는 값이 넘어오는데 이건 input태그에서 디폴트가 value="on"이라 그렇다 따로 지정해주면 그 값으로 바뀌게 되고 boolean 타입으로 Controller에서 받는다면 true/false 값이 넘어온다.

'Spring' 카테고리의 다른 글

Spring - AOP,@Transactional  (0) 2023.01.27
Spring - Session  (0) 2022.12.26
Spring - 파일 올리기(이미지 저장하기 ) - RestController  (1) 2022.10.11
JPA - N+1  (0) 2022.09.19
JPA - @EntitiyGraph, @Transactional Database - NoSession 해결  (0) 2022.09.15