코딩 학습/웹 프로그래밍
[WEB Programming] 세션과 쿠키
JJo-LangLab
2020. 12. 19. 13:22
세션과 쿠키
HTTP Protocol
- 웹 사이트 주소 보면 앞에 시작하는 http
Hyper Text Trasfer Protocol
- 인터넷 상 데이터를 주고받는 서버-클라이언트 모델을 따른다.
- 다양한 종류의 데이터를 주고 받을 수 있다. (HTML 문서, 동영상, 오디오, 이미지 등등)
- 소통 방식 : request(요청), response(응답)
- [JAVA WEB] 위 이름의 객체를 사용해 서버-클라이언트 간 데이터를 주고받는 처리를 할 수 있다.
HTTP 프로토콜의 특징 : Stateless
- 요청, 응답이 끝난 후 연결은 끊는다.
- 이에 따라 발생하는 문제...
- 해당 웹 브라우저에서 이 다음 요청을 하는 경우 이전에 요청한 클라이언트인지 새로운 클라이언트인지 기억하지 못한다...
- 예를 들어 로그인 정보 같은 사용하는 동안 계속 유지되어야 하는 정보들이 있다.
- 장바구니, 혹은 광고!?(내 검색 정보를 바탕으로 배너를 통해 알맞은 광고 게시 등등)
- 위와 같은 문제의 해결책 : 세션, 쿠키
쿠키(Cookie)
- 저장 위치 : 클라이언트 - 웹 브라우저
- 저장 타입 : only 텍스트
- 저장 크기 : 제한 O
- 유효 시간 :
- 기본 : 브라우저 유지 시간 - 브라우저 소멸시 소멸
- 만기 일자 설정 가능
- 이전에는 로그인 정보를 담기도 했다 -> 요즘은 안되요!
- 이전에는 쿠키를 열어볼 수 있었다. -> 요즘은 안되요!
세션(Session)
- 저장 위치 : 서버 - 컨테이너
- 저장 타입 : 객체 가능
- 저장 크기 : 서버 허용 크기만큼
- 유효 시간 :
- 기본 : 브라우저 유지 시갖 - 브라우저 소멸시 소멸
- 유효 시간 설정 가능(ex 톰캣 - 30분)
자바와 세션(Session)
- session : HTTP 기반 클라이언트가 서버에 정보를 요청할 때 생성되는 "상태 정보"
- HttpSession 인터페이스 객체
- Session ID
- 서버가 부여
- HttpSession 객체 생성시 부여(클라이언트 정보, 요청 시간 등의 조합)
- 클라이언트 측에 쿠키로 저장
- 사용 : 쇼핑몰 장바구니, 사용자 인증 처리
JSP로 Session 정보 작성해보기
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//세션 : 클라이언트와 서버간 접속 유지
// 클라이언트 - 서버에 요청
// 서버 - 식별자(session ID) 부여
%>
<h2>세션 정보</h2>
<ul>
<li>session ID : <%=session.getId() %></li>
<li>세션 유효 시간 : <%=session.getMaxInactiveInterval() %></li>
<%
//세션 생성시간
//시작 : 1970년 1월1일 0시 이후
long creationTime = session.getCreationTime();
Date date = new Date(creationTime);
%>
<li>세션 생성 시간 : <%=creationTime %></li>
<li>세션 생성 시간 : <%=date %></li>
<%
SimpleDateFormat form = new SimpleDateFormat("yyyy.MM.dd a h:mm:ss");
%>
<li>세션 생성 시간 : <%=form.format(date)%></li>
</ul>
</body>
</html>