쿠키와 세션
둘 다 웹 컴포넌트가 데이터를 주고받기 위해 만들어진 기술. 웹 페이지 이동시 사용자의 정보를 보낼 때 기록되는 정보들
쿠키(Cookie)
- 사용자가 웹 사이트에 접속했을 때 서버에서 받은 정보들을 하드디스크에 저장. 필요할 때마다 하드에서 읽어옴
- 웹 브라우저를 닫아도 정보가 저장되어 있음
- 사용자 식별/정보유지, 세션 유지에 사용됨
- 구(舊) 기술, 최근에는 보안상 중요도가 낮은 정보를 처리할 때에 많이 사용됨
세션(Session)
- 웹 브라우저를 거치지 않고 웹 서버에 있는 데이터 영역을 통해 데이터를 전달하는 기술
- 두 개체의 활성화된 접속을 의미
- 서버는 클라이언트에 세션 ID를 부여. 세션 ID는 일정시간이 지나면 삭제됨
쿠키와 세션의 비교(http://binalee.tistory.com/39)
|
쿠키 |
세션 |
저장 공간 | 클라이언트 | 서버 |
저장 형식 |
텍스트 |
Object |
만료시점 | 쿠키 저장시 설정. 설정하지 않으면 브라우저 종료할 때 만료 |
클라이언트 로그아웃 설정한 시간동안 반응이 없을 때 |
사용하는 리소스 | 클라이언트 리소스 | 서버 리소스 |
용량 제한 | 한 도메인 당 20개 쿠키 하나당 4KB 총 300개 |
서버가 허용하는 만큼 |
쿠키 저장하는 방법
- Cookie cookie = new Cookie("쿠키 이름", "쿠키 값");
- response.addCookie(new Cookie("쿠키 이름", "쿠키 값"));
쿠키 데이터 읽는 방법
- Cookie cookies[] = request.getCookies(); // 웹 브라우저가 보낸 모든 쿠키를 Cookie 배열로 만들어서 리턴
- String name = cookie.get?Name(); // 객체에서 이름을 비교하며 찾고자 하는 쿠키를 찾음
- String value = cookie.getValue(); // 쿠키 값을 가져옴
쿠키 데이터 삭제하는 방법
- cookie.setMaxAge(3600); // 괄호 안은 쿠키의 수명. 3600초가 최대 수명
- cookie(-1); // 웹 브라우저가 끝날 때 쿠키 삭제
- cookie(0); // 쿠키 바로 삭제
특정 경로명을 갖는 URL로만 전송하는 방법
- cookie.setPath("[URL]");
JSP 내에서 쿠키 읽어오게 하기
----------------------------------------------------------------------
<%!
private String getCookieValue(Cookie[] cookies, String name)
{
String value = null;
if(cookies ==null) return null;
for(Cookie cookie : cookies)
{
if(cookie.getName().equals(name)) return cookie.getValue();
}
return null;
}
%>
----------------------------------------------------------------------
서블릿 클래스에서 세션 사용하기
- HttpSession session = request.getSession(); // 세션 시작
- session.setAttribute("데이터 이름", "데이터 값); // 세션 데이터 영역에 저장
- HttpSession session = request.getSession(); // 세션 정보를 가져옴
- String str = (String) session.getAttribute("데이터 이름"); // 데이터 값을 본래의 타입으로 쓰기 위해 String 캐스트 연산 수행
- session.removeAttribute("데이터 이름"); // 세션에서 삭제할 데이터를 파라미터로 넘김
- session.invalidate(); // 세션 종료를 알림