[DAY50] session(세션:서버저장소), cookie(쿠키:클라인트저장소)

NA YE SOM·2023년 9월 13일

Forward

request를 B는 C로 그대로 옮겨줌

Redirect

어디로 가라고 갈곳을 다시 알려주는 방식

A->B로 첫번째 요청
A->C로 이동할때 달라지게 됨

if) 만약 보내고 싶다면 (A->C)









-> A가 서버측으로 넘어가는 현상임
(요청 2번 진행됨)








-> 한번더 실어서 보내주면 됨

-> 한글로 나올 수 있게

<방법1> Redirect1의 setCharcterEncoding 시도 : 안됨



Q 코드는 다 맞는데 '앨리스' 한글로 나오지 않을 경우? (해결책) 파일 이름 바뀌기
캐싱 : 전에 저장해놓은 데이터 계속해서 씀
캐싱이란 무엇입니까?
컴퓨팅에서 캐시는 일반적으로 일시적인 특징이 있는 데이터 하위 집합을 저장하는 고속 데이터 스토리지 계층입니다. 따라서 이후에 해당 데이터에 대한 요청이 있을 경우 데이터의 기본 스토리지 위치에 액세스할 때보다 더 빠르게 요청을 처리할 수 있습니다. 캐싱을 사용하면 이전에 검색하거나 계산한 데이터를 효율적으로 재사용할 수 있습니다.

binding






-> servlet도 class라서 첫글자 꼭 대문자로!

-> a 링크의 요청은 get방식이라서 Doget으로옴





-> project대표 주소 : contectpath


-> 값이 없어져 버리는 경우 x



-> 웹 브라우저를 닫으면 정보가 소멸된다는 뜻
(ex) 전체 방문자수 ,오늘의 방문자수
: HttpSession에 보관
(브라우저를 키면 값이 보이고 브라우저 끄면 값이 없어짐)
브라우저 : 크롬

==> 이런걸로 안됨

*session : 브라우저 열면 세션이 하나 시작하는것


-> 은행사이트 : 시간제한 걸어둠
-> 모든 세션 정보 : 시간제한 있음
(로그인이 풀린적 있음)
-> 시간이 지나면 풀림

(알아두기!)(기본값 : 1800초 = 30분으로 설정)-> 30분동안 세션의 정보는 지워지지 않음

-> 세션정보 = 브라우저정보
-> 나중에 시간도 지정할 수 있음

HttpServletRequest


5.속성(Attribute) 처리 메소드













-> servlet context처럼



값이 잘 전달되는지 확인하기 위해서 doGet메소드로





binding2에서 binding3로 forward
확인은 binding3로 !



-> 고치지 않으면 서버가 죽음

-> 이동경로가 똑같은것이 2개 나오면 : 서버가 죽어버림
(URL mapping이 동일한것이 2개 이상 나오면 서버가 죽음)






-> binding 4번 복붙


-> 어디까지는 정보가 유지되고 어디까지는 유지 x

(알아두기!) 가장 많이 사용하는 저장소

웹 화면 : 정보 저장할 곳이 없음(A -> B 페이지 넘어갈때 : A와 B의 관계는 전혀 없음)

A->B->C .. 넘길수는 있지만 계속 유지할 수 있는 정보는 어떻게 할 것인가?

(ex) 로그인 정보 : 필요할때 : 값을 전달할때 어떻게 할 것인가?

★★★한번전달 : requset, 두고 두고 사용(돌아다니면서 써야할 정보): session이나 servletContext 저장해서 쓰기

-> 이유: 모든 웹의 서로 관계가 없어서 (값을 저장하고 넘겨주는 것들을 잘해야함)
-> binding에서 서버 저장소를 배움
-> 이제는 client 저장소를 배움(정보를 저장해둬야함(서버저장소는 3개(servletcontext, httpsession, httpservletRequset)
-> client개별 pc에 저장하는 정보도 있음

쿠키(cookie) : client에 저장하는 대표적인 것

쿠키(cookie): 개인 pc에 저장되는 정보

-> 브라우저(크롬)에 저장되는 정보
-> 서버에서 쿠키를 만들고 client에게 응답하는 것(저장은 client가 하고있음)
-> 쿠키 만드는 것 : servlet에서 만듦

-> (순서) 시작 : servlet에서 함 -> response보내기

-> jquery에서 쿠키 지원 : client가 만들어서 저장해도 됨
(client자체에도 쿠키가 만들어서 저장 가능) -> jquery에서 하면 편함
(서버가 만들어서 응답해주는 쿠키 써도 됨)/아니면 jquery를 써서 값을 만들고 사용하면 됨
-> 서버가 가서 쿠키를 가져와서 읽어보고 처리하는것 (읽어들이는 방식은 같음)

(지금까지) html 시작 -> servlet으로 갔지만
(쿠키) servlet안에서만 시작(servlet만들기, 응답하기)




-> urlmapping값 소문자로




(ex) 네이버 - 네이버 쿠키
카카오 - 카카오 쿠키
브라우저에 저장되어 있더라도 항상 모든 사이트에서 확인 x

-> 어떤 조건이 만족되었을때 해당 쿠키값 사용가능

-> 주소, 경로 (쿠키가 저장된 경로를 설정가능)

-> 주소바뀌면 쿠키 열수 x
(그렇지 않으면 모든 사이트의 쿠키를 볼 수 있음)


-> 나중에는 다 변수로 바꿈

-> 저장되는 쿠키값은 언제 지워지는가?

session cookie(세션쿠키) : 브라우저를 닫으면 지워짐

-> 쿠키저장된 시간 : 개발자가 정함 (초단위로 설정가능)

(서버측 : request는 응답하면 지워짐, session은 브라우저 닫으면 지워짐, servletcontext는 안지워짐)


cookie는 한달도 가능함

-> 사용자에게 돌려줘야함(client에게 응답해줘야함)




-> 3시간 후
-> 11시 에 지워짐


팝업창(오늘 이창 열지 않겠다)
-> 소소한 정보는 알 수가없으므로 개인pc에 쿠키값으로 저장시켜놓고
-> 팝업창을 열어주든 안열어주든 하는것!



쿠키는 골라서 가져오는 법이 없음
(요청하는 곳에 있는 모든 쿠키를 가져오는것)

-> cookie여러개 올 수 있게 배열 준비!




cookie1에서 시작하기!





-> 원래 안나오는 것이 맞음
(서비스에서 쓰지 x)


-> 쿠키는 단순 저장소 역할
-> 삭제만 하기!

삭제하는법: 유시시간을 0으로 바꾸기





-> name만 지웠으니까 최종 address하나만 남음
-> age는 경로가 안맞아서 안보임

jsessionid : session id값(random값을 알고 있는 사람은 작업을 수행했던 사람, 브라우저를 열었던 사람)

session : 하나의 세션이 시작(브라우저 킬때마다)
-> 브라우저 켤때마다 하나의 세션의 id가 만들어짐
-> id를 서버가 쿠키에 자동으로 저장해놓은 것

--> 자동 로그인 처리할 수 있음(같은 사람이라는 가정하에)

(요즘은 개인정보 이슈로 인해서 자동로그인 권장 x)

jquery 측에서 cookie





copy HTML










-> check되어있으면 쿠키저장 해주겠다



true가 아니다 -> undefined도 해당
-> 쿠키가 없어도 실행가능

수업에 쓰는 호스트 : localhost검색하면 우리가 만든 쿠키 볼수있음



-> new file 열고 체크하면 더이상 열리지 않음

profile
개발자 velog

0개의 댓글