스프링 Cookie

728x90

  • 사용자 웹 브라우저에 저장되는 데이터
  • 요청이 발생 했을 때 웹 브라우저는 쿠키에 저장된 정보를 서버에 전달하게 된다.
  • 만약 응답 결과로 쿠키 정보가 전달되면 웹 브라우저가 쿠키에 저장하게 된다.
  • 쿠키는 사용자 브라우저에 저장되는 것이므로 브라우저가 전달 해 줄 때만 쿠키 정보를 사용 할 수 있다.

Cookie 저장

  • 서버측 코드로 쿠키에 데이터를 저장할 수 있는 방법은 없다.
  • 브라우저로 보낼 응답 결과에 저장할 쿠키 정보를 담아 보내면 브라우저에 의해 쿠키가 저장된다.
  • Spring MVC에서 쿠키 저장은 Servlet/JSP에서 사용하는 방법으로 처리한다.

Cookie 읽어오기

  • 쿠키 정보는 브라우저가 요청을 발생 시켰을 때 요청 정보에 같이 담아서 서버로 전달해 준다.
  • Servlet/JSP 에서는 쿠키 정보를 배열로 받아 사용할 수 있다.
  • Spring MVC 에서는 쿠키 정보를 주입 받아 사용 할 수 있다.
@Controller
public class testController{
	
	@GetMapping("/save_cookie")
	public String save_cookie(HttpServletResponse response){
		
		try{
				String data1 = URLEncoder.encode("문자열1", "UTF-8");
				String data2 = URLEncoder.encode("문자열2", "UTF-8");

				Cookie cookie1 = new Cookie("cookie1", data1);
				Cookie cookie2 = new Cookie("cookie2", data2);

				cookie1.setMaxAge(365* 24 * 60 * 60); //초단위
				cookie2.setMaxAge(365* 24 * 60 * 60); 
				
				response.addCookie(cookie1);
				response.addCookie(cookie2);

		}catch(Exception e){
			e.printStackTrace();
		}
		return "save_cookie";
	}


	@GetMapping("/load_cookie")
	public String load_cookie(HttpServletRequest request){
			try{
				Cookie [] cookies = request.getCookies();
				for(Cookie cookie : cookies){
						String str = URLDecoder.decode(cookie.getValue(), "UTF-8");
						if(cookie.getName().equals("data1")){
								System.out.println("cookie1 = " + str);
							}else if(cookie.getName().equals("data2")){
										System.out.println("cookie2 = " + str);
								}
					}

		}catch(Exception e){
			e.printStackTrace();
		}
		return "load_cookie";
	}

@GetMapping("/load_cookie2")
	public String load_cookie2(@CookieValue("cookie1") String cookie1,
														@CookieValue("coookie2") String cookie2){
			System.out.println("cookie1 = " + cookie1);
			System.out.println("cookie2 = " + cookie2);
		return "load_cookie2";
	}
}
반응형