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() : 세션의 모든 데이터를 삭제합니다.
아직 댓글이 없습니다. 첫번째 댓글 작성자가 되어주세요 :)