[JSP] 쿠키(Cookie)와 세션(Session)
1. 공통점 : 웹 통신간 유지하려는 정보(ex:로그인 정보 등)를 저장하기 위해 사용하는 것입니다.
2. 차이점 : 쿠키 : 개인 PC에 저장됩니다.
세션 : 접속중인 웹 서버에 저장됩니다.
쿠키(Cookie)
웹 브라우저가 보관하고 있는 데이터로, 웹 서버에 요청을 보낼 때 헤더에 담아서 전송합니다.
웹 브라우저는 쿠키가 삭제되기 전까지 웹 서버에 쿠키를 전송합니다.
장단점
- 클라이언트의 일정 폴더에 정보를 저장하기 때문에 서버의 부하를 줄일 수 있습니다.
- 정보가 사용자 컴퓨터(로컬)에 저장되기 때문에 보안에 위협받을 수 있습니다.
- 데이터 저장 용량에 한계가 있습니다.
- 일반 사용자가 브라우저 내의 기능인 "쿠키 차단"을 사용했을 경우 쿠키는 무용지물이 됩니다.
동작 방식
1) 쿠키 생성 : 웹 서버에서 쿠키를 생성하고 쿠키에 응답 데이터를 담아서 웹 브라우저에 전송합니다.
2) 쿠키 저장 : 웹 브라우저는 응답 데이터를 담고 있는 쿠키를 메모리나 파일로 저장합니다.
3) 쿠키 전송 : 웹 브라우저는 쿠키 요청이 있을 때마다 웹 서버에 전송합니다.
웹 서버는 쿠키를 사용해서 필요한 작업을 수행할 수 있습니다.
사용 예시
- 방문했던 사이트에 다시 방문 하였을 때 아이디와 비밀번호 자동 입력
- 팝업창을 통해 "오늘 이 창을 다시 보지 않기" 체크
쿠키 생성 및 사용 방식
1) 쿠키 생성 후 response 객체에 담아줍니다.(이미 쿠키 이름이 존재하면, 값 수정)
Cookie cookie = new Cookie("쿠키이름", "쿠키값");
response.addCookie(cookie);
2) 쿠키 유무를 확인하고 쿠키의 값을 얻어옵니다.
String cookieCheck = request.getHeader("Cookie");
if(cookieCheck != null){
Cookie[] cookies = request.getCookie();
for(Cookie cookie : cookies){
cookie.getName();
cookie.getValue();
}
}
3) 쿠키를 삭제합니다.
String cookieCheck = request.getHeader("Cookie");
if(cookieCheck != null){
Cookie[] cookies = request.getCookie();
for(Cookie cookie : cookies){
cookie.setMaxAge(0);
response.addCookie(cookie);
}
}
세션(Session)
내장 객체로서 브라우저마다 한 개씩 존재하고, 고유한 SessionID 생성 후 정보를 추출합니다.
장단점
JSP에서만 접근할 수 있기 때문에 보안성이 좋고, 저장 용량의 한계가 거의 없습니다.
서버에 데이터를 저장하므로 서버에 부하가 걸릴 수 있습니다.
* 쿠키보다 세션을 쓰는 것이 더 안정적이고, 안전하지만 세션에 저장할 공간이 부족할 경우 쿠키가 사용됩니다.
동작 방식
- 클라이언트가 페이지를 요청합니다. (사용자가 웹사이트 접근)
- 서버는 접근한 클라이언트의 Request-Header 필드인 Cookie를 확인하여,
클라이언트가 해당 session-id를 보냈는지 확인합니다. - session-id가 존재하지 않는다면,
서버는 session-id를 생성해 클라이언트에게 돌려줍니다. - 서버에서 클라이언트로 돌려준 session-id를 쿠키를 사용해 서버에 저장합니다.
쿠키 이름 : JSESSIONID - 클라이언트는 재접속 시,
이 쿠키(JSESSIONID)를 이용하여 session-id 값을 서버에 전달합니다.
사용 예시
- 화면이 이동해도 로그인이 풀리지 않고 로그아웃하기 전까지 유지
세션의 메소드
'KoreaIt Academy > JSP' 카테고리의 다른 글
[JSP]DBCP(DataBase Connection Pool), JNDI(Java Naming and Directory Interface), MyBatis Framework(#{}, ${}사용) (0) | 2021.09.12 |
---|---|
[JSP, JAVASCRIPT,JQuery] AJAX - GET방식과 POST방식 (0) | 2021.09.09 |
[JSP] 내장 객체, GET 방식과 POST 방식 (0) | 2021.09.08 |
[JSP] 자바 빈즈(Java Beans) (0) | 2021.09.07 |
[JSP] 디렉티브 태그(page, include), 스크립트 태그(선언문, 스크립틀릿, 표현문), 액션 태그(forward, include, param) (0) | 2021.09.07 |
댓글