์ธํฐ๋ท์์ ์ฌ์ฉ๊ฐ๋ฅํ ์น ์๋น์ค๋ก๋ FTP, HTTP ๋ฑ์ด ์๋ค. ์ด๋ค ์๋น์ค๊ฐ ์ง์ผ์ผ ํ๋ ๊ท์น์ ํ๋กํ ์ฝ(ํ์ค ์ธํฐ๋ท ๊ท์ฝ)์ด๋ผ๊ณ ํ๋ค.
HTTP๋ ๋น์ฐ๊ฒฐ(connectionless) ์งํฅํ ํต์ ํ๋กํ ์ฝ๋ก, ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ฉด ์น์๋ฒ๊ฐ ํด๋น ํ์ด์ง๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก(์๋ต)ํ ํ ์ฐ๊ฒฐ์ ๋๋๋ค. ๋ํ ์๋ฒ๋ ์ด์ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ์ง ์๊ณ ๋งค ์์ฒญ๋ง๋ค ์ ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ ์๋ต ํ ์ฐ๊ฒฐ์ ๋๋ ๊ฒ์ ๋ฐ๋ณตํ๋ค. ์ด๋ฅผ ๋ฌด ์ํ(stateless) ์๋ฒ๋ผ๊ณ ํ๋ค.
๋ฐ๋ผ์ ์๋ก ์ฐ๊ด ์๋ ์ ๋ณด์ ํ์ด์ง๋ค์ ์ ์ํ ๋ ์ด์ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๊ฒ ํ๋ ๊ธฐ๋ฒ์ด ํ์ํ๋ค.
์ฟ ํค๋ HTTP์ ๋น์ฐ๊ฒฐ์งํฅํ ์๋น์ค์ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด ์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ค.
์ฟ ํค๋ ์๋ฒ๊ฐ ์๋ ํด๋ผ์ด์ธํธ ์ปดํจํฐ์ ํ๋๋์คํฌ์ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์ ์ฅํด ์๋ฒ์ ๋์์ ๋ฌด๋ฆฌ๋ฅผ ์ฃผ์ง ์๋๋ค.
์ฟ ํค์ ํฌ๊ธฐ๋ 4KB์ดํ๋ก ์ ํ๋์ด ์๊ณ , 300๊ฐ๊น์ง์ ๋ฐ์ดํฐ ์ ๋ณด ๋ฐฐ์ด์ ์ ์ฅํ ์ ์๋ค. ์ฆ ์ต๋ ์ฉ๋์ 1.2MB. ์ค๋๋ ์ ๋ณด๋ ์๋์ผ๋ก ์ญ์ ๋๋ค.
Cookie(java.lang.String name, java.lang.String value)
Cookie info = new Cookie("test", "pink");
์ฟ ํค๊ฐ์ฒด์ด๋ฆ.์ฟ ํค๊ด๋ จ๋ฉ์๋()
๋ก ํธ์ถํด ์ฌ์ฉํ๋ค.response๊ฐ์ฒด์ addCookie๋ฉ์๋๋ก info(Cookie ํด๋์ค๋ก ์ ์ธ๋ ๊ฐ์ฒด)๋ฅผ ์ค์ ํ๋ฉด, ํด๋ผ์ด์ธํธ์ ์ผ์ ํด๋์ info ์ฟ ํค์ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๊ฒ ๋๋ค.
setCookies.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cookie & Session</title>
</head>
<body>
<%
//1. Cookie ๊ฐ์ฒด ์์ฑ
Cookie c = new Cookie("id", "pinksung");
//2. ์ ํจ๊ธฐ๊ฐ ์ค์ (1๋
)
c.setMaxAge(365*24*60*60);
//3. ํด๋ผ์ด์ธํธ์ ์ฟ ํค ์ ์ก
response.addCookie(c);
//4. ์ฟ ํค๋ฅผ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์ ์ ์ก
response.addCookie(new Cookie("pw", "test1234"));
response.addCookie(new Cookie("age", "20"));
%>
<h3>์ฟ ํค ์ค์ </h3>
</body>
</html>
f12 - application - cookie์์ ํ์ธํ ์ ์๋ค.
Cookie[] cookies = request.getCookies();
for (Cookie c : cookies){
out.println(c.getName()+" : " + c.getValue() + "<br>");
};
์ ํจ์๊ฐ์ ์ค์ ํ์ง ์์ผ๋ฉด ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ์์ ๋ ์ ๋ณด๊ฐ ๋ ์๊ฐ.
๋ธ๋ผ์ฐ์ ๋ค ๊ป๋ค๊ฐ ๋ค์ ์ผ๋ณด๋ฉด id๊ฐ๋ง ๋ณด์ธ๋ค.
getCookies.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cookie & Session</title>
</head>
<body>
<h3>ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ป์ด์จ Cookie</h3>
<%
Cookie[] cookies = request.getCookies();
for (Cookie c : cookies){
out.println(c.getName()+" : "+c.getValue() + "<br>");
}
%>
</body>
</html>
์ฟ ํค๋ฅผ ๋ ์ด์ ์ฌ์ฉํ์ง ๋ชปํ๊ฒ ํ๋ ค๋ฉด ์ ํจ๊ธฐ๊ฐ์ ๋ง๋ฃ์ํจ๋ค.
setMaxAge()์ ์ ํจ๊ธฐ๊ฐ์ 0์ผ๋ก ์ค์ ํ๋ฉด ๋ง๋ฃ๋๋ค.
์์ฑ ํ set - get - remove ์์ผ๋ก ํ์ผ์ ์คํํ๋ฉด, id๊ฐ๋ง ์ ์ธํ๊ณ ์ฟ ํค ๊ฐ๋ค์ด ๋จ์์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
removeCookies.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cookie & Session</title>
</head>
<body>
<%
Cookie cookie = new Cookie("id", "");
cookie.setMaxAge(0); //์ฟ ํค์ ์ ํจ๊ธฐ๊ฐ์ ๋ง๋ฃ์ํด
response.addCookie(cookie);
%>
<h3> id์ฟ ํค๊ฐ ์ญ์ ๋์์ต๋๋ค. </h3>
<a href="240_getCookies.jsp">
์ฟ ํค ์ญ์ ๋ฅผ ํ์ธํ๋ ค๋ฉด ํด๋ฆญํ์ธ์.
</a>
</body>
</html>
for๋ฌธ์ผ๋ก ํ๋์ฉ ๊บผ๋ด์ ์ ํจ๊ธฐ๊ฐ์ ๋ง๋ฃ์์ผ์ผ ํ๋ค.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//์ ์ฒด ์ฟ ํค ์ป์ด์ ๋ฐฐ์ด์ ์ ์ฅ
Cookie[] cookies = request.getCookies() ;
if(cookies != null){
for(int i=0; i < cookies.length; i++){
//์ฟ ํค๋ฅผ ํ๋์ฉ ๊บผ๋ด์ ์ ํจ๊ธฐ๊ฐ์ ๋ง๋ฃ์ํด
cookies[i].setMaxAge(0) ;
//ํด๋ผ์ด์ธํธ์ ํด๋น ์ฟ ํค ์ ๋ณด๋ฅผ ์ ์ก (response ๊ฐ์ฒด ํค๋์ ์ถ๊ฐ)
response.addCookie(cookies[i]);
}
}
%>
<script>
alert("๋ก๊ทธ์์๋์์ต๋๋ค.");
location.href="loginForm.jsp";
</script>
</body>
</html>