Http프로토콜은 상태유지가 되지 않음
상태 유지를 위해 Cookie와 Session 기술을 사용
클라이언트 단에 저장되는 작은 정보의 단위
사용자 컴퓨터에 저장
유출 위험 O
유효 시간이 지나면 사라짐
클라이언트에서 생성하고 저장될 수 있고, 서버단에서 전송한 쿠키가 클라이언트에 저장될 수 O
서버에서 쿠키 생성, Response의 addCookie 메소드를 이용해 클라이언트에게 전송
Cookie cookie = new Cookie(name, value);
response.addCookie(cookie);
클라이언트가 보낸 쿠키 정보 읽기
Cookie [] cookies = request.getCookies();
쿠키 값이 없으면 null 반환(이걸 생각하고 코드 짜야함!)
Cookie가 가지고 있는 getName()과 getValue() 메소드를 이용해서 원하는 쿠키 정보를 찾아 사용
알파벳과 숫자로만 구성
쿠키의 유효기간 설정
쿠키 동작 순서
(1) 웹 클라이언트 -> WAS에 유지할 정보를 요청
(2) WAS 에서 유지할 정보를 갖고 쿠키 생성 (이름, 값)
(3) WAS -> 웹 클라이언트에 응답결과 전송 (쿠키 포함)
(4) 웹 클라이언트 -> WAS 쿠키 포함 정보 요청
(5) WAS에서 쿠키를 받아 검사(갖고 있는 쿠키라면 유지해야하는 정보, 이전에 접속했던 정보 판별)
//둘 다 같은 의미
HttpSession = request.getSession();
HttpSession session = request.getSession(true);
HttpSession session = request.getSession(false);
세션의 값 저장
setAttribute(String name, Object value);
- name과 value의 쌍으로 객체 Object를 저장하는 메소드
- 세션이 유지되는 동안 저장할 자료를 저장
session.setAttribute(이름, 값);
getAttribute(String name)
메소드
String value = (String) session.getAttribute("id");
세션의 값 삭제
removeAttribute(String name) 메소드
세션 동작 순서
(1) 웹 클라이언트 -> WAS에 유지할 정보를 요청
(2) WAS : 클라이언트를 식별하는 세션키(session id) 생성
(3) WAS : 세션키를 이용해서 key와 value를 이용한 저장소인 HttpSession 생성
(4) WAS : 세션키를 저장하고 있는 쿠키 생성
(5) WAS -> 웹 클라이언트에 응답결과 전송 (쿠키 포함)
(6) 웹 클라이언트 -> WAS에 정보 요청. 이때, session id를 가지고 있는 쿠키도 함께 전송
(7) WAS : 쿠키의 세션키를 이용해 이전에 생성한 저장소를 찾아서 활용(정보 저장, 정보 찾기 등)
이때, 세션의 정보 담기 위해 생성되는 객체 : Http객체