[JSP] 쿠키 (Cookie) 🍪
HTTP 프로토콜의 특성이자 약점은 2가지가 있는데요.
1. Connectionless
사용자가 요청을 한 후에 응답받았을 때 연결이 끊기는 특징
2. Stateless
통신이 끝나면 상태를 끊어버리는 특징
이 약점을 보완하기 위해서 쿠키 / 세션을 사용하는데요.
쿠키(Cookie) : 사용자의 상태정보를 컴퓨터에 저장했다가 나중에 참조하기 위해 사용하는 값입니다.
사용자가 따로 요청을 하지 않아도 브라우저가 요청을 하면 자동으로 서버에 전송해줍니다.
한 번 시간을 정해놓으면 브라우저 종료 여부와 상관 없이 유지할 수 있습니다.
=> ID / 비번 저장하기, 쇼핑몰 장바구니, 팝업창 (오늘 하루 보지 않기)
쿠키는 주로 Model부분에서 만든 값이고
자료형은 String입니다.
쿠키의 기본 유지시간은 24시간이고,
사용자 컴퓨터에 저장됩니다.
요새는 암호화해서 저장한다지만
무작정 쿠키를 사용하는 것은 보안상 취약할 수 있습니다.
따라서 노출되면 위험한 정보는 쿠키에 저장하면 안됩니다.
쿠키 값을 읽으려면
Java에서는 현재 사용자 컴퓨터에 만들어져있는 쿠키들 중에
프로젝트에 해당하는 쿠키를 찾아서 읽어야 합니다.
JSP(EL)에서는 ${Cookie.이름.value } 를 사용해서 읽을 수 있습니다.
Java에서 쿠키를 선언해보겠습니다.
String e = "5000000";
쿠키 객체를 선언해서 값을 넣음
Cookie ck = new Cookie("e", e);
15초동안 사용자 컴퓨터에 저장
ck.setMaxAge(15);
응답객체 선언이 필요함

응답 객체에 쿠키값을 더함
response.addCookie(ck);
다음은 값을 jsp에서 사용해보겠습니다.
모델에서 쿠키값을 불러오는 메소드를 만들겠습니다.
Cookie[] cks = req.getCookies();
// 저장되어있는 쿠키 '들'을
getCookies를 사용해 불러와서 배열에 저장
for(Cookie ck : cks) {
if(ck.getName().equals("e")) {
//쿠키 이름이 e인
System.out.println(ck.getValue());
//값을 출력
Controller에서 해당 메소드를 실행해서
쿠키 값을 생성하고
JSP(View)에서 값을 표현하면 됩니다.
e : ${cookie.e.value } <br>
이때는 EL을 사용하는데 들어갈 이름은
${cookie.쿠키명.value}입니다.