쿠키와 세션
- 쿠키과 세션은 HTTP(Hyper Text Transfer Protocol)의 약점을 보완하기 위해 사용됨
프로토콜
컴퓨터 간 데이터 통신을 위해 사용하는 규약.
HTTP의 약점
비연결성, 무상태
1. HTTP는 요청에 대한 응답을 보내면 연결을 끊음
2. 서버 통신이 끝나면 상태정보를 유지하지 않음
쿠키
- 사용자의 정보를 기록해 둔 파일. 문자열로 이루어짐
- 사용자의 로컬(컴퓨터)에 저장됨
- 브라우저를 종료해도 정보가 유지됨
- 도메인당 최대 20개, 클라이언트는 총 300개의 쿠키만 저장 가능
쿠키의 사용
생성
new Cookie(“이름”, “값”)
Cookie cookie = new Cookie(“test”, “1234”);
response.addCookie(Object)
.getValue()
.getCookies()
Cookie cookies[] = request.getCookies();
이름으로 쿠키찾기
Cookie cookies[] = request.getCookies();
if(cookies!=null){
for(Cookie c: cookies){
String name=c.getName();
if(name.equals("찾으려는이름"){
조건문 입력
}
}
}
.setMaxAge(int)
- 쿠키의 수명을 초단위로 설정
- 0이면 바로 삭제, -1이면 웹 브라우저가 끝날 때 삭제
모든쿠키제거
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(int i=0;i<cookies.length;i++){
cookies[i].setMaxAge(0);
response.addCookie(cookies[i]);
}
}
- 유효시간을 0으로 설정 후 response에 추가하여 만료시킴
세션
- 사용자가 웹서버에 접속해 있는 동안 상태를 유지시키는 것
- 웹서버에 세션쿠키를 저장했다가, 만료시(브라우저가 닫혔을 때, 타임아웃 됐을 때) 삭제됨
- 세션 타임아웃은 사용자가 조작을 멈췄을 때부터 카운트 되기 시작
- 보안면에서 우수
- 서버 자원을 활용하므로 처리 속도가 늦어질 수 있음
세션의 사용
.setAttribute(“이름”,”값”)
.getAttribute(“이름”)
.getAttributeNames()
- 저장된 키를 Enumeration타입으로 리턴
.removeAttribute(“이름”)
.invalidate()
- 세션의 모든 속성을 제거(초기화)
- 로그아웃 기능 구현 시 주로 사용