ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring MVC - Cookie
    Spring/Spring MVC 2021. 12. 30. 02:24
    728x90
    반응형

    Cookie

    • 사용자 웹 브라우저에 저장되는 데이터
    • 웹 브라우저가 서버에 요청 시 요청 정보에 cookie 정보를 담아 서버에 전달
    • 서버가 쿠기 정보를 전달하면 사용자 웹 브라우저에 쿠키 정보를 저장
    • Spring MVC는 매개변수로 쿠키 정보를 주입받을 수 있다.

     

    @Controller
    public class testController {
    
    	@GetMapping("/savecookie")
    	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 "savecookie";
    	}
    	@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("cookie1"))
    					System.out.println(str);
    				else if(cookie.getName().equals("cookie2"))
    					System.out.println(str);
    			}
    			
    		}catch (Exception e) {
    			e.printStackTrace();
    		}
    		
    		return "load_cookie";
    	}
    }
    public String save_cookie(HttpServletResponse response) {
     - 응답 결과에 cookie 정보를 담아 보내기 때문에 response 객체를 주입받아야 한다.

    try - catch 문
     - Cookie 정보는 문자 데이터만 저장가능한데 브라우저에 따라 한글 데이터가 깨질 수도 있다.
     때문에 한글 데이터를 encoding하기 위해 try - catch문을 써준다.

    String data1 = URLEncoder.encode("문자열1", "UTF-8");
     - Cookie에 저장할 문자열을 encoding을 하여 저장

    Cookie cookie1 = new Cookie("cookie1", data1);
     - 클라이언트에 보낼 Cookie에 데이터 저장

    cookie1.setMaxAge(365*24*60*60);
     - Cookie의 생존 시간, 초 단위이며 해당 시간이 되면 Cookie는 삭제된다.

    response.addCookie(cookie1);
     - 클라이언트에 Cookie를 전하기위해 response 객체에 쿠키 정보를 저장

    public String load_cookie(HttpServletRequest request) {
     - 요청 정보에 Cookie 정보가 저장되어 넘어오기 때문에 request를 주입받아야 한다.

    try - catch 문
     - 넘겨 받은 Cookie는 현재 edcoding되어 있으므로 decoding하기 위해 try - catch문을 써준다.

    String str = URLDecoder.decode(cookie.getValue(), "UTF-8");
     - Cookie에 저장되어 있는 데이터를 decoding

    cookie.getName().equals("cookie1")
     - Cookie 이름이 "cookie1"인지 확인, 해당 Cookie를 가져오기 위해 배열에서 일일이 1개씩 확인해줘야 한다.

     

     위 방법은 servlet/jsp 방법이다. 현재 Spring MVC에선 편한 방법을 제공하고 있으니 위는 참고하고, Spring MVC에서 Cookie 정보를 받는 방법을 알아보자.

    @Controller
    public class testController {
    
    	@GetMapping("/load_cookie2")
    	public String load_cookie2(@CookieValue("cookie1") String cookie1,
    				   @CookieValue("cookie2") String cookie2) {
    		
    		System.out.println(cookie1);
    		System.out.println(cookie2);
    		
    		return "load_cookie2";
    	}
    }

     위에 servlet/jsp방식으로 Cookie정보를 받아오는 방법이 이처럼 쉽게 Spring MVC에서 이용할 수 있다.

    public String load_cookie2(@CookieValue("cookie1") String cookie1,
                                         @CookieValue("cookie2") String cookie2) {
     - Spring MVC에서는 Cookie 정보를 간단하게 parameter에 주입받아 사용할 수 있다.

     

    728x90
    반응형

    'Spring > Spring MVC' 카테고리의 다른 글

    Spring MVC - Message  (0) 2022.01.02
    Spring MVC - Properties  (0) 2021.12.30
    Spring MVC - ApplicationScope 빈 주입  (0) 2021.12.30
    Spring MVC - ApplicationScope  (0) 2021.12.29
    Spring MVC - SessionScope 빈 주입  (0) 2021.12.29

    댓글

Designed by Tistory.