Day51 - [JSP]Cookie 쿠키 와 Session 세션

2021. 4. 27. 17:12JSP 공부

이번에는 쿠키에 대해서 알아 봅시다.

 

Cookie

평소에 인터넷 서핑 좀 하신 분이라면, 쿠키 를 한번 쯤은 들어 보셨을 겁니다.

쿠키는 브라우저에 접속했을 때, 값을 저장하기 위해 있는 건데요

 

쿠키를 이해하기 위해서는 먼저 1가지 개념을 알고 가야 합니다.

인터넷 브라우저(클라이언트)는, 서버(웹페이지) 에 접속을 하기 위해서, request(요청) 이라는 것을 하고 서버(웹페이지)는 request(요청)을 받아서 .java 파일로 변환 후, 컴파일 한 후에 브라우저(클라이언트) 에게 돌려 줍니다.

 

네. 돌려 줍니다. 그러니까 처음에 한번 실행되고 그 데이터를 브라우저에게 돌려 줍니다.

즉. 브라우저는 서버의 데이터를 받아서 가만히 있습니다. ( 서버와 연결이 끊깁니다 ) 처음에 요청한 데이터를 그대로 계속 유지하고 있죠. 

 

쿠키는, 값(데이터)을 지속적으로 유지하기 위해서 사용합니다.

쿠키는 서버에서 생성하여, 서버가 아닌 클라이언트측(local)에 정보를 저장합니다.

서버에서 요청할 때마다 쿠키의 속성값을 참조 또는 변경할 수 있습니다.

쿠키는 개당 4kb로 용량이 제한적이며, 300개까지(1.2MB) 데이터 정보를 가질 수 있습니다

 

쿠키를 어떻게 만드는지 한번 봅시다

 

1. 쿠키 생성 -> 생성자에 매개변수로 식별할 쿠키이름과 값을 넣어 줍니다.

2. 쿠키의 속성(시간) 을 지정 합니다. 여기서 시간은 쿠키가 유지되는 시간 입니다.

3. response 객체에 쿠키를 저장 합니다.

 

예제

쿠키를 만들었으니까 써야죠?

 

쿠키를 만든걸 사용할 때는, 쿠키의 배열을 선언하고 request.getCookies() 를 사용합니다.

※ 쿠키의 배열을 선언하는 이유는, 쿠키를 여러개 만들 수도 있기 때문이에요

 

그리고 쿠키의 배열을 돌면서, 데이터를 사용해주면 됩니다.

여러개의 쿠키들 중, 특정 쿠키만 확인하고 싶다면?

if 문을 사용해서, 앞의 쿠키를 식별하기 위한 이름을 가지고 찾으면 됩니다.

 

Cookie를 활용한 예제.

아이디 기억하기를 누르면, 로그인 전으로 돌아와도 아이디에 마지막 로그인했던 id를 유지할 것.

※ 파일명 : cookie_ex01.jsp

 

※ 파일명: cookie_ex01_result.jsp

※ 파일명 : cookie_ex01_welcome.jsp

 

쿠키는 어떤게 있는지 브라우저에서 확인 할 수 있습니다.

브라우저 창 -> F12 -> Application -> Cookies -> 브라우저 URL 클릭

쿠키는 이렇게, 쉽게 무엇 무엇이 있는지 확인할 수 있기 때문에, 덜 중요한 데이터에만 사용한다고 합니다.

 

Session

세션은 쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단입니다.

단, 쿠키와 달리 클라이언트의 특정 위치에 저장되는 것이 아니라, 서버상에 객체형태로 존재합니다.

서버당 하나의 세션 객체를 가질 수 있습니다. (브라우저 별 서로 다른 세션 사용)

세션 객체는 브라우저 창을 종료하면 삭제됩니다.

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

세션은 클라이언트의 요청이 발생하면 자동생성되어 고유한 ID값을 클라이언트에 넘겨주며 이것은 쿠키에 저장됩니다. JSP에서는 session이라는 내장 객체를 지원하여 세션의 속성을 설정할 수 있습니다

 

