프로그래밍 언어/자바 웹

서블릿에서 쿠키 사용하기

· 코딩마이데이

1. GetCookieValue, setCookieVale 클래스 파일을 준비합니다.

실습 파일 위치

2. SetCookieValue 쿨래수를 다음과 같이 작성합니다. Cookie 객체를 생성한 후 쿠키 이름을 cookieTest로 값을 저장합니다. 그리고 setMaxAge() 메서드에 쿠키 유효 시간을 24시간으로 설정합니다. 그런 다음 response와 addCookie() 메서드를 이용해 생성된 쿠키를 브라우저로 전송합니다.

package sec02.ex01;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.Date;

@WebServlet("/set")
public class SetCookieValue extends HttpServlet {
	
	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 c = new Cookie("cookieTest", URLEncoder.encode("JSP 프로그래밍입니다.", "utf-8"));
		c.setMaxAge(24*60*60);
		response.addCookie(c);
		out.println("현재시간 : " + d);
		out.println("문자열을 Cookie에 저장합니다.");
	}
}

 

3. GetCookieValue 쿨래스를 다음과 같이 작성합니다. 두 번째 서블릿 요청 시에는 request의 getCookies() 메서드를 호출해 브라우저로 전달받습니다. 그리고 전달된 쿠키에서 저장할 때 사용할 이름인 cookieTest로 검색해 값을 가져옵니다.

package sec02.ex01;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.net.URLEncoder;

@WebServlet("/get")
public class GetCookieValue extends HttpServlet {
	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();
		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"));
			}
		}
	}
}

 

4. 우선 set으로 첫 번째 서블릿을 요청합니다. 쿠키에 cookieTest 이름으로 저장합니다.

/set으로 쿠키에 데이터 저장

5. get으로 두 번째 서블릿을 요청하여 cookieTest로 쿠키 값을 가져와 브라우저에 출력합니다.

/get으로 쿠키 데이터 얻기