서블릿에서 쿠키 사용하기

GetCookieValue.java 및 SetCookieValue.java 파일 준비


// SetCookieValue.java
package sec02.ex01;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.Date;

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;

/**
 * Servlet implementation class SetCookieValue
 */
@WebServlet("/set")
public class SetCookieValue extends HttpServlet {
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html; charset=utf-8");
		PrintWriter out = response.getWriter();
		Date d = new Date();
        // Cookie 객체를 생성한 후 cookieTest 이름으로 한글 정보를 인코딩해서 쿠키에 저장
		Cookie c = new Cookie("cookieTest", URLEncoder.encode("JSP 프로그래밍입니다.","utf-8"));
		c.setMaxAge(24*60*60); // 유효 기간을 설정
		response.addCookie(c); // 생성된 쿠키를 브라우저로 전송
		out.println("현재시간 : " + d + "<br>");
		out.println("문자열을 Cookie에 저장합니다.");
	}

}

// GetCookieValue.java
package sec02.ex01;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;

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;

/**
 * Servlet implementation class GetCookieValue
 */
@WebServlet("/get")
public class GetCookieValue extends HttpServlet {
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html; charset=utf-8");
		PrintWriter out = response.getWriter();
		Cookie() allValues = request.getCookies(); // request의 getCookies() 메서드를 호출해 브라우저에게 쿠키 정보를 요청한 후 쿠키 정보를 배열로 가져옴
		// 배열에서 저장할 때 사용한 쿠키 이름인 cookieTest로 검색해 쿠키 값을 가져옴
        for(int i=0; i<allValues.length; i++) {
			if(allValues(i).getName().equals("cookieTest")) {
				out.println("<h2>Cookie 값 가져오기 : " + URLDecoder.decode(allValues(i).getValue(),"utf-8"));
			}
		}
	}

}

첫 번째 서블릿을 설정할 때 cookieTest라는 문자열을 쿠키에 저장합니다.


/set을 사용하여 쿠키에 데이터 저장

두 번째 서블릿을 가져와 cookieTest로 쿠키 값을 가져와서 브라우저에 출력합니다.


/get으로 쿠키 데이터 가져오기


쿠키 생성 상태 확인

Chrome 브라우저에서 F12를 눌러 디버그 창 -> 응용 프로그램 탭 -> 쿠키 선택 후 왼쪽 메뉴에서 http://localhost:8090 클릭


현재 애플리케이션에서 사용 중인 쿠키 정보를 표시합니다.