Backend/Servlet & JSP

[Servlet]์ฟ ํ‚ค์™€ ์„ธ์…˜(1) - ์ฟ ํ‚ค(Cookie)

sukii 2024. 1. 19. 20:51
๋ฐ˜์‘ํ˜•

๐Ÿค”์ฟ ํ‚ค(Cookie) : ์„œ๋ฒ„(์›นํ”„๋กœ๊ทธ๋žจ)์™€ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์˜ ์—ฐ๊ฒฐ ์ง€์†์„ฑ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผํด๋ผ์ด์–ธํŠธ์— ์ €์žฅํ•˜๋Š” ๋ฌธ์ž๊ฐ’

 

์ฟ ํ‚ค์™€ ์„ธ์…˜์˜ ๊ฐ ๊ฐœ๋…, ๋‘˜์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋†“์€ ๋ธ”๋กœ๊ทธ ์ฐธ๊ณ ๐Ÿคฉโฌ‡๏ธโฌ‡๏ธ

https://interconnection.tistory.com/74

 

์ฟ ํ‚ค์™€ ์„ธ์…˜ ๊ฐœ๋…

๋…ธ์…˜ ํŽ˜์ด์ง€(์•„๋ž˜ ๋‚ด์šฉ๊ณผ ๋™์ผ) ๊ฐœ์š” ์ฟ ํ‚ค์™€ ์„ธ์…˜์€ ๊ฐœ๋ฐœ์ž ๋ง๊ณ ๋„ ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ๋งŽ์ด ๋“ค์–ด๋ณธ ๋‹จ์–ด์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ—ท๊ฐˆ๋ ค ํ•˜๊ธฐ์— ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •

interconnection.tistory.com

 

 

โญ ์ฟ ํ‚ค ์ƒ์„ฑ  โญ

 

1. ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ฟ ํ‚ค๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌ๊ฒฐ๊ณผ๋ฅผ HTML ๋ฌธ์„œ๋กœ ์‘๋‹ตํ•˜๋Š” ์„œ๋ธ”๋ฆฟ

=> ์„œ๋ธ”๋ฆฟ์—์„œ ์ฟ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ์ „๋‹ฌ๋œ ์ฟ ํ‚ค๋ฅผ ์ €์žฅ
=> ํด๋ผ์ด์–ธํŠธ์—๋Š” ์ ‘์† ์„œ๋ฒ„์˜ ์ •๋ณด๋ฅผ ์‹๋ณ„์ž๋กœ ํ•˜์—ฌ ๋‹ค์ˆ˜์˜ ์ฟ ํ‚ค ์ €์žฅ

 

 

1) Cookie ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด ์ƒ์„ฑ
=> Cookie ๊ฐ์ฒด : ์ฟ ํ‚ค ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด
=> Cookie(String name, String value) ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cookie ๊ฐ์ฒด ์ƒ์„ฑ
=> name : ์ฟ ํ‚ค๋ช…(์ฟ ํ‚ค๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ž), value : ์ฟ ํ‚ค๊ฐ’(์—ฐ๊ฒฐ ์ง€์†์„ฑ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์ž๊ฐ’)

Cookie idCookie=new Cookie("id", "abc123");
Cookie countCookie=new Cookie("count", "0");

 

 

2) ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ๋˜์–ด ์ €์žฅ๋  ์ฟ ํ‚ค์˜ ์œ ์ง€์‹œ๊ฐ„ ๋ณ€๊ฒฝ
Cookie.setMaxAge(int expiry) : ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์‹œ๊ฐ„(์ดˆ)๋งŒํผ ์ฟ ํ‚ค์˜ ์œ ์ง€์‹œ๊ฐ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์†Œ๋“œ
=> Cookie ๊ฐ์ฒด์˜ ์œ ์ง€์‹œ๊ฐ„์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ [-1]๋กœ ์„ค์ •

countCookie.setMaxAge(24*60*60);//ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฟ ํ‚ค๋ฅผ ํ•˜๋ฃจ๋™์•ˆ ์œ ์ง€๋˜๋„๋ก ์„ค์ •

 

 

3)ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ Cookie ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์ฟ ํ‚ค๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜๋„๋ก ์„ค์ •
=> Cookie ๊ฐ์ฒด์˜ ์œ ์ง€์‹œ๊ฐ„์ด [-1]๋กœ ์„ค์ •๋œ ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ ๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ - ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ž๋™ ์†Œ๋ฉธ 
=> Cookie ๊ฐ์ฒด์˜ ์œ ์ง€์‹œ๊ฐ„์ด [-1]์ด ์•„๋‹Œ ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์— ํŒŒ์ผ๋กœ ์ €์žฅ - ์œ ์ง€์‹œ๊ฐ„ ๊ฒฝ๊ณผํ›„ ์ž๋™ ์†Œ๋ฉธ 
HttpServletResponse.addCookie(Cookie cookie) : ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ Cookie ๊ฐ์ฒด๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ๋˜์–ด ์ €์žฅ๋˜๋„๋ก ๋ฆฌ์Šคํฐ์ฆˆ ๋ฉ”์„ธ์ง€์— ์ €์žฅํ•˜๋Š” ๋ฉ”์†Œ๋“œ

