상세 컨텐츠

본문 제목

72일 - cookie (서블릿에서 vs Spring에서), 생명주기 영역, 가시 영역

수업 일지/Spring

by NayC 2021. 6. 2. 14:35

본문

728x90

쿼리 입력 방법

 

//

 

2번째 입력방법 - cookie

 

먼저 이클립스에서 쿠키를 활용해보자

 

Q. 쿠키가 무엇인가 

 

*상태 유지의 필요성*

- 어떻게하면 상태 유지를 할 수 있을까 고민이 생겨남

- 항상 결과를 줘야? 유지가 되는

 

web은 참 신기함 

- 뭔가를 줄 때마다 새롭게 형성함 

 

이전거에서 /admin/notice/list 를 실행해본다. 

- 아이디, 비번 넣어 로그인 한 다음에

이걸 계속 유지하고 싶을 때 

1) 전달할 때 쿼리스트링으로 계속 전달해주기

2) 1 아니어도 될 수 있도록 

   list.jsp 안에다가 hidden 숨겨놓고 꽂아넣는 것

   <input ... value="검색"> 에다가

3) cookie 사용

 

제일 선호하는건 1 < 3 

 

Q. 쿠키란? 

- 클라이언트가 매일 들고 다니는 녀석

-> 그걸 어떻게 심을 것인지를 알아보자. 

 

쿠키는 클라이언트한테 "다음부터 가지고 다녀" 하는 것.

응답으로 보내줘야 함

 

응답할때 / 쿠키 셋팅 / 

import는 서블릿으로 / q 대신 query로 바꿔주기로 했음

쿠키를 설정하고! 포워딩해야함 (순서대로 해야함) 

 

처음 요청할 때는 없지만

-> 응답 헤더를 보면 q (key) hello (값)이 옴

 

새로고침 > lsit > 응답헤더 

다시 새로고침하면

아까는 없었던게 생김

브라우저가 닫히지 전까지는 계속 유지됨. 

생명선은 브라우저가 닫힐 때까지

cf) session은 브라우저가 닫힌 것과 상관 x "몇 분 기다리다가 가야지" 이런 느낌 (time out이 제로가 되면 닫힘)

 

// 요즘 트렌드 서버 자원을 줄이는 쪽으로 가서 cookie에 id, name을 저장하기도 하는데... 맹점이 많다고 함.

1) 만약에 '쿠키 사용 안함'을 선택해버리면... ('사용자'가 갑이라 사용자가 협조적이어야함. 헬스클럽 예제로 따지면 사용자는 뭘 안들고 다니고는 '까먹었어요' 이럴 수도 있다는 것)

2) 사람 식별하는 용도로 사용하게 되면 쿠키 값만 수정하면 사람 위조가 가능해서... 

 

쿠키 심었으니 읽어오는 작업을 해보자. 

사실 아래 쿠키 심을 때, 조건을 줘야함 

- 쿠키가 없을 때만 심으라고

 

-> 쿠키 가지고 왔다면 콘솔에 출력할게 아니라, 전달을 해보자.

 

쿠키 포워딩은...?

- 굳이 포워딩 할 때 전달할 필요 없다.

  그냥 cookie 출력하는거니까.

 

list. jsp에 출력해보자.

param으로 한 건 4대 저장소에서 찾는게 아님.

-> 쿠키도 이런식으로 가능하다는 것.

 

el 구글링을 해보면

//

* 쿠키 설정 * 

1) 생명주기 설정 : 쿠키가 얼마나 살아있게 할 것인지

2) 가시영역 설정 : 쿠키란 값을 어느 범위 내에서 사용하게 할 것인지 

 

[생명주기 영역] 

- 쿠키는 사라진다. 

- 브라우저는 process가 닫혀야 함 (우리 눈에 보이는 tab을 닫는건 그냥 thread를 하나 없앤 것)

지금 17개 떠있는데 이걸 다 닫아야 Google Chrome이 정말 닫힌다는 것 

-> 이래야 cookie가 사라지는 것

 

다~ 닫고 다시 재시작하면 cookie는 나오지 않을 것

Q. 브라우저 닫혀도! 저장하고 싶으면? (id, name 같은거)

setMax, setPath를 많이 쓴다. (+domain 정도) 

-> 90째줄. 브라우저가 닫혀도 3000시간초이라는 것('초'가 기본 단위였음)

-> 그런데 이렇게 일반적으로 설정하지는 않음. 

    (60*60*24*10) 이렇게. 이해하기 쉽도록 (이래야 10일)

 

실행해보자. 

 

브라우저 닫고 다시 열어보자. 

-> '첫 요청'에 hello가 나옴 (null이 아니라) 

 


[가시 영역] 

 

Q. 쿠키는 URL에서만 가지고 올 수 있나? or 어떤 url을 요청해도! 가지고 올 수 있는걸까? 

 

detail 가보자.

여기서 요청해도 쿠키가 오는지

 

근데... '모든' 페이지에 대해서는 아니다.

 

notice/list 가보면 (admin 아님)

 

index 페이지 ... 도 안됨

 

쿠키 심었던 url을 보면, /admin/notice/list 임

현재 path 이하에서만 볼 수 있도록 되는 것

ex) /admin/notice/..... 이런 곳에서는 볼 수 있는 것

 

전체 영역에서 쓰고 싶으면 

if 조건문 때문에 어플리케이션 들어와서 쿠키 지우고 실습하기

 

난 왜 index에서 안오지

 

* 쿠키 심을 때 주의할 점 *

1) 무조건 문자열

2) 쿼리스트링에서 쓸 수 있는 값만 입력 가능 (특수기호 이런거 안 됨) 

 

json이든 csv든... 

(json이 많이 사용)


서블릿에서는 이렇게 하는데 ~~ Spring에서는? 

- 특히 가지고 오는게 참 불편하다. 

처음 요청해서 값이 없을 경우를 대비해서..

29번째줄에서 test 서로 이름 같으니 뒤의 test는 생략 가능~
지금 첫 요청 페이지라 다들 default 값들이 나온

//

 

쿠키를 심어보자.

저장하고 새로고침

 

나 이거 봐야함

 

또 다른 입력값

요즘은 마치 경로가 값인 것 마냥 사용.

Restful API 때문에

사라질줄 알았던 이런 명령어들도 다시 부활

PUT이 ... 

 

-> REST에서만 쓰는 ... 그리고 자바스크립트 .... 

 

Q. 이 얘기를 갑자기 꺼내시는 이유 

- 위와 같이 생긴 URL에서의 값을 사용할 수 있음을 말하기 위해

- 경로를! 값으로 요구하는 방식이 새롭게 느껴지는~

-> 우리도 이렇게 써보자! 

 

// 이건 내일

 

프로젝트는 html 먼저 구현하면서 다음주 같이 따라나가기.

-> css, 자바스크립트는 맨 마지막에

728x90
반응형

관련글 더보기