JSP

[JSP] 쿠키 (Cookie) 🍪

Puft 2025. 2. 5. 16:00

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}입니다.

 

쿠키값인 e 출력