์ฟ ํค (Cookie)
์ฟ ํค๋? (cookie)
: ์น ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ์์ ๋ฐ์ดํฐ ์กฐ๊ฐ
์ฟ ํค ์์ฑ ๋ฐ ์ ์ฅ
1.
์ฟ ํค ์์ฑ ๋จ๊ณ
์ฟ ํค๋ ์ฒ์์ ์๋ฒ ์ธก์์ ์์ฑ๋์ด ์๋ต์ ๋ด๊ฒจ์ ์ ์ก๋จ
2.
์ฟ ํค ์ ์ฅ ๋จ๊ณ
ํด๋ผ์ด์ธํธ๋ ์๋ต๋ฐ์ ์ฟ ํค๋ฅผ ์ฟ ํค ์ ์ฅ์์ ์ ์ฅํจ
3.
์ฟ ํค ์ ์ก ๋จ๊ณ
ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ ๊ฒฝ๋ก(URL) ์์ฒญ ์, ์ฟ ํค๋ฅผ ํฌํจํ์ฌ ์์ฒญ ์ ์กํจ
์ฟ ํค ์์ฑ ๋ฐ ์ ์ฅ
โข
์ฟ ํค๋ ์๋ฒ ์ธก์์ ์์ฑ
โข
์ฟ ํค๋ ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ฅ
์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ ์ฃผ์ ๊ธฐ๋ฅ
โข
์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ๋ก๊ทธ์ธ ๊ด๋ฆฌ
โข
์ฅ๋ฐ๊ตฌ๋ ๋ฐ ์ฃผ๋ฌธ ์ฒ๋ฆฌ
โข
์์ด๋ ์ ์ฅ
โข
์ธ์ด ๋ฐ ์ง์ญ ์ค์
โข
๋คํฌ ๋ชจ๋
Cookie ๋ฉ์๋
๋ฉ์๋ | ์ค๋ช
|
Cookie(String name, String value) | ์ง์ ๋ ์ด๋ฆ๊ณผ ๊ฐ์ผ๋ก ์๋ก์ด ์ฟ ํค ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. |
getName() | ์ฟ ํค์ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค. |
getValue() | ์ฟ ํค์ ๊ฐ์ ๋ฐํํฉ๋๋ค. |
setValue(String value) | ์ฟ ํค์ ๊ฐ์ ์ค์ ํฉ๋๋ค. |
getPath() | ์ฟ ํค์ ๊ฒฝ๋ก๋ฅผ ๋ฐํํฉ๋๋ค. |
setPath(String path) | ์ฟ ํค์ ๊ฒฝ๋ก๋ฅผ ์ค์ ํฉ๋๋ค. |
getDomain() | ์ฟ ํค์ ๋๋ฉ์ธ์ ๋ฐํํฉ๋๋ค. |
setDomain(String domain) | ์ฟ ํค์ ๋๋ฉ์ธ์ ์ค์ ํฉ๋๋ค. |
getMaxAge() | ์ฟ ํค์ ์ ํจ ๊ธฐ๊ฐ์ ์ด ๋จ์๋ก ๋ฐํํฉ๋๋ค. |
setMaxAge(int maxAge) | ์ฟ ํค์ ์ ํจ ๊ธฐ๊ฐ์ ์ด ๋จ์๋ก ์ค์ ํฉ๋๋ค. |
getSecure() | ์ฟ ํค์ ๋ณด์ ์์ฑ์ ๋ํ๋ด๋ ๋ถ์ธ ๊ฐ์ ๋ฐํํฉ๋๋ค. (true: ๋ณด์ ์ฟ ํค, false: ์ผ๋ฐ ์ฟ ํค) |
setSecure(boolean secure) | ์ฟ ํค์ ๋ณด์ ์์ฑ์ ์ค์ ํฉ๋๋ค. (true: ๋ณด์ ์ฟ ํค, false: ์ผ๋ฐ ์ฟ ํค) |
isHttpOnly() | ์ฟ ํค๊ฐ HTTP ์ ์ฉ์ธ์ง ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค. (true: HTTP ์ ์ฉ, false: JavaScript๋ก ์ ๊ทผ ๊ฐ๋ฅ) |
setHttpOnly(boolean httpOnly) | ์ฟ ํค๋ฅผ HTTP ์ ์ฉ์ผ๋ก ์ค์ ํฉ๋๋ค. (true: HTTP ์ ์ฉ, false: JavaScript๋ก ์ ๊ทผ ๊ฐ๋ฅ) |
์ฟ ํค ์์ฑ
Cookie cookie = new Cookie("์ฟ ํค ์ด๋ฆ", ์ฟ ํค ๊ฐ);
response.addCookie(cookie);
Java
๋ณต์ฌ
โข
์ฟ ํค๋ ์๋ฒ ์ธก์์ ๊ฐ์ฒด๋ก ์์ฑํ๊ณ ์๋ต(response) ๋ฉ์์ง์ ๋ด์์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด์ฃผ์ด์ผ ํด๋ผ์ด์ธํธ์ ์ฟ ํค ์ ์ฅ์์ ์ ์ฅํ๋ค.
์ฟ ํค ์ ๋ณด
Cookie[] cookies = request.getCookies();
String myCookie = "";
for(int i = 0 ; i < cookies.length ; i++) {
if( cookies[i].getName().equals("์ฟ ํค์ด๋ฆ") ) {
myCookie = cookies[i].getValue();
}
}
Java
๋ณต์ฌ
์ฟ ํค ์ญ์
Cookie cookie = new Cookie("์ญ์ ํ ์ฟ ํค๋ช
", "");
cookie.setMaxAge(0); // ์ ํจ์๊ฐ 0์ผ๋ก ์ค์
response.addCookie(cookie);
Java
๋ณต์ฌ
โข
์ฟ ํค๋ ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์, ์ง์ ์ ์ผ๋ก delete, remove ํ๋ ๊ฐ๋
์ด ์๋๋ผ ์๋ฒ ์ธก์์ ์ฟ ํค๋ฅผ ๋ค์ ์์ฑํด์ ์ ํจ ์๊ฐ์ ์๋ฉธ์ํจ ์ฟ ํค๋ก ๋ฎ์ด์ฐ๊ธฐ ํ๋ ๊ฐ๋
์ผ๋ก ์ญ์ ํ๋ค.
์ฟ ํค๋ฅผ ํ์ฉํ ์์ด๋ ์ ์ฅ
1.
๋ก๊ทธ์ธ ํ๋ฉด์์ id ์ ์ฅ ์ฒดํฌ ์ ๋ณด๋ฅผ ์ ์กํ๋ค.
2.
๋ก๊ทธ์ธ ์ฒ๋ฆฌ ํ๋ก์ธ์ค์์,
a.
์ฒดํฌ๋ฐ์ค ์ฒดํฌ ์,
๋ก๊ทธ์ธ ์์ด๋์ ๋ํ ์ฟ ํค, ๊ทธ๋ฆฌ๊ณ ์์ด๋ ์ ์ฅ ์ฒดํฌ ์ฌ๋ถ์ ๋ํ ์ฟ ํค๋ฅผ ์์ฑํด์ ์๋ตํ๋ค.
b.
์ฒดํฌ๋ฐ์ค ํด์ ์,
๋ก๊ทธ์ธ ์์ด๋ ์ฟ ํค, ์์ด๋ ์ ์ฅ ์ฒดํฌ ์ฌ๋ถ ์ฟ ํค์ ๋ง๋ฃ ์๊ฐ์ 0์ผ๋ก ๋ง๋ค๊ณ ์๋ตํ๋ค.
3.
๋ก๊ทธ์ธ ํ๋ฉด์์
์์ด๋ ์ ์ฅ ์ฌ๋ถ์ ๋ํ ์ฟ ํค๋ฅผ ํ์ธํ๊ณ ์์ด๋ ์ ์ฅ์ด ์ฒดํฌ๊ฐ ๋์ด ์์ผ๋ฉด,
๋ก๊ทธ์ธ ์์ด๋ ๊ฐ์ ๊ฐ์ ธ์์ ๋ก๊ทธ์ธ ์
๋ ฅ ์ฐฝ์ ๋ฃ์ด์ค๋ค.
โข
cookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>์์ด๋ ์ ์ฅ</title>
</head>
<body>
<%
// ์ฟ ํค ๊ฐ์ ธ์ค๊ธฐ
Cookie[] cookies = request.getCookies();
// ์ฟ ํค์ ์์ด๋์ ์ ์ฅ์ฌ๋ถ
String username = "";
String rememberId = "";
if( cookies != null )
for(int i = 0 ; i < cookies.length ; i++) {
if( cookies[i].getName().equals("username") )
username = cookies[i].getValue(); // ์ ์ฅ๋ ๋ก๊ทธ์ธ ์์ด๋
if( cookies[i].getName().equals("rememberId") )
rememberId = cookies[i].getValue(); // ์ ์ฅ ์ฌ๋ถ - ์ ์ฅ(on)
}
%>
<h1>๋ก๊ทธ์ธ</h1>
<form action="cookie_pro.jsp" method="post">
<p>์์ด๋ : <input type="text" name="username" /></p>
<p>๋น๋ฐ๋ฒํธ : <input type="password" name="password" /></p>
<p>
<%
if(rememberId.equals("on")) {
%>
<input type="checkbox" name="remember-id" id="remember-id" checked />
<%
} else {
%>
<input type="checkbox" name="remember-id" id="remember-id" />
<%
}
%>
<label for="remember-id">์์ด๋ ์ ์ฅ</label>
</p>
<p><input type="submit" value="๋ก๊ทธ์ธ"/></p>
</form>
</body>
</html>
HTML
๋ณต์ฌ
โข
cookie_pro.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String username = request.getParameter("username");
String passowrd = request.getParameter("password");
String rememberId = request.getParameter("remember-id");
// checkbox ์ฒดํฌ ์, ๊ธฐ๋ณธ๊ฐ on ์ผ๋ก ๋์ด์จ๋ค.
out.println("rememberId : " + rememberId + "<br>");
// ์์ด๋ ์ ์ฅ ์ฒดํฌ ์, ์ฟ ํค ์์ฑ
if( rememberId != null && rememberId.equals("on") ) {
// ์ฟ ํค ์์ฑ
Cookie cookieId = new Cookie("username", username); // ์์ด๋ ์ฟ ํค
Cookie cookieRememberId = new Cookie("rememberId", rememberId); // ์์ด๋ ์ ์ฅ ์ฟ ํค
response.addCookie(cookieId);
response.addCookie(cookieRememberId);
out.println("์์ด๋๋ฅผ ์ฟ ํค์ ์ ์ฅํ์ต๋๋ค.<br>");
}
// ์์ด๋ ์ ์ฅ ๋ฏธ์ฒดํฌ ์, ์ฟ ํค ์ญ์
else {
Cookie cookieId = new Cookie("username", username); // ์์ด๋ ์ฟ ํค
Cookie cookieRememberId = new Cookie("rememberId", rememberId); // ์์ด๋ ์ ์ฅ ์ฟ ํค
// ์ฟ ํค ๋ง๋ฃ
cookieId.setMaxAge(0);
cookieRememberId.setMaxAge(0);
response.addCookie(cookieId);
response.addCookie(cookieRememberId);
out.println("์์ด๋๋ฅผ ์ฟ ํค์์ ์ญ์ ํ์ต๋๋ค.<br>");
}
%>
<a href="cookie.jsp">cookie.jsp</a>
Java
๋ณต์ฌ