본문 바로가기
language/JSP

쿠키(Cookie)와 세션(Session)

by 스파이디웹 2020. 11. 15.
728x90

쿠키(cookie)

-HTTP 프로토콜은 상태가 없다. 이전에 무엇을 했고, 지금 무엇을 하는지에 대한 정보를 갖고 있지 않다.

 

-따라서 웹 브라우저(클라이언트)의 요청에 대한 응답을 하고 나면 해당 클라이언트와의 연결을 지속하지 않는다.

 

-쿠키는 상태가 없는 프로토콜을 위해 상태를 지속시키기 위한 방법이다.

 

-쿠키는 웹 브라우저의 정보를 웹 브라우저에 저장하며, 이후에 서버로 전송되는 요청에는 쿠키가 가지고 있는 정보가 같이 포함되어서 전송된다.

 

-웹 서버는 웹 브라우저의 요청에 포함되어 있을 쿠키를 읽어서, 새로운 웹 브라우저인지 이전에 요청을 했던 웹 브라우저인지를 판단할 수 있다.

1)쿠키는 웹 사이트에 접속할 때 생성되는 정보를 저장한 임시 팡리이다.

2)쿠키는 4KB 이하의 크기로 일반적으로 생성된다.

3)사용자의 정보를 유지하거나, 사이트에 접속하는 사용자들이 해당 사이트에 쉽게 접속하기 위해 만들어졌다.(사생활 및 정보를 침해를 소지가 있음)


쿠키 생성 및 사용

-쿠키는 이름,값,유효기간,도메인,경로 등의 요소로 이루어져 있는데, 이 중 쿠키의 이름과 값이 가장 중요하다.

 

-쿠키를 식별하는데 사용되는 것이 이름 원하는 작업을 수행하려면 해당 쿠키에 대한 이 있어야 하기 때문

 

1.JSP에서 쿠키를 생성하려면 다음과 같이 Cookie 클래스를 사용

ex)

Cookie cookie = new Cookie(String name, String value);

 

2.쿠키를 생성한 후에는 반드시 response 객체의 addCookie()메소드를 사용해서 쿠키를 추가해 주어야한다.

그래야 생성된 쿠키가 response 객체에 실려서 웹 브라우저에 응답시 브라우저에 저장된다.

ex)

response.addCookie(cookie);

 

3.쿠키 생성 후 쿠키의 값을 새 값으로 변경할 때는 setValue()메소드를 사용

ex)

cookie.setValue(newValue);

 

4.웹 브라우저의 요청과 함께 request 객체에 실려 온 쿠키를 읽어 올 때는 request 객체의 getCookies()메소드를 사용한다. 즉 getCookies()메소드를 사용해서 웹 브라우저에 저장된 쿠키를 읽어 온다.

ex)

Cookie[] cookies = request.getCookies();

 

5.쿠키의 수명(지속 시간)은 cookie 객체의 setMaxAge() 메소드를 사용해서 지정

ex)

cookie.setMaxAge(int expiry)


세션(Session)

-웹 서버 쪽의 웹 컨테이너에 상태를 유지하기 위한 정보를 저장한다.

 

-사용자의 정보를 유지하기 위해 javax.servlet.http 패키지의 HttpSession 인터페이스를 구현해서 사용한다.

 

-사용자의 정보를 유지하기 위해서는 쿠키보다는 세션을 사용한 웹 브라우저와 웹 서버의 상태 유지가 훨씬 안정적이고 보안상의 문제도 해결할 수 있다.

 

-웹 브라우저당 1개씩 생성되어 웹 컨테이너에 저장된다.

 

메소드 : 리턴 타입 설명
getAttribute(java.lang.Stringname) : 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형으로 리턴한다.
removeAttribute(java.lang.Stringname) : void 세션 속성명이 name인 속성을 제거한다.
setAttribute(java.lang.String name, java.lang.Object value) : void 세션 속성명이 name인 속성에 속성값으로 value를 할당한다.
setMaxInactiveInterval(intinterval) : void 세션을 유지하기 위한 세션 유지 시간을 초 단위로 설정한다.
invalidate() : void 현재 생성된 세션을 무효화시킨다.

-세션을 사용해서 정보를 유지하려면 먼저 session 객체의 setAttribute() 메소드를 사용해서 세션 속성부터 설정한다.

ex)

session.setAttribute("id","aaaa@king.com");

 

-설정된 세션의 속성을 이용해 정보를 유지하려면 session 객체의 getAttribute()메소드를 사용한다.

ex)

String id = (String)session.getAttribute("id");

 

-세션의 속성을 삭제하려면 session 객체의 removeAttribute()메소드를 사용

ex)

session.removeAttribute("id");

 

-세션의 모든 속성을 삭제할 때는 session객체의 invalidate()메소드를 사용한다.

ex)

session.invalidate()

728x90

'language > JSP' 카테고리의 다른 글

DBCP API를 이용한 커넥션 풀  (0) 2020.11.15
JQuery 사용법  (0) 2020.11.15
Ajax+JQuery  (0) 2020.11.15
액션 태그(Action tag)  (0) 2020.11.14
JSP 내장 객체(Implied Object)  (0) 2020.11.13

댓글