쿠키는 웹 브라우저가 보관하는 데이터 유형입니다. 웹 브라우저는 웹 서버에 정보 요청을 보낼 때 쿠키를 함께 전송하고 , 웹 서버에서도 웹 브라우저로 응답할 때 쿠키 정보도 같이 전송합니다. 이런 방식으로 웹 브라우저와 웹 서버가 쿠키를 통해 정보를 공유할 수 있게 됩니다.
쿠키의 동작은 쿠키 생성, 쿠키 저장, 쿠키 전송 이 세가지 동작으로 구분할 수 있습니다. 먼저 쿠키는 웹 서버에서 생성합니다.
예시
Cookie cookie = new Cookie("key", "value");
response.addCookie(cookie);
쿠키는 key-value 값을 인자로 받아서 객체를 생성하고 그 쿠키 객체를 웹 브라우저에 응답 정보로 보내는 코드입니다. 웹 브라우저에서는 응답 정보로 전송된 쿠키 정보를 특별한 쿠키 저장소에 저장합니다.
사용자에 의해 쿠키 저장소에는 쿠키 정보들이 쌓이고 웹 브라우저가 요청 정보를 보낼 때 쿠키 정보들을 웹 서버로 보내게 됩니다.
예시
Cookie[] cookieArr = request.getCookie();
위 코드를 통해 웹 브라우저에서 전송된 쿠키 정보들을 읽어서 쿠키 정보 하나하나를 배열에 넣습니다.
쿠키 값을 변경하기 위해서는 먼저 쿠키 값이 존재하는지 부터 확인해야 합니다.
쿠키 값 확인, 변경
Cookie[] cookieArr = request.getCookie();
// 쿠키 값이 존재하는지 확인
if (cookieArr != null && cookieArr.length > 0) {
for (int i = 0; i < cookieArr.length; i++) {
// 변경하고자 하는 쿠키를 찾아 변경
if (cookieArr[i].getName().equals("key")) {
Cookie cookie = new Cookie("key", "change");
response.addCookie(cookie);
}
}
}
먼저 if문으로 배열에 쿠키 정보들이 들어있는지 확인 한 후, 변경하고자 하는 key이름과 연결된 값을 변경하고 있는 모습입니다.
쿠키 값을 삭제하기 위해서는 setMaxAge 메서드를 이용합니다.
예시
cookie.setMaxAge(0);
response.addCookie(cookie);
setMaxAge 메서드는 쿠키의 유효시간을 설정하는 메서드로써 인자를 0을 주게 되면 해당 쿠키가 사라지게 하는 효과를 낼 수 있습니다.
그 이외의 쿠키와 관련된 메서드들은 아래와 같습니다.
메서드명 |
리턴 타입 |
설명 |
getName() |
String |
쿠키 이름을 반환합니다. |
getValue(0 |
String |
쿠키 값을 반환합니다. |
setMaxAge(int time) |
void |
쿠키의 유효시간을 지정합니다. |
setValue(String value) |
void |
쿠키 값을 지정합니다. |
setDomain(String url)) |
void |
쿠키가 전송될 도메인을 지정합니다. |
getDomain() |
String |
쿠키의 도메인을 반환합니다. |
setPath(String url) |
void |
쿠키를 전송할 경로를 지정합니다. |
getPath() |
String |
쿠키의 전송 경로를 반환합니다. |
[JSP] JSTL c:set 태그 c:remove 태그 사용하기 (0) | 2020.11.05 |
---|---|
[JSP] request 내장객체의 정의와 메서드 (0) | 2020.11.01 |
[JSP] JSTL c:if 태그와 c:choose 태그의 사용 (0) | 2020.10.14 |
[JSP] JSTL c:url 태그와 c:redirect 태그 사용하기 (0) | 2020.10.11 |
[JSP] JSTL c:forEach 태그 사용하기 (0) | 2020.10.08 |