Cookie | Session |
---|---|
ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์ ๋ฉ๋ชจ๋ฆฌ ๋๋ ํ์ผ์ ์ ์ฅ | ์๋ฒ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ |
- ํด๋ผ์ด์ธํธ ๋ก์ปฌ์ ์ ์ฅ๋์ด ๋ณด์์ ์ทจ์ฝ - ํนํ ํ์ผ๋ก ์ ์ฅ๋๋ ๊ฒฝ์ฐ ํ์ทจ, ๋ณ์กฐ๋ ์ํ์ด ์๊ณ Request/Response์์ ์ค๋์ดํ๋นํ ์ํ์ด ์์ด ๋ณด์์ด ๋น๊ต์ ์ทจ์ฝ | ํด๋ผ์ด์ธํธ ์ ๋ณด ์์ฒด๋ ์๋ฒ์ ์ ์ฅ๋์ด์์ผ๋ฏ๋ก ๋น๊ต์ ์์ ํจ |
์ง์ ์ฟ ํค์ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ์ข ๋ฃ์์๋ ์ ์ฅ๋์ด ์์ ์ ์์ | ์๋ฒ์์ ๋ง๋ฃ์๊ฐ/๋ ์ง๋ฅผ ์ ํด์ ์ง์๋ฒ๋ฆด ์ ์๊ธฐ๋ํ๊ณ ์ธ์ ์ฟ ํค์ ์ธ์ ์์ด๋๋ฅผ ์ ํ ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ์ข ๋ฃ์ ์ธ์ ์์ด๋๊ฐ ๋ ์๊ฐ ์ ์๋ค |
์ฟ ํค์ ์ ๋ณด๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ์์ฒญ์ ํค๋๋ฅผ ๋ฐ๋ก ์ฐธ์กฐํ๋ฉด ๋๋ฏ๋ก ์๋์์ ์ ๋ฆฌํจ | ์ ๊ณต๋ฐ์ ์ธ์ ID(key)๋ฅผ ์ด์ฉํด์ ์๋ฒ์์ ๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํด์ผํ๋ฏ๋ก ์๋๊ฐ ๋น๊ต์ ๋๋ฆผ |
Cookie cookie = new Cookie("key๊ฐ", "value๊ฐ");
cookie.setMaxAge(60*60*24)
response.addCookie(cookie);
private void setCookieExam(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// 1. ์ฟ ํค ์์ฑํ๊ธฐ
Cookie userId = new Cookie("userId", req.getParameter("userId"));
// 2. ์ฟ ํค๊ฐ์ ํ๊ธ์ ์ฌ์ฉ์ ์ธ์ฝ๋ฉ ์ฒ๋ฆฌ๋ฅผ ํด์ค๋ค.
Cookie name = new Cookie("name", URLEncoder.encode(req.getParameter("name"), "utf-8"));
// 3. ์ฟ ํค ์๋ฉธ ์๊ฐ ์ค์ (์ด๋จ์) => ์ง์ ํ์ง ์์ผ๋ฉด ์น๋ธ๋ผ์ฐ์ ์ข
๋ฃํ ๋ ์ฟ ํค๋ฅผ ํจ๊ป ์ญ์
userId.setMaxAge(60*60*24); // 1์ผ
//name.setMaxAge(60*60*48); // 2์ผ
// 4. ์๋ตํค๋์ ์ฟ ํค ์ถ๊ฐํ๊ธฐ
resp.addCookie(userId);
resp.addCookie(name);
// 5. ์๋ตํค๋์ ์ธ์ฝ๋ฉ ๋ฐ Content-Type ์ค์
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html");
// 6. ์๋ต ํค๋์ ์ถ๋ ฅ
PrintWriter out = resp.getWriter();
String title = "์ฟ ํค์ค์ ์์ ";
out.println("<!DOCTYPE html>\n"
+ "<html>\n"
+ " <head>\n"
+ " <title>" + title + "</title>"
+ " </head>\n"
+ " <body>\n"
+ " <h1 align=\"center\">" + title + "</h1>\n"
+ " <ul>\n"
+ " <li><b>ID</b>: "
+ req.getParameter("userId") + "</li>\n"
+ " <li><b>์ด๋ฆ</b>:"
+ req.getParameter("name") + "</li>\n"
+ " </ul>\n"
+ " </body>\n"
+ "</html>\n");
}
Cookie name = new Cookie("name", URLEncoder.encode(req.getParameter("name"), "utf-8"));
์ธ์ฝ๋ฉ ์ฒ๋ฆฌ๋์ด์ ํ๋ฉด์๋ ์ ๋ณด์private void readCookieExam(HttpServletRequest req, HttpServletResponse resp) throws IOException {
Cookie cookie = null;
// ํ์ฌ ๋๋ฉ์ธ์์ ์ฌ์ฉ์ค์ธ ์ฟ ํค ์ ๋ณด ๋ฐฐ์ด ๊ฐ์ ธ์ค๊ธฐ
Cookie cookies [] = req.getCookies();
// ์๋ตํค๋์ ์ธ์ฝ๋ฉ ๋ฐ ContentType ์ง์
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
String title = "์ฟ ํค ์ ๋ณด ์ฝ๊ธฐ ์์ ";
out.println("<!DOCTYPE html>\n"
+ "<html>\n"
+ "<head><title>" + title + "</title></head>\n"
+ "<body>\n");
if(cookies != null) {
out.println("<h2>" + title + "</h2>");
for (int i = 0; i < cookies.length; i++) {
cookie = cookies[i];
out.print("name : " + cookie.getName() +"<br>");
out.print("value : " + URLDecoder.decode(cookie.getValue(), "utf-8") +"<br>");
out.print("<br>");
}
}else {
out.println("<h2>์ฟ ํค ์ ๋ณด๊ฐ ์์ต๋๋ค.</h2>");
out.println("</body");
out.println("</html");
}
}
private void deleteCookieExam(HttpServletRequest req, HttpServletResponse resp) thrwos IOException {
Cookie cookie = null;
// ํ์ฌ ๋๋ฉ์ธ์์ ์ฌ์ฉ์ค์ธ ์ฟ ํค ์ ๋ณด ๋ฐฐ์ด ๊ฐ์ ธ์ค๊ธฐ
Cookies[] cookies = req.getCookies();
// ์๋ตํค๋์ ์ธ์ฝ๋ฉ ๋ฐ Content-Type์ค์
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
String title = "์ฟ ํค์ ๋ณด ์ญ์ ์์ ";
out.println("<!DOCTYPE html>\n"
+ "<html>\n"
+ "<head><title> + title + </title></head>\n"
+ "<body>\n");
if (cookies != null) {
out.println("<h2>" + title + "</h2>");
for (int i = 0; i < cookies.length; i++) {
cookie = cookies[i];
if(cookie.getName().equals("userId") ) {
// ์ฟ ํค ์ ๊ฑฐํ๊ธฐ
cookie.setMaxAge(0);
resp.addCookie(cookie);
out.print("์ญ์ ํ ์ฟ ํค : " + cookie.getName() + "<br>");
}
out.print("name : " + cookie.getName() + ", ");
out.print("value : " + URLDecoder.decode(cookie.getValue(), "UTF-8"));
}
} else {
out.println("<h2>๊ตญํฌ์ ๋ณด๊ฐ ์
์ต๋๋ค.<h2>");
}
}
HttpSession session = request.getSession(boolean๊ฐ);
invalidate()
๋ฉ์๋ ํธ์ถsetMaxInactiveInterval(int interval)
๋ฉ์๋ ํธ์ถ@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// ์ธ์
์ ๊ฐ์ ธ์ค๋ ๋ฐ ์์ผ๋ฉด ์๋ก ์์ฑํ๋ค
HttpSession session = req.getSession(true);
// ์ธ์
์ญ์
//session.invalidate(); // 1๋ฒ ๋ฐฉ๋ฒ
//session.setMaxInactiveInterval(20); // 2๋ฒ ๋ฐฉ๋ฒ: 20์ด
// ์์ฑ์๊ฐ ๊ฐ์ ธ์ค๊ธฐ
Date createTime = new Date(session.getCreationTime());
// ๋ง์ง๋ง ์ ๊ทผ์๊ฐ ๊ฐ์ ธ์ค๊ธฐ
Date lastAccessTime = new Date(session.getLastAccessedTime());
String title = "์ฌ๋ฐฉ๋ฌธ์ ํ์ํ๋๋ค.";
int visitCount = 0; // ๋ฐฉ๋ฌธํ์
String userId = "chichi";
if (session.isNew()) {
title = "์ฒ์ ๋ฐฉ๋ฌธ์ ํ์ํฉ๋๋ค.";
session.setAttribute("userId", userId); // ํค๊ฐ, ๋ฐธ๋ฅ๊ฐ
}else {
visitCount = (Integer)session.getAttribute("visitCount"); // ์ธ์
์ ์๋ ๊ธฐ์กด ๊ฐ
visitCount++;
userId = (String) session.getAttribute("userId");
}
System.out.println("๋ฐฉ๋ฌธํ์ : " + visitCount); // ์๋ฒ๋จ์์ ํ๋ฒ ์ฝ์์ ์ฐ์ด๋ณธ๊ฒ ํ๋ฉด๊ณผ ์๊ดx
session.setAttribute("visitCount", visitCount); // ์ธ์
์ ++๋ ๋ฐฉ๋ฌธ์ ์ ์ฅ
// ์๋ตํค๋ html ์ฝ๋ ์ถ๋ ฅ
// ์๋ต
}
<session-config>
<session-timeout>1</session-timeout>
</session-config>