1 / 57

쿠키와 세션

6. 쿠키와 세션. 학습목표 셋 이상의 화면으로 구성된 웹 애플리케이션을 작성 할 때에는 JSP 페이지나 서블릿 클래스들이 서로 데이터를 주고 받도록 만들어야 할 필요가 있다 . 이 장에서는 이럴 때 필요한 쿠키와 세션 기술에 대해 알아보자 . 내 용 쿠키와 세션 쿠키 기술 세션 기술 / HttpSession. 1. 쿠키와 세션 (1). 세션 (Session) - 정의 클라이언트의 연속적인 요청 또는 그 요청에 대한 서비스 기간 예 : 홈쇼핑 사이트에서의 로그인과 로그아웃

xuefang-jun
Download Presentation

쿠키와 세션

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 6 쿠키와 세션

  2. 학습목표 • 셋 이상의 화면으로 구성된 웹 애플리케이션을 작성 할 때에는 JSP 페이지나 서블릿 클래스들이 서로 데이터를 주고 받도록 만들어야 할 필요가 있다. 이 장에서는 이럴 때 필요한 쿠키와 세션 기술에 대해 알아보자. • 내 용 • 쿠키와 세션 • 쿠키 기술 • 세션 기술 / HttpSession

  3. 1. 쿠키와 세션 (1) • 세션(Session) - 정의 • 클라이언트의 연속적인 요청 또는 그 요청에 대한 서비스 기간 • 예: 홈쇼핑 사이트에서의 로그인과 로그아웃 • 일련의 웹 컴포넌트들이 클라이언트의 연속적인 요청에 의해 실행하면서 클라이언트와의 연결 상태를 유지시키는 개념 • HTTP 프로토콜은 비연결지향(Connection-less) 프로토콜 • 웹 서버는 한 클라이언트의 세션 상태를 유지하기 위한 메커니즘이 요구됨 • 쿠키(cookie) 기술 – 세션 관련 정보를 클라이언트에 저장 • 세션(Session) 기술 – 세션 관련 정보를 웹 서버에 저장

  4. 1. 쿠키와 세션 (2) • 쿠키(Cookie) 기술 • 쿠키 (Cookie) – 웹 서버와 클라이언트가 주고받는 작은 데이터 조각 • 웹 서버가 웹 브라우저로 쿠키(데이터)를 보냈다가 웹 서버 쪽으로 다시 되돌려 받는 방법을 통해 세션 상태를 유지 • 첫 번째 웹 컴포넌트는 웹 브라우저로 HTML문서를 보낼 때 전달한 데이터를 함께 보내며, 웹 브라우저는 그 데이터를 저장해 두었다가 두 번째 웹 컴포넌트를 호출할 때 URL과 함께 웹 서버로 보낸다. [그림 4-3] 쿠키 기술을 이용한 웹 컴포넌트 간의 데이터 전달

  5. 1. 쿠키와 세션 (3) • 세션(Session) 기술 • 웹 서버에서 별도의 세션 객체에 세션 상태 정보를 저장 및 관리 • 동일한 세션에서 실행되는 웹 컴포넌트 간에 세션 객체를 공유하여 데이터 전달 • 첫 번째 웹 컴포넌트는 웹 서버 쪽에 데이터를 저장해 놓고, 그 데이터를 읽기 위해 필요한 세션 아이디만 웹 브라우저로 보낸다. • 웹 브라우저는 아이디를 저장해 두었다가 두 번째 웹 컴포넌트를 호출할 때 웹 서버로 보내며, 그 아이디를 이용하면 저장된 데이터를 찾을 수 있다 [그림 4-4] 세션 기술을 이용한 웹 컴포넌트 간의 데이터 전달

  6. 2. 쿠키 기술 (1) • 쿠키 생성 및 저장 (1) • 쿠키 데이터를 웹 브라우저 쪽에 저장하기 위해 해야 하는 두 가지 일 • 첫째 : Cookie 클래스의 객체를 생성한다. • 둘째 : response 클래스의 addCookie() 메서드를 호출하여 응답 메시지에 쿠키를 추가한다. • 쿠키 객체 생성 • Cookie 클래스는 javax.servlet.http패키지에 속하며, 이 클래스의 객체를 만들 때는 쿠키의 이름과 값을 파라미터로 넘겨줘야 한다. • 파라미터는 모두 String 타입이므로, 쿠키의 값이 수치일 경우는 문자 데이터로 만들어서 넘겨줘야 한다. 쿠키 이름 쿠키 값

  7. 2. 쿠키 기술 (2) • 쿠키 생성 및 저장 (2) • 쿠키 추가 • Response 클래스의 addCookie()메서드는 웹 브라우저로 쿠키를 보내는 기능을 한다. • 응답 메시지에 쿠키를 저장하기 위해 response객체에 대해 addCookie() 메소드를 호출,Cookie객체를 파라미터로 넘겨줘야 한다. • addCookie() 메서드를 통해 웹 브라우저로 전송된 쿠키를 실제로 저장하는 일은 웹 브라우저가 하도록 되어 있다. • 웹 브라우저는 쿠키를 저장할 때 쿠키를 보낸 웹 서버의 주소도 함께 저장해 놓는다. Cookie 객체

  8. 2. 쿠키 기술 (3) • 쿠키 생성 및 저장 (3) • 웹 브라우저 쪽에 쿠키 데이터를 저장하는 JSP 페이지 [그림 4-5] 예제 4-1의 실행 결과

  9. 2. 쿠키 기술 (4) • 쿠키 생성 및 저장 (4) • 쿠키 데이터를 저장된응답 메시지 • 교제 pp.202 HTTP 응답 메시지 참조

  10. 2. 쿠키 기술 (5) • 쿠키 조회 (1) • 웹 브라우저는 웹 서버로 요청을 보낼 때 마다 URL에 포함된 웹 서버의 주소에 해당하는 모든 쿠키를 찾아서 웹 서버로 함께 보낸다. • 서블릿(또는 JSP)는 웹 브라우저가 보내온 요청 메시지로 부터 쿠키 데이터를 읽어와 세션 상태 정보를 인식하고 처리하도록 한다. • Request 객체에 대해 getCookies()메서드를이용하여 쿠키 데이터를 조회할 수 있다. • getCookies()메서드는 웹 브라우저가 보낸 모든 쿠키를 Cookie배열로 만들어서 반환하기 때문에 다음과 같은 Cookie배열 변수에 반환값을 받아야 한다. 웹 브라우저가 보낸 모든 쿠키를 Cookie 배열로 만들어서 리턴하는메서드

  11. 2. 쿠키 기술 (6) • 쿠키 조회 (2) • 쿠키 이름 조회 - Cookie객체에 대해 getName()메서드를 호출하여 조회 • 쿠키 값 조회 - 원하는 이름의 Cookie객체를 찾은 다음에는 그 객체에 대해 getValue()메서드를 호출해서 쿠키 값을 조회 쿠키 이름을 가져오는 메서드 쿠키 값을 가져오는 메서드

  12. 2. 쿠키 기술 (7) • 쿠키 조회 (3) - 예제

  13. 2. 쿠키 기술 (8) • 쿠키 조회 (4) - 예제 웹 브라우저를 종료한 후에 서블릿을 요청한 경우 앞의 예제와 연속하여 실행하는 경우 [그림 4-6] 예제 4-2의 실행 결과(1) [그림 4-7] 예제 4-2의 실행 결과(2)

  14. 2. 쿠키 기술 (9) • 쿠키 수정 (1) • 웹 브라우저에 저장되어 있는 쿠키의 값을 수정 하기 위해서는 새로운 쿠키를 저장할 때와 마찬가지로 수정된 값을 가진 Cookie객체를 생성하여 addCookie()메서드로 넘겨주면 된다. ModifyCookie.jsp

  15. 2. 쿠키 기술 (10) • 쿠키 수정 (2) [그림 4-9] 예제 4-3의 실행 결과를 확인하는 방법

  16. 2. 쿠키 기술 (11) • 쿠키 삭제 (1) • 쿠키 기술에서 데이터를 삭제하기 위해서는 쿠키의 남은 수명을 0으로 설정하는 방법을 사용해야 한다. • 쿠키의 수명을 설정하기 위해서는 addCookie()메서드를 호출하기 전에 Cookie객체에 대해 setMaxAge() 메서드를 호출하면 된다. • 초단위의 값을 넘겨줘야 하므로, 1시간 후에 쿠키가 지워지도록 만들려면 다음과 같은 값을 넘겨줘야 한다. • setMaxAge()메서드에0이나 마이너스 값을 넘겨줄 수도 있다. 쿠키의 최대 수명(초 단위) 웹 브라우저가 끝날 때 쿠키가 삭제되도록 만드는 값 쿠키를 바로 삭제하도록 만드는 값

  17. 2. 쿠키 기술 (12) • 쿠키 삭제 (2) • Cookie객체에 대해 setMaxAge()메서드 호출에 의해 설정된 쿠키 수명 값은 쿠키 데이터의 ‘Expires’ 옵션으로 설정된다. • ‘Expires=Wdy, DD-Mon-YY HH:MM:SS GMT’ • 예: “Set-Cookie: BLOOD_TYPE=O; Expires=Fri, 09-Jul-2010 12:36:09 GMT”

  18. 2. 쿠키 기술 (13) • 쿠키 삭제 (2) - 예제 • 웹 애플리케이션 디렉터리에 DeleteGookie.jsp라는 이름으로 저장한다.

  19. 2. 쿠키 기술 (14) • 쿠키 삭제 (3) - 예제 [그림 4-10] 예제 4-4의 실행 결과를 확인하는 방법

  20. 2. 쿠키 기술 (15) • 쿠키 옵션 설정 – “Path” 옵션 (1) • Path 옵션은 쿠키가 특정 경로명을 갖는 URL에 대한 요청에만 전송하도록 설정 • 웹 브라우저는 웹 서버로 URL을 보낼 때 웹 서버에 속하는 모든 쿠키를 함께 보내는 것이 기본적인 동작이지만, addCookie()메서드를 호출하기 전에 Cookie객체에 대해 setPath()메서드를 통해 path 옵션을 설정하여 쿠키의 전송 범위를 한정시킬 수 있다. • setPath()메서드에는 웹 애플리케이션 디렉터리를 기준으로 한 URL경로명을 파라미터로 넘겨줘야 한다. • setPath()메서드에 넘겨주는 URL경로명은 반드시 ‘/’로 시작해야 하고 마지막도 ‘/’로 끝내는 것이 좋다. 쿠키를 전송할 URL 경로명

  21. 2. 쿠키 기술 (16) • 쿠키 옵션 설정 – “Path” 옵션 (2)

  22. 2. 쿠키 기술 (17) • 쿠키 옵션 설정 – “Path” 옵션 (3)

  23. 2. 쿠키 기술 (18) • 쿠키 옵션 설정 – “Path” 옵션 (4) • sub1디렉터리에 있는 JSP페이지는 [예제 4-5]가 저장한 JOB쿠키를 받을 수 있지만, sub2디렉터리에 있는 JSP 페이지는 받을 수 없다. [그림 4-12] 예제 4-5의 실행 결과

  24. 2. 쿠키 기술 (19) • 쿠키 옵션 설정 – “Domain” 옵션 (1) • 쿠기의‘Domain’ 옵션은 쿠키가 같은 도메인의 여러 웹 서버로 전송이 가능하도록 함 • 웹 서버가 보낸 쿠키를 다른 웹 서버가 받도록 하기 위해서는 addCookie()메서드를 호출하기 전에 Cookie객체에 대해 setDomain()메서드를 호출하여 도메인 옵션을 설정하도록 한다. 쿠키를 받을 도메인 [그림 4-13] 도메인이 지정된 쿠키가 전송되는 범위

  25. 2. 쿠키 기술 (20) • 쿠키 옵션 설정 – “Domain” 옵션 (2) • 다음 두 예제는 setDomain()메서드의 사용 예

  26. 2. 쿠키 기술 (21) • 쿠키 옵션 설정 – “Domain” 옵션 (3)

  27. 2. 쿠키 기술 (22) • 쿠키 옵션 설정 – “Domain” 옵션 (4) • 앞의 두 JSP페이지는 같은 도메인에 속하는 서로 다른 웹 서버에 설치해야 한다. • [예제 4-7]을 한 쪽 웹 서버에 StoreIDCookie.jsp라는 이름으로 저장하고, [예제 4-8]을 다른 쪽 웹 서버에 ReadIDCookie.jsp라는 이름으로 저장한 후 실행하면 다음과 같은 결과가 나온다. ①첫 번째 웹 서버에 설치한 [예제 4-7]의URL을 입력하세요. ② 두 번째 웹 서버에 설치한 [예제 4-8]의 URL을 입력하세요 [그림 4-15] 예제 4-7, 4-8의실행 결과

  28. 3. 세션 기술 (1) • 세션 동작 방식 (1)

  29. 3. 세션 기술 (2) • 세션 동작 방식 (2)

  30. 3. 세션 기술 (3) • 세션 동작 방식 (3)

  31. 3. 세션 기술 (4) • 세션 동작 방식 (4)

  32. 3. 세션 기술 (5) • 세션 ID (1) • 컨테이너는 클라이언트를 어떻게 식별하는가? • 세션 ID(Session ID) • 클라이언트별로 유일한 세션 ID(Session ID)를 부여하여 식별 • 클라이언트의 처음 요청이 들어오면 세션 ID를 생성하여 응답 메시지로 전달

  33. 3. 세션 기술 (6) • 세션 ID (2) • 세션 ID(Session ID) • 클라이언트는 두번째 요청부터 세션 ID를 요청 전송 시에 웹 서버에 보내고, 웹 서버에서는 세션 ID가 일치하는 세션을 찾아 요청과 연결한다.

  34. 3. 세션 기술 (7) • 세션 ID (3) • 세션 ID 공유 방법 – 쿠키(JSESSIONID) 사용

  35. 3. 세션 기술 (8) • 세션 ID (4) • 세션 ID 공유 방법 – 쿠키(JSESSIONID) 사용 • 세션 기술에서는 웹 브라우저로 세션 ID를 보낼 때 쿠키 형태로 만들어서 전송 • 쿠키 이름은 JSESSIONID [그림 4-23] 쿠키 형태로 전송되는 세션 아이디

  36. 3. 세션 기술 (9) • 세션 ID (5) • 세션 ID 공유 방법 – URL 재작성 방법 • 클라이언트가 쿠키를 지원하지 않을 경우

  37. 3. 세션 기술 (10) • 세션 객체 생성 (1) • 서블릿 클래스에서 세션 객체를 접근하기 위해 Request 객체에 대해 getSession() 메서드를 호출 • getSession()메서드는 세션 정보를 포함하는 javax.servlet.http.HttpSession타입의 객체를 반환 • getSession() 메소드 동작에 유의 • 세션 객체 생성 및 세션 ID 쿠키와 관련된 모든 작업은 컨테이너가 수행 • 요청 메시지에 세션 ID 쿠키가 없으면 새로운 세션 객체를 생성하고 그 객체를 반환 • 새로운 세션 ID를 생성하고 Response에 세션 ID 쿠키까지 설정 • 요청 메시지에 세션 ID 쿠키가 있으면 세션 ID와일치하는 세션 객체가 검색하여 반환 • 만약 세션 ID와일치하는 세션 객체가 없는 경우 새롭게 세션 객체를 생성 세션 객체를 접근하는 메서드

  38. 3. 세션 기술 (11) • 세션 객체 생성 (2) • 새롭게 생성된 세션 객체의 식별 • 이미 생성되어 있는 세션에 대한 접근 : HttpSession session = request.getSession(); if (session.isNew()) { out.println(“This is a new session”); } else { out.println(“Welcome Back!”); } : : HttpSession session = request.getSession(false); if (session == null) { out.println(“no session was available… making one….”); session = request.getSession(); } else { out.println(“There was a session”); } :

  39. 3. 세션 기술 (12) • 세션 객체의속성 설정 (1) • 세션 객체에는 속성(Attribute)를 설정할 수 있다. • 세션 객체를 접근하는 웹 컴포넌트 사이에 데이터를 공유 가능 • getAttribute() 메서드를 이용하여 속성 조회 • 주의: getAttribute()메서드의 리턴 타입은 java.lang.Object이므로 데이터 값을 본래의 타입으로 사용하려면 원하는 클래스로 캐스트 연산을 해야 한다. 속성 이름 속성 값 캐스트 연산자 속성 이름

  40. 3. 세션 기술 (13) • 세션 객체의속성 설정 (2) • 세션 객체에서의 속성 제거 • removeAttribute()메서드를 이용하여 속성 제거 속성 이름

  41. 3. 세션 기술 (14) • 세션 객체 제거 (1) • 세션의 비활성화  세션 제거

  42. 3. 세션 기술 (15) • 세션 객체 제거 (2) • 세션의 비활성화  세션 제거

  43. 3. 세션 기술 (16) • 세션 객체 제거 (3) • 세션이 종료되는 세가지 경우 • 세션 타임 아웃 – 설정된 허용 비활성화 시간을 넘긴 경우 • 서블릿에 의한 종료 – 세션 객체에 대해 invalidate() 메소드 호출 • 웹 애플리케이션의 종료 – 문제 발생으로 다운되거나 언디플로이(undeploy) 되는 경우 • 세션 타임아웃 설정 방법

  44. 3. 세션 기술 (17) • 세션 클래스(HttpSession) - 주요 메소드

  45. 3. 세션 기술 (18) • 세션 기술 – 예제 (1) 음식 이름을 입력하면 동물 이름 입력 화면이 나타나고 동물 이름을 입력하면 결과 화면이 나타납니다. [그림 4-17] 성격 테스트 웹 애플리케이션의 화면 설계

  46. 3. 세션 기술 (19) • 세션 기술 – 예제 (2) HTML 문서 [그림 4-17]의 첫 번째 화면의 URL 서블릿 클래스 [그림 4-17]의 두 번째 화면의 URL [그림 4-17]의 세 번째 화면의 URL

  47. 3. 세션 기술 (20) • 세션 기술 – 예제 (3)

  48. 3. 세션 기술 (21) • 세션 기술 – 예제 (4)

  49. 3. 세션 기술 (22) • 세션 기술 – 예제 (5)

  50. 3. 세션 기술 (22) • 세션 기술 – 예제 (6) [그림 4-19] 예제 4-9 예제 4-10, 예제 4-11의 실행 결과

More Related