12장 쿠키와 세션 이장에서 배울 내용 : 쿠키와 세션은 웹 페이지 간에 정보를 유지할 때 사용된다. 쿠키와 세션은 사용되는 형태가 비슷하나, 쿠키는 웹 브라우저(클라이언트) 쪽에 저장되고, 세션은 웹 서버 쪽에 저장된다. 이 번장에서는 이들에 대해 학습한다. 김은옥(oda94@naver.com)
목차 쿠키(Cookie) 세션(Session)
쿠키(Cookie) 쿠키의 개요 HTTP 프로토콜은 상태가 없음. 이전에 무엇을 했고, 지금 무엇을 했는지에 대한 정보를 갖고 있지 않음 웹 브라우저(클라이언트)의 요청에 대한 응답을 하고 나면 해당 클라이언트와의 연결을 지속하지 않음. 이런 부분을 해결하기 위해서 웹 서버 측에 웹 브라우저의 정보를 저장. 이후 계속 되는 웹 브라우저의 요청에 포함되어 있는 웹 브라우저의 정보와 서버에 저장되어 있는, 각각의 웹 브라우저에 대한 정보를 비교해서 동일한 웹 브라우저로부터 온 요청을 판단.
쿠키(Cookie) 쿠키의 개요 쿠키는 상태가 없는 프로토콜을 위해 상태를 지속시키기 위한 방법 쿠키는 웹 브라우저의 정보를 웹 브라우저에 저장하므로, 이후에 서버로 전송되는 요청에는 쿠키가 가지고 있는 정보가 같이 포함되어서 전송 웹 서버는 웹 브라우저의 요청에 포함되어 있을 쿠키를 읽어서, 새로운 웹 브라우저인지 이전에 요청을 했던 웹 브라우저인지를 판단.
쿠키(Cookie) 쿠키의 개요
쿠키(Cookie) 쿠키의 사용 JSP에서 쿠키를 사용하기 위해서는 javax.servlet.http 패키지에 있는 Cookie 클래스의 객체를 생성 생성된 쿠키에는 각각의 웹 브라우저를 판별할 수 있는 정보가 포함 생성된 쿠키는 웹 서버가 웹 브라우저의 요청에 응답할 때, response객체에 실려서 사용자의 웹 브라우저에 저장 웹 브라우저에 저장된 쿠키는 다시 사용자가 웹 서버에 요청을 할 때 request객체에 실려서 웹 서버에 전달
쿠키(Cookie) 쿠키의 사용 키는 이름, 값, 유효기간, 도메인, 경로 등으로 이루어짐 JSP에서 쿠키를 생성할 때에는 Cookie클래스를 사용 Cookie cookie = new Cookie(String name, String value); name : 생성되어지는 쿠키의 이름을 설정하는 매개변수 value : 이 쿠키에 해당하는 값을 설정하는 매개변수
쿠키(Cookie) 쿠키의 사용 쿠키를 생성한 후에는 반드시 response객체의 addCookie()메소드를 사용해서 쿠키를 추가 response.addCookie(name); 쿠키의 수명(지속시간)은 cookie객체의 setMaxAge()메소드를 사용해서 지정 cookie.setMaxAge(int expiry);
쿠키(Cookie) 쿠키의 사용 쿠키를 생성한 후에는 반드시 response객체의 addCookie()메소드를 사용해서 쿠키를 추가 response.addCookie(name); 쿠키의 수명(지속시간)은 cookie객체의 setMaxAge()메소드를 사용해서 지정 cookie.setMaxAge(int expiry);
쿠키(Cookie) 쿠키의 사용 웹 브라우저의 요청과 함께 request객체에 실려 온 쿠키를 읽어 올 때는 request객체의 getCookies()메소드를 사용. Cookie[] cookies = request.getCookies();
쿠키(Cookie) 쿠키의 사용 쿠키를 작성해서 사용하는 순서 ① 먼저 쿠키를 생성. ② 쿠키에 필요한 설정. 예를 들면, 쿠키의 유효시간, 쿠키에 대한 설명 등을 적용하고, 도메인, 패스, 보안. ③ 웹 브라우저에 생성된 쿠키를 전송.
쿠키(Cookie) 쿠키의 사용 웹 브라우저에 저장된 쿠키를 사용하는 절차 ① 웹 브라우저의 요청에서 쿠키를 얻어옴. ② 쿠키는 이름, 값의 쌍으로 된 배열형태로 리턴 . 리턴 된 쿠키의 배열에서 쿠키이름을 가져옴. ③ 쿠키이름을 통해서 해당 쿠키에 설정된 값을 추출.
세션(Session) 웹 서버 쪽의 웹 컨테이너에 상태를 유지하기 위한 정보를 저장 세션은 사용자의 정보를 유지하기 위해 javax.servlet.http 패키지의 HttpSession 인터페이스를 구현해서 사용. 사용자의 정보를 유지하기 위해서는 쿠키를 사용하는 것보다 세션을 사용한 웹브라우저와 웹서버의 상태유지가 훨씬 안정적이고 보안상의 문제도 해결할 수 있음. 세션은 웹 브라우저 당 1개씩 생성되어 웹 컨테이너에 저장.
세션(Session) 세션과 웹 브라우저의 관계
세션(Session) 세션의 사용 세션에서 웹 브라우저와의 상태를 유지하기 위해 제공되는 메소드 메소드 : 리턴 타입 getAttribute(java.lang.String name) : java.lang.Object 세션 속성명이 name인 속성의 값을 Object 타입으로 리턴한다. 해당되는 속성명이 없을 경우에는 null 값을 리턴한다. getAttributeNames() : java.util.Enumeration 세션 속성의 이름들을 Enumeration 객체 타입으로 리턴한다. getCreationTime() : long 1970년 1월 1일 0시 0초를 기준으로 하여 현재 세션이 생성된 시간까지 경과한 시간을 계산하여 1/1000초 값으로 리턴한다. getId() : java.lang.String 세션에 할당된 고유 식별자를 String 타입으로 리턴한다. getMaxInactiveInterval() : int 현재 생성된 세션을 유지하기 위해 설정된 세션 유지시간을 int형으로 리턴한다.
세션(Session) 세션의 사용 세션에서 웹 브라우저와의 상태를 유지하기 위해 제공되는 메소드 메소드 : 리턴 타입 invalidate() : void 현재 생성된 세션을 무효화 시킨다. removeAttribute(java.lang.String name) : void 세션 속성명이 name인 속성을 제거한다. setAttribute(java.lang.String name, java.lang.Object value) : void 세션 속성명이 name인 속성에 속성값으로 value를 할당한다. setMaxInactiveInterval(int interval) : void 세션을 유지하기 위한 세션 유지시간을 초 단위로 설정한다
세션(Session) 세션의 사용 세션 속성의 설정은 session객체의 setAttribute()메소드를 사용 session.setAttribute(“id","aaaa@king.com"); 세션의 속성을 사용하려면 session객체의 getAttribute()메소드를 사용 String id = (String)session.getAttribute("id");
세션(Session) 세션의 사용 세션의 속성을 삭제하려면, session객체의 removeAttribute()메소드를 사용 session.removeAttribute("id"); 세션의 모든 속성을 삭제할 때는 session객체의 invalidate()메소드를 사용 session.invalidate()