response.addCookie(idCookie);
response.addCookie(countCookie);

 

 

์ฟ ํ‚ค ์ƒ์„ฑ ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ ์ „์ฒดโฌ‡๏ธ

package xyz.itwill.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/create.itwill")
public class CookieCreateServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out=response.getWriter();
		
		//Cookie ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด ์ƒ์„ฑ
		Cookie idCookie=new Cookie("id", "abc123");
		Cookie countCookie=new Cookie("count", "0");
		
		//ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ๋˜์–ด ์ €์žฅ๋  ์ฟ ํ‚ค์˜ ์œ ์ง€์‹œ๊ฐ„ ๋ณ€๊ฒฝ
		countCookie.setMaxAge(24*60*60);//ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฟ ํ‚ค๋ฅผ ํ•˜๋ฃจ๋™์•ˆ ์œ ์ง€๋˜๋„๋ก ์„ค์ •
		
		//ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ Cookie ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์ฟ ํ‚ค๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜๋„๋ก ์„ค์ •
		response.addCookie(idCookie);//๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ๋˜๋ฉด ์ž๋™ ์†Œ๋ฉธ
		response.addCookie(countCookie);//ํ•˜๋ฃจ๊ฐ€ ์ง€๋‚˜๋ฉด ์ž๋™ ์†Œ๋ฉธ
		
		out.println("<!DOCTYPE html>");
		out.println("<html>");
		out.println("<head>");
		out.println("<meta charset='utf-8'>");
		out.println("<title>Servlet</title>");
		out.println("</head>");
		out.println("<body>");
		out.println("<h1>์ฟ ํ‚ค ์ƒ์„ฑ</h1>");
		out.println("<hr>");
		out.println("<p>๋„ค ์•ˆ์— ์ฟ ํ‚ค ์žˆ๋‹ค.</p>");
		out.println("<hr>");
		out.println("<p><a href='use.itwill'>์ฟ ํ‚ค ์‚ฌ์šฉ</p>");
		out.println("</body>");
		out.println("</html>");
	}
}

 

โ–ถ๏ธ์œ„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ์ถœ๋ ฅ๋˜๊ณ , ์ฟ ํ‚ค ์‚ฌ์šฉ ํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ํƒœ๊ทธ๊ฐ€ ์žˆ์Œ.

 


 

โญ ์ฟ ํ‚ค ์‚ฌ์šฉ  โญ

 

2. ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๊ฐ’์„ HTML ๋ฌธ์„œ๋กœ ์‘๋‹ตํ•˜๋Š” ์„œ๋ธ”๋ฆฟ

=> ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์ ‘์†ํ•˜์—ฌ ์„œ๋ธ”๋ฆฟ์„ ์š”์ฒญํ•˜๋ฉด ์„œ๋ฒ„ ์ •๋ณด๋กœ ์ €์žฅ๋œ ๋ชจ๋“  ์ฟ ํ‚ค๋ฅผ ๋ฆฌํ€˜์ŠคํŠธ ๋ฉ”์„ธ์ง€๋กœ ์ œ๊ณต

 

 

1)ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ๋ฐ›์€ ๋ชจ๋“  ์ฟ ํ‚ค๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅ
HttpServletRequest.getCookies() : ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ ๋ชจ๋“  ์ฟ ํ‚ค๋ฅผ Cookie ๊ฐ์ฒด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ

Cookie[] cookies=request.getCookies();

 

2)์‘๋‹ตํ•  HTML ๋ฌธ์„œ ์•ˆ์—์„œ ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์™€ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒ€์ฆ

โ–ช๏ธ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ

์ €์žฅ๋œ ์ฟ ํ‚ค๊ฐ’์ด ์•„์˜ˆ ์—†๋‹ค๋ฉด, '๋„ค ์•ˆ์— ์ฟ ํ‚ค ์—†๋‹ค.'๋ผ๋Š” ๋ฉ˜ํŠธ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๊ธฐ

if(cookies==null) {
		out.println("<p>๋„ค ์•ˆ์— ์ฟ ํ‚ค ์—†๋‹ค.</p>");

}

 

โ–ช๏ธ ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ

- ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ ๋ช…๋ น์€ else ๋ฌธ์— ์ž‘์„ฑ

