JSP
JSP_데이터 유지관리 기법 [ Cookie, Session ]

HTTP의 특징

* Connection-less : 클라이언트의 request를 서버에 보내고, 서버는 클라이언트에게 response를 보내면 연결이 끊기는 특징

* State-less : 접속을 끊는 순간 서버와의 통신 유지가 사라지는 점

무상태 서버, 무상태 로직 - 웹브라우저에서 서버로 어떤 데이터를 요청 하면, 서버측에서는 알맞은 로직을 수행한 후 데이터를 웹 브라우저에 응답합니다.

서버는 웹 브라우저와의 관계를 종료합니다.


쿠키(Cookie)

            : 연결이 끊겼을 때 어떤 정보를 지속적으로유지하기 위한 수단으로 쿠키라는 방식을 사용한다.

              request
client --------------------->server

생성 : 서버 / 저장 : 클라이언트( 내 컴퓨터 )


                 setter이용             response.addCookie()
쿠키 생성 -----> 속성 설정 -------->response객체에 쿠키 탑재

/☆웹 브라우저의 쿠키 저장소에 쿠키 저장, 이후 같은 사이트에 접속 시 저장된 쿠키가 요청 정보에 실려간다.

웹 사이트에 접속할 때 생성되는 정보를 담은 임시 파일

4KB이하의 크기로 생성


-목적 : 원래 사이트에 접속한 사용자의 정보를 유지하거나, 사이트에 접속하는 사용자들이 해당 사이트에 쉽게 접속하기 위한 것

-단점 : 쿠키에 대한 거부가 웹 브라우저에 설정되어 있으면, 웹 브라우저와의 연결을 지속시키는 기능을 수행 X

-쿠키의 사용

JSP에서 쿠키를 사용하려면 javax.servlet.http 패키지에 있는 Cookie 클래스의 객체를 생성해야 한다.

이렇게 생성된 쿠키에는 각각의 웹 브라우저를 판별할 수 있는 정보가 포함되어 있다.

쿠키는 웹 서버가 웹 브라우저의 요청에 응답할 때 response 객체에 실려서 사용자의 웹 브라우저에 저장된다.

웹 브라우저에 저장된 쿠키는 사용자가 다시 웹 서버에 요청을 할 때 request 객체에 실려서 다시 웹 서버에 전달된다.

이때 웹 서버는 전달된 쿠키의 값을 읽어서 같은 웹 브라우저로부터 온 요청인지를 판별하게 된다. ☆/


1. HTTP의 일종으로 클라이언트에 데이터를 저장하는 파일

2. Login, HOST 정보 등을 저장한다.


<쿠키 문법>

setMaxAge() : 쿠키 유효기간을 설정

setpath() : 쿠키사용의 유효 디렉토리를 설정

setValue() : 쿠키의 값을 설정

getMaxAge() : 쿠키 유효기간 정보를 얻음

getValue() : 쿠키의 값을 얻음



세션(Session)

          : 세션도 쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단

서버상에 객체로 존재

=> 따라서 세션은 서버에서만 접근이 가능하여 보안이 좋고, 저장할 수 있는 데이터에 한계가 없다.

용량의 제한이 없다.

사용 : 로그인이나, 어떠한 정보를 유지하고자 할 때 


클라이언트 요청 —---------> session 자동 생성 —--------->  session 속성 설정
웹브라우저 session 내부 객체의 메소드 이용

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

쿠키는 사용자의 상태 유지를 위한 정보를 웹 브라우저에 저장해서 웹 서버가 쿠키 정보를 읽어서 사용한다.

이것은 웹 브라우저에 저장된 쿠키는 웹 서버에서 열어볼 수 있다는 점에서 보안상 문제가 발생할 수 있다.

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


세션은 웹 브라우저 당 1개씩 생성된다.


웹 서버는 각각의 웹 브라우저로부터 발생한 요청에 대해서 특별한 식별자를 부여한다. 이후에 이 식별자를 웹 브라우저에서 발생한 요청들과 비교해서 같은 식별인지를 구별하게 된다. 이 특별한 식별자에 특정한 값을 넣을 수 있으며, 이것을 사용해서 세션을 유지하게 된다.

☆/


1. 클라이언트와 웹 서버간 연결이 유지되고 있는 상태

2. 사용자가 웹 브라우저를 통해 웹 서버 접속 후 종료할 때 까지의 상태

3. 클라이언트가 웹 서버에 요청 시 서버는 클라이언트에게 세션ID를 부여

4. ID는 임시로 저장되어 클라이언트가 재접속 또는 페이지 이동 시에 서버가 클라이언트를 식별하는 수단

5. 클라이언트 별 맞춤 서비스 제공이 가능해진다.

6. 장점 : 클라이언트의 사용 정보를 서버에 저장하기에 보안 측면에서 쿠키보다 뛰어남.

7. 단점 : 정보들을 서버에 저장하기에 해당 데이터 처리에 대한 비용 발생


<세션문법>

세션은 클라이언트의 요청이 발생하면 자동생성(서버 컨테이너에서)됩니다. session이라는 내부객체를 지원하여 세션의 속성을 설정할 수 있다.


setAttribute() : 세션에 데이터를 저장합니다.

getAttribute() : 세션에 데이터를 얻습니다.

getAttributeName() : 세션에 저장되어 있는 모든 데이터의 이름(유니크한 키값)을 얻습니다.

getId() : 자동 생성된 세션의 유니크한 아이디를 얻습니다.

isNew() : 세션이 최초 생성되었는지, 이전에 생성된 세션인지를 구분합니다.

getMaxinactiveinterval() : 세션의 유효시간을 얻습니다. 가장 최근 요청시점을 기준으로 카운트 됩니다. ( web.xml 에 디폴트값으로 30분이 입력되어있음 )

removeAttribute() : 세션에서 특정 데이터 제거합니다.

invalidate() : 세션의 모든 데이터를 삭제합니다.

댓글 0