쿠키란?
쿠키는 클라이언트의 상태 정보를 유지하기 위한 기술.
상태 정보를 클라이언트의 웹 브라우저에 키(key)와 값(value)로 저장했다가
다음 요청 시 저장된 쿠키를 함께 전송함. 그러면 웹 서버는 브라우저가 전송한 쿠키로부터 필요한 데이터를
읽어올 수 있음.
동작 메커니즘
1) 클라이언트가 서버에 요청을 보냄
2) 서버가 쿠키를 생성하여 HTTP 응답 헤어데 실어 클라이언트에 전송
3) 클라이언트는 쿠키를 받아 저장해둠 ( 저장된 상태이기 때문에 아직 사용은 불가능)
4) 클라이언트는 다음 요청 시 저장해둔 쿠키를 HTTP 요청 헤더에 실어 보냄
5) 서버는 쿠키의 정보를 읽어 필요한 작업을 수행합니다.
예제)
<%@ 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>1. 쿠키(Cookie) 설정</h1>
<%
//쿠키 생성
Cookie cookie = new Cookie("myCookie","쿠키맛나요");
cookie.setPath(request.getContextPath());// 경로를 컨텍스트 루트로 설정
cookie.setMaxAge(3600);// 쿠키 유지 기간을 한시간으로 설정
response.addCookie(cookie); //응답 헤더에 쿠키 추가
%>
<h2>2. 쿠키 설정 직후 쿠키값 확인하기</h2>
<%
Cookie[] cookies = request.getCookies(); //요청 헤더의 모든 쿠키 얻기
if (cookies!=null){
for(Cookie c : cookies){
String cookiename = c.getName();// 쿠키 이름 얻기
String cookievalue = c.getValue();// 쿠키 값 얻기
//화면에 출력하기
out.println(String.format("%s : %s<br/>", cookiename,cookievalue));
}
}
%>
<h2>3. 페이지 이동 후 쿠키값 확인하기</h2>
<a href="CookieResult.jsp">
다음 페이지에서 쿠키값 확인하기
</a>
</body>
</html>
1) 쿠키 생성 시
Cookie cookie = new Cookie(이름, 값)
2) cookie.setpath (request.getContextPath());
requset 내장 객체의 getContextPath() 로 얻어온 컨텍스트 루트
즉 웹 어플리케이션 전체에서 쿠키를 사용하겠다는 의미임.
3)response.addCookie(cookie) 응답 헤더에 쿠키를 추가해서 저장해줍니다.
쿠키 값을 가져올 때는 배열로 가져옵니다.
4) Cookie[] cookies = request.getCookies();
5) 반복문으로 쿠키의 값이 null이 아닐때는 값을 출력합니다.
실행 결과에는 JSESSIONID라는 쿠키가 보임.
이 쿠키는 톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키.
새로운 웹 브라우저를 열면 자동으로 생성됨
다음 페이지에서 쿠키값 확인하기 클릭시 나오는 페이지
CookieRequest.jsp
<%@ 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>
<h2>쿠키값 확인하기(쿠키가 생성된 이후의 페이지)</h2>
<%
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(int i = 0; i<cookies.length;i++){
String cookieName = cookies[i].getName();
String cookieValue = cookies[i].getValue();
out.println(String.format("쿠키명 : %s - 쿠키값 : %s<br/>", cookieName, cookieValue));
}
}
%>
</body>
</html>
'BACKEND > Java' 카테고리의 다른 글
실습 문제) 187p 6번 풀이 - 명품 자바 에센셜 (0) | 2023.10.03 |
---|---|
실습 문제 ) p185 4번 풀이 -명품 자바 에센셜 (0) | 2023.10.03 |
Scope ) session 영역 (0) | 2023.09.26 |
Scope ) request 영역 (0) | 2023.09.26 |
Scope ) Page 영역 (0) | 2023.09.26 |