- Cookie ๊ฐ์ฒด ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ’(Cookie ๊ฐ์ฒด)๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์ œ๊ณต๋ฐ›์•„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ˜๋ณต๋ฌธ(for๋ฌธ)์‚ฌ์šฉ

- ๋ฐ˜๋ณต๋ฌธ ์•ˆ์— ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฟ ํ‚ค ๊ฐ์ฒด์— ์ €์žฅ๋œ ๊ฐ์ฒด๋ช…๊ณผ ID, COUNT ๋น„๊ต, TRUE๋ฉด ID,COUNT์— ๊ฐ’ ์ €์žฅ

-์ €์žฅ๋œ ์ฟ ํ‚ค๊ฐ’ ์ถœ๋ ฅ ํ›„, ์ฟ ํ‚ค๊ฐ์ฒด ์ƒˆ๋กœ ์ƒ์„ฑ(์ƒˆ๋กœ ์ƒ์„ฑ๋˜๋ฉด์„œ ๊ธฐ์กด ์ฟ ํ‚ค๋Š” ์‚ญ์ œ๋˜๊ณ  ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ์ฟ ํ‚ค๊ฐ€ ์ €์žฅ๋จ)

 

else {
	String id="";
	String count="";
	for(Cookie cookie : cookies) {
			Cookie.getName() : Cookie ๊ฐ์ฒด์— ์ €์žฅ๋œ ์ฟ ํ‚ค๋ช…์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
			if(cookie.getName().equals("id")) {
					Cookie.getValue() : Cookie ๊ฐ์ฒด์— ์ €์žฅ๋œ ์ฟ ํ‚ค๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
					id=cookie.getValue();
			} else if(cookie.getName().equals("count")) {
					count=cookie.getValue();
			}
	}
    
    			//์ฟ ํ‚ค๊ฐ’์„ HTML ๋ฌธ์„œ์— ํฌํ•จํ•˜์—ฌ ์ถœ๋ ฅ ์ฒ˜๋ฆฌ
			if(!id.equals("")) {//์ฟ ํ‚ค๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ
				out.println("<p>์•„์ด๋”” = "+id+"</p>");
			}
			
			if(!count.equals("")) {//์ฟ ํ‚ค๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ
				int cnt=Integer.parseInt(count)+1;
				out.println("<p>์„œ๋ธ”๋ฆฟ ์š”์ฒญ ํšŸ์ˆ˜ = "+cnt+"</p>");
				
				//Cookie ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ ์ €์žฅ
				// => ๋™์ผํ•œ ์ฟ ํ‚ค๋ช…์˜ ์ฟ ํ‚ค๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ธฐ์กด ์ฟ ํ‚ค๋ฅผ
				//์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ์šด ์ฟ ํ‚ค๋กœ ์ €์žฅ - ์ฟ ํ‚ค ๋ณ€๊ฒฝ
				//Cookie cookie=new Cookie("count", String.valueOf(cnt));
				Cookie cookie=new Cookie("count", cnt+"");
				cookie.setMaxAge(24*60*60);
				response.addCookie(cookie);
			}
		}

 

 

์ฟ ํ‚ค ์‚ฌ์šฉ ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ ์ „์ฒดโฌ‡๏ธ

