목차
쿠키의 개요
쿠키(cookie)
- 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법
- 쿠키는 세션과 달리 상태 정보를 웹 서버가 아닌 클라이언트에 저장
- 어떤 웹 사이트를 처음 방문한 사용자가 로그인 인증을 하고 나면 아이디와 비밀번호를 기록한 쿠키가 만들어지고 그 다음부터 사용자가 그 웹 사이트에 접속하면 별도의 절차를 거치지 않고 쉽게 접속할 수 있음
- 클라이언트의 일정 폴더에 정보를 저장하기 때문에 웹 서버의 부하를 줄일 수 있다는 것이 장점
- 반면에 웹 브라우저가 접속했던 웹 사이트에 관한 정보와 개인 정보가 기록되기 때문에 보안에 문제가 있다
세션과 쿠키의 차이
쿠키의 동작 과정
- 쿠키 생성 단계: 주로 웹 서버 측에서 생성. 생성된 쿠키는 응답 데이터에 함께 저장되어 웹 브라우저에 전송됨
- 쿠키 저장 단계: 웹 브라우저는 응답 데이터에 포함된 쿠키를 쿠키 저장소에 보관. 쿠키는 종류에 따라 메모리나 파일로 저장됨
- 쿠키 전송 단계: 웹 브라우저는 한 번 저장된 쿠키를 요청이 있을 때마다 웹 서버에 전송. 웹 서버는 웹 브라우저가 전송한 쿠키를 사용하여 필요한 작업을 수행할 수 있음
- 각각 쿠키 크기는 4KB(4X1024 Bytes)를 넘을 수 없음
- 하나의 사이트 당 20개의 쿠키만 사용
- 클라이언트에 저장된 쿠키는 총 300개를 넘을 수 없음.
- 쿠키 정보는 하나하나 읽어 올 수 없고 한꺼번에만 읽어 올 수 있다.
- 쿠키를 서버로 보낼 때는 배열 형태로 보낸다.
Cookie 클래스의 메소드 종류
- getName(), getValue(), setMaxAge(int) - 자주 쓰임
쿠키 생성
쿠키 생성
- Cookie() 메소드를 사용
- 쿠키를 생성한 후에는 반드시 response 내장 객체의 addCookie() 메소드로 쿠키를 설정해야 함. 이렇게 함으로써 클라이언트에 쿠키가 저장됨
Cookie Cookie(String name, String value)
- 첫 번째 매개변수 name : 쿠키를 식별하기 위한 이름
- 두 번째 매개변수 value : 쿠키 값
[Cookie() 메소드 사용 예]
Cookie cookie = new Cookie("memberId", "admin");
response.addCookie(cookie);
Cookie myCookie = new Cookie(“CookieName”, “대학“) ;
myCookie.setValue(“화이팅!”) ; // 쿠키 값 새롭게 지정
쿠키 정보
쿠키 객체 얻기
- 클라이언트에 저장된 모든 쿠키 객체를 가져오려면 request 내장 객체의 getCookies() 메소드를 사용
- getCookies() 메소드는 클라이언트에 저장된 쿠키를 모두 읽어 옴
- 반환형은 Cookie[ ] 배열 형태로 반환
Cookie[] request.getCookies()
[getCookies() 메소드 사용 예]
Cookie[] cookies = request.getCookies();
쿠키 객체의 정보 얻기
- 쿠키는 이름, 값의 쌍으로 되어 있음
- 쿠키 객체를 얻어왔다면 이 쿠키 객체에 저장된 쿠키 이름과 값을 가져오기 위해 getName(), getValue() 메소드를 사용
getName, getValue 의 반환은 String 형식임
Cookie[] cookies = request.getCookies();
for (int i = 0; i < cookies.length; i++) {
out.println(cookies[i].getName() + " : " + cookies[i].getValue() + "<br>");
<div align="center">
<%
Cookie[] cookies = request.getCookies();
out.println("현재 설정된 쿠키의 개수 => " + cookies.length + "<br>");
out.println("====================================<br>");
for (int i = 0; i<cookies.length; i++) {
out.println("설정된 쿠키의 속성 이름 [" + i + "] : " + cookies[i].getName() + "<br>");
out.println("설정된 쿠키의 속성 값 [" + i + "] : " + cookies[i].getValue() + "<br>");
out.println("--------------------------------------<br>");
}
%>
</div>
JSESSIONID : 세션 아이디
- 각각의 클라이언트를 구별하기 위한 식별자로 서버에서 클라이언트에 저장됨
- 서버에서 클라이언트를 식별하기 위해 사용
- 첫 요청 발생 시 서버에서 클라이언트 ID 생성함
- 쿠키 저장되는 방식과 마찬가지로 클라이언트에 ID만 저장됨
- 세션도 결국은 쿠키를 이용한다, 하지만 세션 아이디만 클라이언트에 저장하고 세션에 대한 정보는 서버에 존재
쿠키 삭제
쿠키 삭제
- Cookie 클래스에서는 쿠키 삭제 기능을 별도로 제공하지 않는다.
- 쿠키의 유효 기간을 결정하는 setMaxAge( ) 메소드에 유효 기간을 0으로 설정하여 쿠키를 삭제할 수 있다.
- setMaxAge( ) 메소드의 형식
void setMaxAge(int age)
- 매개변수는 “초 단위” 이다.
[setMaxAge( ) 메소드 사용 예]
Cookie cookie = new Cookie("memberId", "admin");
cookie.setMaxAge(0);
response.addCookie(cookie);
- MaxAge(유효기간)을 지정해주지 않으면 (-1) 의 값이 있는데 유효기간이 따로 없고 브라우저를 닫으면 지워준다는 의미이다.
<%
Cookie[] cookies = request.getCookies();
for (int i = 0; i < cookies.length; i++) {
cookies[i].setMaxAge(0);
response.addCookie(cookies[i]);
}
response.sendRedirect("cookie02.jsp");
%>
- JSESSIONID 는 지워지지 않는다. => 지워도 새로고침 시 새롭게 생성됨
쿠키의 개요
쿠키(cookie)
- 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법
- 쿠키는 세션과 달리 상태 정보를 웹 서버가 아닌 클라이언트에 저장
- 어떤 웹 사이트를 처음 방문한 사용자가 로그인 인증을 하고 나면 아이디와 비밀번호를 기록한 쿠키가 만들어지고 그 다음부터 사용자가 그 웹 사이트에 접속하면 별도의 절차를 거치지 않고 쉽게 접속할 수 있음
- 클라이언트의 일정 폴더에 정보를 저장하기 때문에 웹 서버의 부하를 줄일 수 있다는 것이 장점
- 반면에 웹 브라우저가 접속했던 웹 사이트에 관한 정보와 개인 정보가 기록되기 때문에 보안에 문제가 있다
세션과 쿠키의 차이
쿠키의 동작 과정
- 쿠키 생성 단계: 주로 웹 서버 측에서 생성. 생성된 쿠키는 응답 데이터에 함께 저장되어 웹 브라우저에 전송됨
- 쿠키 저장 단계: 웹 브라우저는 응답 데이터에 포함된 쿠키를 쿠키 저장소에 보관. 쿠키는 종류에 따라 메모리나 파일로 저장됨
- 쿠키 전송 단계: 웹 브라우저는 한 번 저장된 쿠키를 요청이 있을 때마다 웹 서버에 전송. 웹 서버는 웹 브라우저가 전송한 쿠키를 사용하여 필요한 작업을 수행할 수 있음
- 각각 쿠키 크기는 4KB(4X1024 Bytes)를 넘을 수 없음
- 하나의 사이트 당 20개의 쿠키만 사용
- 클라이언트에 저장된 쿠키는 총 300개를 넘을 수 없음.
- 쿠키 정보는 하나하나 읽어 올 수 없고 한꺼번에만 읽어 올 수 있다.
- 쿠키를 서버로 보낼 때는 배열 형태로 보낸다.
Cookie 클래스의 메소드 종류
- getName(), getValue(), setMaxAge(int) - 자주 쓰임
쿠키 생성
쿠키 생성
- Cookie() 메소드를 사용
- 쿠키를 생성한 후에는 반드시 response 내장 객체의 addCookie() 메소드로 쿠키를 설정해야 함. 이렇게 함으로써 클라이언트에 쿠키가 저장됨
Cookie Cookie(String name, String value)
- 첫 번째 매개변수 name : 쿠키를 식별하기 위한 이름
- 두 번째 매개변수 value : 쿠키 값
[Cookie() 메소드 사용 예]
Cookie cookie = new Cookie("memberId", "admin");
response.addCookie(cookie);
Cookie myCookie = new Cookie(“CookieName”, “대학“) ;
myCookie.setValue(“화이팅!”) ; // 쿠키 값 새롭게 지정
쿠키 정보
쿠키 객체 얻기
- 클라이언트에 저장된 모든 쿠키 객체를 가져오려면 request 내장 객체의 getCookies() 메소드를 사용
- getCookies() 메소드는 클라이언트에 저장된 쿠키를 모두 읽어 옴
- 반환형은 Cookie[ ] 배열 형태로 반환
Cookie[] request.getCookies()
[getCookies() 메소드 사용 예]
Cookie[] cookies = request.getCookies();
쿠키 객체의 정보 얻기
- 쿠키는 이름, 값의 쌍으로 되어 있음
- 쿠키 객체를 얻어왔다면 이 쿠키 객체에 저장된 쿠키 이름과 값을 가져오기 위해 getName(), getValue() 메소드를 사용
getName, getValue 의 반환은 String 형식임
Cookie[] cookies = request.getCookies();
for (int i = 0; i < cookies.length; i++) {
out.println(cookies[i].getName() + " : " + cookies[i].getValue() + "<br>");
<div align="center">
<%
Cookie[] cookies = request.getCookies();
out.println("현재 설정된 쿠키의 개수 => " + cookies.length + "<br>");
out.println("====================================<br>");
for (int i = 0; i<cookies.length; i++) {
out.println("설정된 쿠키의 속성 이름 [" + i + "] : " + cookies[i].getName() + "<br>");
out.println("설정된 쿠키의 속성 값 [" + i + "] : " + cookies[i].getValue() + "<br>");
out.println("--------------------------------------<br>");
}
%>
</div>
JSESSIONID : 세션 아이디
- 각각의 클라이언트를 구별하기 위한 식별자로 서버에서 클라이언트에 저장됨
- 서버에서 클라이언트를 식별하기 위해 사용
- 첫 요청 발생 시 서버에서 클라이언트 ID 생성함
- 쿠키 저장되는 방식과 마찬가지로 클라이언트에 ID만 저장됨
- 세션도 결국은 쿠키를 이용한다, 하지만 세션 아이디만 클라이언트에 저장하고 세션에 대한 정보는 서버에 존재
쿠키 삭제
쿠키 삭제
- Cookie 클래스에서는 쿠키 삭제 기능을 별도로 제공하지 않는다.
- 쿠키의 유효 기간을 결정하는 setMaxAge( ) 메소드에 유효 기간을 0으로 설정하여 쿠키를 삭제할 수 있다.
- setMaxAge( ) 메소드의 형식
void setMaxAge(int age)
- 매개변수는 “초 단위” 이다.
[setMaxAge( ) 메소드 사용 예]
Cookie cookie = new Cookie("memberId", "admin");
cookie.setMaxAge(0);
response.addCookie(cookie);
- MaxAge(유효기간)을 지정해주지 않으면 (-1) 의 값이 있는데 유효기간이 따로 없고 브라우저를 닫으면 지워준다는 의미이다.
<%
Cookie[] cookies = request.getCookies();
for (int i = 0; i < cookies.length; i++) {
cookies[i].setMaxAge(0);
response.addCookie(cookies[i]);
}
response.sendRedirect("cookie02.jsp");
%>
- JSESSIONID 는 지워지지 않는다. => 지워도 새로고침 시 새롭게 생성됨