Undergoing

쿠키와 세션 본문

개발/Web Development

쿠키와 세션

Halkrine 2012. 5. 10. 09:48

둘 다 웹 컴포넌트가 데이터를 주고받기 위해 만들어진 기술. 웹 페이지 이동시 사용자의 정보를 보낼 때 기록되는 정보들



쿠키(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();    // 세션 종료를 알림