-
Spring MVC - CookieSpring/Spring MVC 2021. 12. 30. 02:24728x90반응형
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