
์ฟ ํค(Cookie)๋, ํด๋ผ์ด์ธํธ์ ์ํ ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ pc์ ์ ์ฅํ๋ค๊ฐ, ๋ค์ ์์ฒญ ์ ์ ์ฅ๋ ์ฟ ํค๋ฅผ ์๋ฒ๋ก ์ ์กํด์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๋๋ค.

1. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋
๋๋ค! (์ต์ด ์ ์)
2. ์๋ฒ๊ฐ ์ฟ ํค๋ฅผ ์์ฑํด์ HTTP ์๋ต ํค๋์ ์ค์ด์ ํด๋ผ์ด์ธํธ์ ์ ์กํฉ๋๋ค.
3. ํด๋ผ์ด์ธํธ ์ฟ ํค๋ฅผ ๋ฐ์ ํด๋ผ์ด์ธํธ pc์ ์ ์ฅํฉ๋๋ค. (์์ง ํด๋ผ์ด์ธํธ pc์๋ง ์๋ ์ํ)
4. ํด๋ผ์ด์ธํธ์ ๋ค์๋ฒ ์์ฒญ ์ ์ ์ฅํด๋ ์ฟ ํค๋ฅผ HTTP ์์ฒญ ํค๋์ ์ค์ด ์๋ฒ๋ก ๋ณด๋
๋๋ค.
5. ์๋ฒ๋ ํด๋ฆฌ์ด์ธํธ๊ฐ ๋ณด๋ธ ์ฟ ํค ์ ๋ณด๋ฅผ ์ฝ์ด ์์
์ ์ํํฉ๋๋ค.
์ฟ ํค ์์ฑ๋ฒ์ ์๋ ์ฟ ํค ์กฐ์๋ฒ(๊ธฐ๋ณธ) ๋ถ๋ถ์ ์ฐธ๊ณ ํด์ฃผ์ธ์
<%
// ์ฌ์ฉ๋ฒ
์ฟ ํค๋ด์๋ณ์๋ช
.๋ฉ์๋();
// ์ฌ์ฉ์์
Cookie cookie = new Cookie("cookieName", "cookieValue");
cookie.setValue("changedValue");
%>
| ๋ฆฌํด ํ์ | ๋ฉ์๋ ๋ช | ์ค๋ช |
|---|---|---|
| void | setValue(String value) | - ํด๋น ์ฟ ํค์ ๊ฐ์ ์ ๋ ฅํ value๋ก ์ค์ (์์ )ํฉ๋๋ค. |
| void | setDomain(String domain) | - ํด๋น ์ฟ ํค๋ฅผ ์ ์ฉํ ๋๋ฉ์ธ์ ์ค์ ํฉ๋๋ค. |
| void | setPath(String path) | - ์ฟ ํค๋ฅผ ์ ์ฉํ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค. - ์ง์ ํ ๊ฒฝ๋ก์ ๊ทธ ํ์ ๊ฒฝ๋ก๊น์ง ์ ์ฉ๋ฉ๋๋ค. |
| void | setMaxAge(int expire_seconds) | - ์ฟ ํค์ ์๋ช
์ ์ค์ ํฉ๋๋ค. - ์ด ๋จ์๋ก ์ค์ ํ๋ฉฐ, ํด๋ผ์ด์ธํธ pc์ ์ ์ฅ๋ ์๊ฐ๋ถํฐ ์ค์ ๋ ์ด ๋งํผ์ ์๋ช ์ ๊ฐ์ต๋๋ค. - ์๋ช ์ ์ค์ ํ์ง ์์ผ๋ฉด ์๋์ผ๋ก 0์ผ๋ก ์ค์ ๋์ด ํด๋ผ์ด์ธํธ pc์์ ๋ง๋ค์ด์ง ์๊ฐ ์ญ์ ๋ฉ๋๋ค. |
| String | getName() | - ํด๋น ์ฟ ํค์ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค. |
| String | getValue() | - ํด๋น ์ฟ ํค์ ๊ฐ์ ๋ฐํํฉ๋๋ค. |
| String | getDomain() | - ํด๋น ์ฟ ํค๊ฐ ์ ์ฉ๋์ด์๋ ๋๋ฉ์ธ์ ๋ฐํํฉ๋๋ค. |
| String | getPath() | - ํด๋น ์ฟ ํค๊ฐ ์ ์ฉ๋์ด์๋ ๊ฒฝ๋ก๋ฅผ ๋ฐํํฉ๋๋ค. |
| int | getMaxAge() | - ํด๋น ์ฟ ํค์ ์๋ช
์ ๋ฐํํฉ๋๋ค. - ์๋ช ์ด ์ค์ ๋์ด์์ง ์๋ค๋ฉด, -1์ ๋ฐํํฉ๋๋ค. |
Cookie ๋ณ์๋ช
= new Cookie(String Key, String value);๋ณ์๋ช
.setDomain(String domain);๋ณ์๋ช
.setPath(String path);๋ณ์๋ช
.setMaxAge(int age);response.addCookie(๋ณ์๋ช
);<!-- ์ฌ์ฉ์์ -->
<%
// 1. ์ฟ ํค ์์ฑ
Cookie cookie = new Cookie("myCookie", "์ฟ ํค๊ฐ1");
// 2. ๋๋ฉ์ธ ์ค์ : ํ์ฌ localhost์์๋ง ์ฌ์ฉํ ๊บผ๋ผ ์ผ๋จ ์๋ต
// 3. ๊ฒฝ๋ก์ค์
cookie.setPath(request.getContextPath());
// ์ปจํ
์คํธ ํจ์ค์ ๊ฐ์ ์์ฃผ๋ฉด ๋ฃจํธ๊ฐ ๋จ = "/"
// 4. ์๋ช
์ค์
cookie.setMaxAge(3600);
// 5. ์ฟ ํค ์๋ตํค๋์ ์ถ๊ฐํ๊ธฐ
response.addCookie(cookie);
%>
Cookie[] ๋ณ์๋ช
= request.getCookies();<%
// 1. ์ฟ ํค ์ ๋ณด ๊ฐ๊ณ ์ค๊ธฐ
Cookie[] cookies = request.getCookies();
// 2. ์ฟ ํค ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
if (cookies != null) {
for(Cookie c : cookies) {
String cookieName = c.getName();
String cookieVal = c.getValue();
// + ์ํ๋ ์ฟ ํค ์ ๋ณด๋ง ๊ฐ๊ณ ์ค๊ธฐ ์ํด์ if ๋ฌธ์ผ๋ก ์ฒดํฌ ํ ์ ์์ต๋๋ค.
if (cookieName.equals("์ํ๋ ์ฟ ํค ์ด๋ฆ") {
out.print(String.format("%s : %s + %s<br>", cookieNamem cookieVal)
}
}
}
%>
ํน์ ์กฐ๊ฑด์ผ ๋ ์ฟ ํค๋ฅผ ์ญ์ ํ ๊ฒฝ์ฐ๋, ์ฟ ํค ์์ฑ ์์ ๋์ผํ ๋ก์ง์ ์ด์ฉํฉ๋๋ค. ๋ค๋ง, setValue("")๋ก ๊ฐ์ ์ง์์ฃผ๊ณ , setMaxAge(0)์ผ๋ก ํด๋น ์ฟ ํค๊ฐ ์ ์ฅ๋จ๊ณผ ๋์์ ์์ด์ง๋๋ก ํ ์ ์์ต๋๋ค.
<%
// 1. ์ฟ ํค ์์ฑ (๋จ, ์ญ์ ์ด๋ฏ๋ก ๊ฐ์ ""์ผ๋ก ์ง์์ค
Cookie cookie = new Cookie("myCookie", "");
// 2. ๋๋ฉ์ธ ์ค์ : ํ์ฌ localhost์์๋ง ์ฌ์ฉํ ๊บผ๋ผ ์ผ๋จ ์๋ต
// 3. ๊ฒฝ๋ก์ค์
cookie.setPath(request.getContextPath());
// ์ปจํ
์คํธ ํจ์ค์ ๊ฐ์ ์์ฃผ๋ฉด ๋ฃจํธ๊ฐ ๋จ = "/"
// 4. ์๋ช
์ค์ (๋จ, ์ญ์ ์ด๋ฏ๋ก 0์ผ๋ก ์ค์ ํ์ฌ ์ ์ฅ๊ณผ ๋์์ ์ฌ๋ผ์ง๊ฒ ํจ)
cookie.setMaxAge(0);
// 5. ์ฟ ํค ์๋ตํค๋์ ์ถ๊ฐํ๊ธฐ
response.addCookie(cookie);
%>
ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ๋ณธ์ธ ์ฟ ํค ์ญ์ ํ๊ธฐ
- ๋ธ๋ผ์ฐ์ ๋ง๋ค ์ค์ ์ฐฝ์์ ์ ์ฒด ์ฟ ํค ์ญ์
- ๊ฐ๋ฐ์ ๋๊ตฌ(F12) ์ด์ฉํด์ ์ํ๋ ์ฟ ํค ์ง์ ์ญ์
๊ฐ๋ฐ์๋๊ตฌ(F12) > Application ํญ > Storage > Cookies > ํด๋นํ๋ ๋๋ฉ์ธ > ์ํ๋ ์ฟ ํค ์ฐ ํด๋ฆญ ํ ์ญ์
์ฟ ํค ๋งค๋์ ๋, ์ ์ฟ ํค ๊ธฐ๋ณธ ์กฐ์๋ฒ์ ํด๋์ค๋ก ๊ตฌํํด๋๊ณ ํด๋น ํด๋์ค๋ฅผ ์ด์ฉํด์ ๊ฐํธํ๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ์ ์ ๋๋ค.
package chap04;
import jakarta.servlet.http.*;
// response, request ์ฌ์ฉ์ ์ํด importํจ.
public class CookieUtil {
// ์ฟ ํค ๋ง๋๋ ๋ฉ์๋
public static void setCookie(HttpServletResponse resp, String name, String value, int expire_date, String path) {
Cookie cookie = new Cookie(name, value);
cookie.setPath(path);
cookie.setMaxAge(expire_date);
resp.addCookie(cookie);
}
// ์ฟ ํค ๊ฐ๊ณ ์ค๋ ๋ฉ์๋ (์ฟ ํค ์ด๋ฆ์ผ๋ก ๊ฐ๊ณ ์ค๊ฒ๋ ์์ฑ)
public static String getCookieValue(HttpServletRequest req, String name) {
String value = "";
Cookie[] cookies = req.getCookies();
for(Cookie c : cookies) {
String cookieName = c.getName();
String cookieVal = c.getValue();
if (name.equals(cookieName)) {
value = cookieVal;
break;
}
}
return value;
}
// ์ ์ฅ๋ ์ฟ ํค ์ญ์ ํ๋ ๋ฉ์๋
public static void setDeleteCookie(HttpServletResponse resp, String name, String path) {
setCookie(resp, name, "",0, path);
}
// ๋ชจ๋ ๋ฉ์๋๋ฅผ static์ผ๋ก ์ ์ธํ์ฌ ๊ฐ์ฒด ์์ฑ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋๋ก ์์ฑํจ.
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<%@ page import="chap04.CookieManger"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
// ์ฟ ํค ์์ฑ์ ์ฟ ํค ๋งค๋์ ์ ์ฉ
CookieManger.setCookie(respons, "myCookie", "์ฟ ํค๊ฐ1", 3600)
%>
</body>
</html>
[TIL]240307 ์์ ํ์ธํ ์ ์์ต๋๋ค.
์ฑ๋ํ์ JSP ์๋ฐ ์น ํ๋ก๊ทธ๋๋ฐ 2ํ - ์ฑ๋ํ ์ง์
์ ์ฑ
์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ๊ณ ์์ต๋๋ค!