package xyz.itwill.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๊ฐ’์„ HTML ๋ฌธ์„œ๋กœ ์‘๋‹ตํ•˜๋Š” ์„œ๋ธ”๋ฆฟ
@WebServlet("/use.itwill")
public class CookieUseServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out=response.getWriter();
		
		//ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ๋ฐ›์€ ๋ชจ๋“  ์ฟ ํ‚ค๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅ
		Cookie[] cookies=request.getCookies();
		
		out.println("<!DOCTYPE html>");
		out.println("<html>");
		out.println("<head>");
		out.println("<meta charset='utf-8'>");
		out.println("<title>Servlet</title>");
		out.println("</head>");
		out.println("<body>");
		out.println("<h1>์ฟ ํ‚ค ์‚ฌ์šฉ</h1>");
		out.println("<hr>");
		if(cookies==null) {//ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
			out.println("<p>๋„ค ์•ˆ์— ์ฟ ํ‚ค ์—†๋‹ค.</p>");

		} else {
			String id="";
			String count="";

			//Cookie ๊ฐ์ฒด ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ’(Cookie ๊ฐ์ฒด)๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์ œ๊ณต๋ฐ›์•„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ˜๋ณต๋ฌธ
			for(Cookie cookie : cookies) {
				//Cookie.getName() : Cookie ๊ฐ์ฒด์— ์ €์žฅ๋œ ์ฟ ํ‚ค๋ช…์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
				if(cookie.getName().equals("id")) {
					//Cookie.getValue() : Cookie ๊ฐ์ฒด์— ์ €์žฅ๋œ ์ฟ ํ‚ค๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
					id=cookie.getValue();
				} else if(cookie.getName().equals("count")) {
					count=cookie.getValue();
				}
			}
			
			//์ฟ ํ‚ค๊ฐ’์„ HTML ๋ฌธ์„œ์— ํฌํ•จํ•˜์—ฌ ์ถœ๋ ฅ ์ฒ˜๋ฆฌ
			if(!id.equals("")) {//์ฟ ํ‚ค๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ
				out.println("<p>์•„์ด๋”” = "+id+"</p>");
			}
			
			if(!count.equals("")) {//์ฟ ํ‚ค๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ
				int cnt=Integer.parseInt(count)+1;
				out.println("<p>์„œ๋ธ”๋ฆฟ ์š”์ฒญ ํšŸ์ˆ˜ = "+cnt+"</p>");
				
				//Cookie ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ ์ €์žฅ
				// => ๋™์ผํ•œ ์ฟ ํ‚ค๋ช…์˜ ์ฟ ํ‚ค๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ธฐ์กด ์ฟ ํ‚ค๋ฅผ
				//์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ์šด ์ฟ ํ‚ค๋กœ ์ €์žฅ - ์ฟ ํ‚ค ๋ณ€๊ฒฝ
				//Cookie cookie=new Cookie("count", String.valueOf(cnt));
				Cookie cookie=new Cookie("count", cnt+"");
				cookie.setMaxAge(24*60*60);
				response.addCookie(cookie);
			}
		}
		out.println("<hr>");
		out.println("<p><a href='create.itwill'>์ฟ ํ‚ค ์ƒ์„ฑ</p>");
		out.println("<p><a href='remove.itwill'>์ฟ ํ‚ค ์‚ญ์ œ</p>");
		out.println("</body>");
		out.println("</html>");
	}
}

 

โ–ถ๏ธ์œ„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ์ถœ๋ ฅ๋˜๊ณ , ์ฟ ํ‚ค ์ƒ์„ฑ์„ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ์„œ๋ธ”๋ฆฟ ์š”์ฒญ ํšŸ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚จ.

 


 

โญ ์ฟ ํ‚ค ์‚ญ์ œ  โญ

 

3. ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๋ฅผ ์‚ญ์ œํ•˜์—ฌ HTML ๋ฌธ์„œ๋กœ ์‘๋‹ตํ•˜๋Š” ์„œ๋ธ”๋ฆฟ

 

์ฟ ํ‚ค ์‚ญ์ œ ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ ์ „์ฒดโฌ‡๏ธ

package xyz.itwill.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/remove.itwill")
public class CookieRemoveServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out=response.getWriter();
		
		//ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ๋ฐ›์€ ๋ชจ๋“  ์ฟ ํ‚ค๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅ
		Cookie[] cookies=request.getCookies();
		
		if(cookies != null) {//ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
			//Cookie ๊ฐ์ฒด ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ’(Cookie ๊ฐ์ฒด)๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์ œ๊ณต๋ฐ›์•„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ˜๋ณต๋ฌธ
			for(Cookie cookie : cookies) {
				//ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค์˜ ์œ ์ง€์‹œ๊ฐ„์„ [0]์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ 
				// => ์œ ์ง€์‹œ๊ฐ„์ด ์ง€๋‚œ ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์ž๋™ ์†Œ๋ฉธ - ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋œ ์ฟ ํ‚ค
				cookie.setMaxAge(0);
				response.addCookie(cookie);//๊ธฐ์กด ์ฟ ํ‚ค๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ์šด ์ฟ ํ‚ค๋กœ ๋ฎ์–ด ์”Œ์šฐ๊ธฐ
			}
			
		}
		
		out.println("<!DOCTYPE html>");
		out.println("<html>");
		out.println("<head>");
		out.println("<meta charset='utf-8'>");
		out.println("<title>Servlet</title>");
		out.println("</head>");
		out.println("<body>");
		out.println("<h1>์ฟ ํ‚ค ์‚ญ์ œ</h1>");
		out.println("<hr>");
		out.println("<p>๋„ค ์•ˆ์— ์ฟ ํ‚ค ์—†๋‹ค.</p>");
		out.println("<hr>");
		out.println("<p><a href='use.itwill'>์ฟ ํ‚ค ์‚ฌ์šฉ</p>");
		out.println("</body>");
		out.println("</html>");

	}
}

 

โ–ถ๏ธ์ฟ ํ‚ค ์‚ฌ์šฉ ํŽ˜์ด์ง€์—์„œ [์ฟ ํ‚ค ์‚ญ์ œ]๋ฅผ ๋ˆ„๋ฅด๋ฉด ์•„๋ž˜ ํŽ˜์ด์ง€(์œ„ ์ฝ”๋“œ)๋กœ ์ด๋™ํ•จ. 

๋ฐ˜์‘ํ˜•