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
반응형