Session의 메서드는 아래와 같이 있습니다.

이 중에서, 빨간색으로 표시된 것만 알고 있으면 된다고 해요.

 

그러면 이제, 사용을 해봐야 겠죠?

 

session을 만들때는 그냥 setAttribute 를 사용하면 됩니다.

그리고, session을 사용할 페이지에서 getAttribute를 사용하는데, 반환타입이 Object로 되어있기 때문에 다운 캐스팅을 해주어야 합니다. ( 다운 캐스팅 : 타입을 하위 클래스로 깎는 것 )

 

session을 만들 때, 또는 필요한 곳에서 세션의 시간을 설정할 수 있습니다.

session의 시간이 얼마인지 궁금할 때, 아래와 같이 확인을 할 수 있습니다.

session이 도중에 필요 없어졌을 때, 지워줄 수도 있습니다.

 

session을 활용한 예제를 한번 봅시다.

 

로그인을 하는데, id,pw,닉네임 을 입력하고 로그인을 누르면, 로그인에 성공할 경우. 로그인 성공 메시지와 아이디, 닉네임을 보여 줍니다. 로그아웃을 누르면, 세션을 삭제하고 초기화면으로 돌아갑니다.

먼저, 기본화면을 만들어 줍니다.

파일명 : session_login.jsp

그다음, 넘어온 값을 세션으로 만들어준 다음, sendRedirect를 이용해 줍시다.

파일명 : session_login_result.jsp

로그인에 성공했을 경우에 session_welcome.jsp 파일로 넘어가 줍니다.

파일명 : session_welcome.jsp

주소만 알면, 세션이 없어도(아이디와 비밀번호를 입력안해도) 들어올 수 있기때문에, if문을 걸어 줍니다.

로그아웃을 누르면, session_logout.jsp 로 이동을 합니다.

파일명 : session.logout.jsp

 

쿠키 vs 세션

쿠키 대신에 세션을 사용하는 가장 큰 이유는 세션이 쿠키보다 보안에서 앞서기 때문입니다.

쿠키의 이름이나 데이터는 네트워크를 통해 전달되기 때문에 HTTP 프로토콜을 사용하는 경우 중간에서 누군가가 쿠키의 값을 읽어올 수 있습니다. 

그러나 세션은 오직 서버에만 저장되기 때문에 중요한 데이터를 저장하기에 좋습니다.

세션을 사용하는 또 다른 이유는 웹 브라우저가 쿠키를 지원하지 않거나 강제로 사용자가 쿠키를 차단한 경우에도 사용할 수 있다는 점입니다.

세션은 여러 서버에서 공유할 수 없는 단점이 있습니다. 그러나 쿠키는 도메인을 이용해 쿠키를 여러 도메 인에서 공유할 수 있기 때문에 Naver, Daum과 같은 포털사이트들은 쿠키에 로그인 방식을 저장하는 것을 선호합니다.

ex) ww.naver.com과 mail.naver.com, blog.naver.com의 서버는 각각 다름

 

※ 사용자마다 세션이 생성되는 이유는.... ( 각각의 IP마다 생성되는 세션 같은 이름으로 만들더라도 세션은 서로 다름. )

   세션이 쓰레드 환경에 의해 작동이 되기 때문 입니다.

 

 

이번에는 이렇게, 쿠키와 세션에 대해서 알아 보았습니다.

 

고생하셨습니다.

'JSP 공부' 카테고리의 다른 글

Day52 - [JSP] 예외 페이지  (0) 2021.04.28
Day52 - [JSP]application  (0) 2021.04.28
Day50 - [JSP]out객체  (0) 2021.04.27
Day50 - [JSP]상대경로, 절대경로  (0) 2021.04.27
Day50 - [JSP]Response.redirect  (0) 2021.04.27