상세 컨텐츠

본문 제목

[Spring] 쿠키 연결하기

Spring/Spring

by seoia 2021. 6. 5. 01:02

본문

쿠키 (Cookie)

세션과 마찬가지로 Connectionless Protocol의 불편한 점을 해결하기 위해 쿠키를 사용한다.

그렇다면, 쿠키와 세션의 차이점은 무엇이 있을까?

 

  쿠키 (Cookie) 세션 (Session)
저장 위치 클라이언트(=접속자 PC) 웹 서버
저장 형식 text (key-value) Object
만료 시점 쿠키 저장시 설정(만료 시간 기준) 브라우저 종료시 삭제(기간 지정 가능)
사용하는 자원(리소스) 클라이언트 리소스 웹 서버 리소스
용량 제한 총 300개
하나의 도메인 당 20개
하나의 쿠키 당 4KB(=4096byte)
서버가 허용하는 한 용량제한 없음.
속도 세션보다 빠름 쿠키보다 느림
보안 세션보다 안좋음 쿠키보다 좋음

1. 쿠키 생성

- HttpServletResponse 사용

쿠키를 생성할 때, 쿠키를 담고 있는 HttpServletResponse를 파라미터로 사용한다.

 

- 쿠키 생성자

쿠키를 생성할 때 생성자에 두 개의 파라미터를 넣어준다.

-> 첫 번째 파라미터 : 쿠키 이름,  두 번째 파라미터 : 쿠키 값

Cookie cookie = new Cookie("name",user.getName());

 

2. 쿠키 유효기간 설정

쿠키의 유효기간은 setMaxAge()를 통해 설정한다.

if(user.isCookieDel()) {
    cookie.setMaxAge(0);
    user.setName(null);
} else {
    cookie.setMaxAge(60*60*24*30);
}
response.addCookie(cookie);

 

3. 쿠키 사용

쿠키를 사용할 때는 @CookieValue를 사용한다.

@CookieValue는 value 속성은 쿠키 이름을 나타낸다. 만약 value에 명시한 쿠키가 없을 경우엔 익셉션이 발생한다.

이 익셉션을 막기 위해서 required 속성을 사용한다. required 속성의 기본값은 true이고, 이 값을 false로 설정하여 value 값에 해당하는 쿠키가 없어도 익셉션이 발생하지 않도록 해준다.

@RequestMapping("/index")
public String userInfo(User user, 
    @CookieValue(value="name", required=false) Cookie cookie, 
    HttpServletRequest request) {
		
    if(cookie != null) 
        user.setName(cookie.getValue());
		
    return "/user/info";
}

참고 : https://opentogether.tistory.com/93#recentEntries 

 

[Spring] 클라이언트와 서버간 연결을 유지하는 세션 & 쿠키

쿠키 & 세션 웹 서비스는 HTTP 프로토콜을 기반으로 하는데, 이 프로토콜은 클라이언트와 서버의 관계를 유지하지 않는 특성이 있다. 이를 'Connectionless Protocol' 이라고 부르는데, 서버의 부하를 줄

opentogether.tistory.com

https://velog.io/@fortice/Spring-%EC%84%B8%EC%85%98-%EC%9D%B8%ED%84%B0%EC%85%89%ED%84%B0-%EC%BF%A0%ED%82%A4

 

[Spring] 세션, 쿠키, 인터셉터

스프링 세션, 인터셉터, 쿠키

velog.io

 

'Spring > Spring' 카테고리의 다른 글

[Spring] 스프링 인터셉터  (0) 2021.06.05
[Spring] Session 연결하기  (0) 2021.06.03

관련글 더보기