Development/Spring
Spring 쿠키 생성 삭제
우봉수
2023. 2. 2. 15:56
쿠키
정의: 이름과 값의 쌍으로 구성된 작은 정보. 아스키 문자만 가능
서버에서 생성 후 전송, 브라우저에 저장, 유효기간 이후 자동 삭제
서버에 요청시 domain, path가 일치하는 경우에 하위경로 포함 자동 전송
- 한글의 경우 URL인코딩 필요
목적: 클라이언트를 식별하기 위해서 http 프로토콜 보완
구성
- name
- value
- Domain
- path
- 유효기간
선행 과정
- 클라이언트의 요청
- 서버가 쿠키 생성
- 생성된 쿠키를 해당 프로토콜 해더에 담아서 전달
- 브라우저에 해당 쿠키가 저장
후행 과정
- 클라이언트의 요청
- 만약 기존에 남아있던 쿠키와 일치하는 요청이라면
- 자동으로 브라우저에 저장된 쿠키가 함께 요청이 해더에 담겨 전송 됨
쿠키의 생성 (Spring)
Cookie cookie = new Cookie(”name”,”value”); // 쿠키의 생성
cookie.setMaxAge(60*60*24); // 유효기간 설정(초)
response.addCookie(cookie); // 응답에 쿠키 추가
쿠키의 삭제와 변경 (Spring)
Cookie cookie = new Cookie(”name”,””); // 변경할 쿠키의 같은 이름의 쿠키 생성
cookie.setMaxAge(0); // 유효기간을 0으로 설정(삭제)
response.addCookie(cookie); // 응답에 쿠키 추가
Cookie cookie = new Cookie(”name”,””); // 변경할 쿠키의 같은 이름의 쿠키 생성
cookie.setValue(URLEncoder.encode("남궁성")); // 값의 변경
cookie.setDomain("www.fastcampus.co.kr"); // 도메인의 변경
cookie.setPath("/ch"); // 경로의 변경
cookie.setMaxAge(60*60*24*7); // 유효기간의 변경
response.addCookie(cookie); //응답에 쿠키 추가
쿠키 읽어 오기
// 쿠키가 없으면 NULL 즉 NULL체크 필요
Cookie[] cookies = request.getCookies(); // 쿠키 읽기
for(Cookie cookie: cookies{
String name = cookie.getName();
String value = cookie.getValue();
System.out.printf("[cookie]name=%s,value=%s%n",name,value);
}
쿠키를 활용하여 로그인 정보 남게 하기
<HTML>
- EL을 활용하여 value = ${cookie.id.value} 사용
- 쿠키가 있으면 체크 없으면 no체크 ${empty cookie.id.value ? "":"checked”}
직접 브라우저에서 쿠키 생성
빈칸을 더블클릭 후 원하는 이름과 값을 적어 놓으면 생성 완료
Spring 코드로 생성
public String login(String id,String pwd,boolean rememberId, HttpServletResponse response){
// 아이디를 기억하기를 원하면
if(rememberId) {
// 1. 쿠키를 생성
Cookie cookie = new Cookie("id",id);
// 2. 응답에 저장
response.addCookie(cookie);
}
// 그렇지 않으면
else {
Cookie cookie = new Cookie("id","");
cookie.setMaxAge(0); // 쿠키를 삭제
response.addCookie(cookie);
}
// 3. 홈으로 이동
return "home";
}