인터넷을 통신하기 위한 프로토콜 협약으로 웹 서버와 웹 브라우저 간의 통신에 사용된다.
HTTPS 는 보안(s)을 보장한 것이 된다.
인터넷 프로토콜 : 인터넷에서 데이터 통신을 위한 표준화된 규약이나 규칙
- TCP : 순서를 보장 (HTTP 1.1 버전이 주로 다룬다.)
- UDP : 순서는 보장할 수 없지만 속도가 빠르게 유지가 된다.
Key : Value 형태의 문자열 데이터 

자바 구현
@WebServlet("/make")
public class MakeCookieServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
String key = req.getParameter("key");
String value = req.getParameter("value");
// 쿠키 생성
Cookie cookie = new Cookie(key, value);
// 유효 시간 결정 : 초단위
cookie.setMaxAge(60);
// 쿠키를 삭제하고 싶은 경우
// cookie.setMaxAge(0);
res.addCookie(cookie);
res.sendRedirect(req.getContextPath()+"/02_CookieResult.jsp");
}
}
서블릿에서 사용하게 되는 경우
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키생산공장</title>
</head>
<body>
<h2>쿠키 설정</h2>
<form action="make" method="GET">
이름 : <input type="text" name="key"> <br>
내용 : <input type="text" name="value"> <br>
<button>생성</button>
</form>
</body>
</html>
위와 같이 입력을 받아 출력은 아래와 동일하게 하는 것이다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키생산공장</title>
</head>
<body>
<h2>현재 내브라우저에 있는 쿠키 정보</h2>
<%
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(Cookie c : cookies){
out.print(c.getName() + " : " + c.getValue() + " <br>");
}
} else {
out.print("쿠키가 없다.");
}
%>
<a href="index.html">홈으로</a>
</body>
</html>

JSP 기본 객체 영역 (Scope) 메서드
| 메서드 | 반환형 | 설명 |
|---|---|---|
setAttribute(String name, Object value) | void | key-value 형태로 각 영역에 데이터를 저장. name이 value를 언어 오기 위한 key가 된다. |
getAttribute(String name) | Object | 현재 객체에서 인자로 받은 이름으로 설정된 값을 반환. |
getAttributeNames() | Enumeration | 현재 객체에서 설정된 값의 모든 속성의 이름을 반환. |
removeAttribute(String name) | void | 현재 객체에서 인자로 받은 이름으로 설정된 값을 삭제. |
sessionid를 이용해 구분한다.