Programming/Servlet & JSP

Servlet & JSP (4) - Cookie와 Session

코딩하는 포메라니안 2022. 3. 27. 17:42

0. Cookie와 Session이란?

client 단위로 상태 정보를 유지할 때, 사용된다.

 

client의 요청을 받은 server는 요청을 처리하고 응답을 해줄 때, Http protocol이 활용된다.

Http protocol은 응답을 하고 나면 바로 연결을 해제하면서 사용된 정보가 유지되지 않는데 이를 stateless라고 한다.

이때, 정보를 유지하기 위해 Cookie와 Session을 사용한다.

 

    Cookie Session
공통점   Map 형식으로 관리하기 때문에 key값 중복X
차이점 Type javax.servlet.http.Cookie (Class) javax.servlet.http.HttpSession (Interface)
저장 위치 Client의 컴퓨터의 file Server의 메모리
저장 형식 String형태로 저장 Object형태로 저장
활용 아이디 저장, '오늘 그만 보기' 등 사용자 정보(아이디, 나이, ... ) 등
용량 제한 제한 있음 (도메인당 20개, 1쿠키당 4KB) 제한 없음
만료 시점 쿠키 저장 시 설정(default = Browser 종료 시) Client가 Browser를 종료 or 특정 시간 동안 session에 접근 하지 않을 때

 


 

1. Cookie

1. Cookie 구성

1) 이름(key) : 저장되는 여러 쿠키들을 구별하기 위한 이름

2) 값(value) : 쿠키 이름에 맵핑되는 값

3) 유효기간 : 이 기간 후에, 쿠키는 사라짐

4) 도메인 : 쿠키를 전송할 도메인

5) 경로 : 쿠키를 전송할 경로  ex) 쿠키 => /user   /history로 나눠서 관리 가능

 

 

2. Cookie 동작 순서

1) Client가 페이지를 요청

2) WAS(server)가 Cookie를 생성

3) Header에 Cookie를 넣어서 응답

4) Client는 받은 Cookie를 저장, 다시 WAS에 요청할 때 요청할 경로의 Cookie를 함께 전송

 

ex)

Server에서 Domain = naver.com; Path = /user로 Cookie를 만들어줬다면,

client는 저장해놓고 naver.com/user/*에 접속할 때, 해당 Cookie를 함께 보낸다.

 

 

3. Cookie 사용하기

//1. 쿠키 생성하기
Cookie cookie = new Cookie(String name, String value);

//2. 쿠키 값 변경
cookie.setValue(String value2);

//3. 쿠키 값 얻기
String value = cookie.getValue();

//4. 도메인 지정
cookie.setDomain(String domain);

//5. 도메인 얻기
String domain = cookie.getDomain();

//6. 경로 지정
cookie.setPath(String path);

//7. 경로 얻기
String path = cookie.getPath();

//8. 유효기간 지정
cookie.setMaxAge(int time);
cookie.setMaxAge(0); //쿠키 삭제

//9. 유효기간 얻기
int time = cookie.getMaxAge();

//10. client에 주기 위해, response에 담기
response.addCookie(cookie);

//11. client가 보낸 cookie얻기
Cookie cookies[] = request.getCookies();

 


 

2. HttpSession

- session = 웹 서버에 접속해 있는 상태를 의미하는 하나의 단위

 

1. Session 동작 순서

1) Client가 페이지 요청

2) Server는 Client의 Header에서 Cookie를 확인, 해당 session-id와 일치하는 영역 사용 허가

3) session-id가 존재하지 않는다면, Server는 session-id를 생성해서 Client에게 보냄

          3-1) Client가 쿠키를 사용해서 session-id를 저장해놓는다. *쿠키 이름 = JSESSIONID

          3-2) 재접속 시, JSESSIONID를 이용해서 서버에 저장된 값을 사용

 

 

2. Session 사용하기

//1. HttpSession생성
HttpSession session = request.getSession([true|false]);
//안 적으면 true = session이 있으면 쓰던 거, 없으면 새로 만들어줌
//false = session이 있으면 쓰던 거, 없으면 return null

//2. 값 저장
session.setAttribute(String name, Object value);

//3. 값 얻기
Object obj = session.getAttribute(String name); //원하는 걸로 형변환해서 사용하기

//4. 값 제거
session.removeAttribute(String name);
session.invalidate();//해당 session의 모든 값 삭제

//5. 생성 시간
long ct = session.getCreationTime();

//6. 마지막 접근 시간
long lt = session.getLastAccessedTime();

 

'Programming > Servlet & JSP' 카테고리의 다른 글

JSP (4) - JSTL  (0) 2022.03.27
JSP (3) - EL  (0) 2022.03.27
Servlet & JSP (3) - MVC 패턴  (0) 2022.03.27
Servlet & JSP (2) - Page 이동  (0) 2022.03.27
[환경설정] Eclipse의 Web Project와 DB(MySQL) 연결하기  (0) 2022.03.26