본문 바로가기

카테고리 없음

JSP_Cookie

728x90

 

HTTP (Hypter Text Transfer Protocol)

프로토콜 : Server와 Client가 서로 데이터를 주고 받기 위해 사용되는 통신 규약

 

 1) Stateless :

   - 무상태 

   - Server가 Clinet의 상태를 유지하니 않는 것

   - Server는 요청이 오면 응답을 보내는 역할만 수행

   - 통신에 필요한 모든 상태 정보들은  Client가 보관하고 있다가 Server와 통신할 때 데이터를 보내는 구조

   -  Server는 응답만 해주기 때문에 산태 유지에 대한 부하 저하( = 비용절감)

   -  Server가 상태 정보를 유지하지 않기 때문에 서버가 바뀌어도 문제가 되지 않는다. 

 

 2) Connectionsless
   -  네트워크 연결이 끊어져 정보 유지가 되지 않는다. 

 

 

Cookie & Session 

 :   Client  정보를 지속적으로 유지하기 위한 방법

 

  - 세션관리:  Server에서 저장해야할 정보 관리 ex) 로그인 유지, 장바구니 제품 유지 등

  - 개인화: 웹사이트에 대한 사용자 , 세팅 ex) 다크모드, 언어설정 등

  - 트래킹: 광고 등을 위해 사용자 행동 기록, 분석 ex) 사용자 데이터 분석, 타켓팅 광고 활용 등

 

Cookie 생성 및 동작 과정

 

Cookie 저장소

 

 

 

<%@page import="java.net.URLEncoder"%>
<%@ 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>

<h1>makeCookie</h1>
<ol>
 Cookie : client의 정보를 유지하기 위해서 사용하는 방법
 <li>저장위치: client pc </li>
 <li>보안: 취약(누구나 쉽게 접근 가능하다)</li>
 <li>자원: client의 자원을 사용하여 서버에 영향을 끼치지 않는다. </li>
 <li>용량: 쿠키 하나당 4kb x 300개 = 1.2MB</li>
 <li>저장: 텍스트 형태로만 저장 가능</li>
</ol>

<%
	// 1. 쿠키 객체 생성 >> 전송  new Cookie(쿠키이름, URLEndoder.encode("값","UTF-8")); / 한글로 적을경우 > 인코딩 (URLEndoder.encode )
	// new Cookie(쿠키이름, URLEndoder.encode("값","UTF-8")); / 한글로 적을경우 > 인코딩 (URLEndoder.encode )
	// 쿠키값이 한글이면 인코딩 필요
	Cookie cookie = new Cookie("name","yyj");
	Cookie cookie2  = new Cookie("class",URLEncoder.encode ("데이터비즈니스","UTF-8"));
  
   // 2.쿠키의 기한을 설정 ookie.setMaxAge(60초*60초);
   // 양수: 초 단위의 해당 시간만큼 쿠키를 유지
   // 음수: 브라우저 종료시 쿠키가 제거
   // 0 : 제거
    cookie.setMaxAge(60*60);
 
  
  	// 3. 쿠키전송 > 실행해보기 
  	// 쿠키는 응답할 때 전송하므로 response객체를 사용
  	response. addCookie(cookie);
  	response. addCookie(cookie2);
  	
%>

</body>
</html>

 

 

<%@page import="java.net.URLDecoder"%>
<%@ 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>

<h1>showCookie</h1>
<%
  // 1. 쿠키 조회하기 
  // 서버가 요청하지 않아도 따로 요청해서 확인할 수 있다. 
  // 요청하려면 > request 객체사용> 
	Cookie[] cookies = request.getCookies() ;

	// 1-1 반복문 통해서 조회해보기 for(타입, 데이터 타입)>>> 결과는 코드형태로 출력이 됨 > 디코딩작업 필요
	for(Cookie c : cookies){
		out.print("쿠키이름:" + c.getName()+"<br>");
		out.print("쿠키기한:" + c.getMaxAge()+"<br>");
		String value = URLDecoder.decode(c.getValue(),"UTF-8");
		out.print("쿠키값:" + c.getValue()+"<hr>");
	}
		
%>

</body>
</html>

 

출처: 스마트인재개발원

728x90
반응형