쿠키(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 |