코딩 학습/웹 프로그래밍

[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>