쿠키와 세션은 HTTP 프로토콜의 특징(Connectionless, Stateless)이자
약점을 보완하기 사용한다.
그러면 HTTP프로토콜, 쿠키, 세션에 대해 알아보도록 하자.
즉, 한번 만에 통신이 끊어지거나, 클라이언트 인증을 매번 해주는 등의 번거로운 일들을 해결하고자 하는 방법이 쿠키와 세션이다.
클라이언트와 웹 서버 간 정보 유지를 하기 위해 사용하는 것이 쿠키와 세션
로그인 값인 i d : aa, pwd : 11 을 입력하면
위와 같은 쿠키가 생기는 것을 볼 수 있다 ==> 클라이언트 PC에 저장된 상태
일정 시간동안 같은 사용자로부터 들어오는 요청을 하나의 상태로 보고, 그 상태를 일정하게 유지하는 기술
방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라 한다.ex)로그인 후 접속된 화면(보안상 중요한 작업 시 사용)
사용자의 정보가 저장되는 위치가 다르다. 보안은 세션, 속도는 쿠키가 빠르다. 쿠키는 클라이언트, 세션은 웹 서버를 사용한다. 쿠키는 text, 세션은 object가 저장 타입이다.
김밥이라는 것을 만들고 냉장고에 넣어두는 것을 생각해보자
김밥 : 데이터
냉장고들이 있는 곳 : 웹 서버
냉장고 : 세션
냉장고 칸(야채칸,김치칸...) : key (key는 여러개가 있어도 된다.)-sanglist
반찬통 : key 안에 들어갈 value(값)-glist
glist
라는 반찬통 만들기
if(glist==null) glist = new ArrayList<Goods>();
냉장고 안에 들어있는 반찬통 glist
꺼내기
ArrayList<Goods> glist = (ArrayList<Goods>)session.getAttribute("sanglist");
glist
반찬통에 김밥 넣기
glist.add(new Goods(name, price));
glist
반찬통을 다시 냉장고 칸에 넣는 행위
session.setAttribute("sanglist", glist);