쿠키 (Cookie)
쿠키란? (cookie)
: 웹 서버와 클라이언트 간의 상태 정보를 저장하고 주고받을 수 있는 작은 데이터 조각
쿠키 생성 및 저장
1.
쿠키 생성 단계
쿠키는 처음에 서버 측에서 생성되어 응답에 담겨서 전송됨
2.
쿠키 저장 단계
클라이언트는 응답받은 쿠키를 쿠키 저장소에 저장함
3.
쿠키 전송 단계
클라이언트가 같은 경로(URL) 요청 시, 쿠키를 포함하여 요청 전송함
쿠키 생성 및 저장
•
쿠키는 서버 측에서 생성
•
쿠키는 클라이언트 측에 저장
쿠키를 사용하는 주요 기능
•
사용자 인증 및 로그인 관리
•
장바구니 및 주문 처리
•
아이디 저장
•
언어 및 지역 설정
•
다크 모드
Cookie 메소드
메소드 | 설명 |
Cookie(String name, String value) | 지정된 이름과 값으로 새로운 쿠키 객체를 생성합니다. |
getName() | 쿠키의 이름을 반환합니다. |
getValue() | 쿠키의 값을 반환합니다. |
setValue(String value) | 쿠키의 값을 설정합니다. |
getPath() | 쿠키의 경로를 반환합니다. |
setPath(String path) | 쿠키의 경로를 설정합니다. |
getDomain() | 쿠키의 도메인을 반환합니다. |
setDomain(String domain) | 쿠키의 도메인을 설정합니다. |
getMaxAge() | 쿠키의 유효 기간을 초 단위로 반환합니다. |
setMaxAge(int maxAge) | 쿠키의 유효 기간을 초 단위로 설정합니다. |
getSecure() | 쿠키의 보안 속성을 나타내는 부울 값을 반환합니다. (true: 보안 쿠키, false: 일반 쿠키) |
setSecure(boolean secure) | 쿠키의 보안 속성을 설정합니다. (true: 보안 쿠키, false: 일반 쿠키) |
isHttpOnly() | 쿠키가 HTTP 전용인지 여부를 반환합니다. (true: HTTP 전용, false: JavaScript로 접근 가능) |
setHttpOnly(boolean httpOnly) | 쿠키를 HTTP 전용으로 설정합니다. (true: HTTP 전용, false: JavaScript로 접근 가능) |
쿠키 생성
Cookie cookie = new Cookie("쿠키 이름", 쿠키 값);
response.addCookie(cookie);
Java
복사
•
쿠키는 서버 측에서 객체로 생성하고 응답(response) 메시지에 담아서 클라이언트로 보내주어야 클라이언트의 쿠키 저장소에 저장한다.
쿠키 정보
Cookie[] cookies = request.getCookies();
String myCookie = "";
for(int i = 0 ; i < cookies.length ; i++) {
if( cookies[i].getName().equals("쿠키이름") ) {
myCookie = cookies[i].getValue();
}
}
Java
복사
쿠키 삭제
Cookie cookie = new Cookie("삭제할 쿠키명", "");
cookie.setMaxAge(0); // 유효시간 0으로 설정
response.addCookie(cookie);
Java
복사
•
쿠키는 클라이언트 측에 저장되기 때문에, 직접적으로 delete, remove 하는 개념이 아니라 서버 측에서 쿠키를 다시 생성해서 유효 시간을 소멸시킨 쿠키로 덮어쓰기 하는 개념으로 삭제한다.
쿠키를 활용한 아이디 저장
1.
로그인 화면에서 id 저장 체크 정보를 전송한다.
2.
로그인 처리 프로세스에서,
a.
체크박스 체크 시,
로그인 아이디에 대한 쿠키, 그리고 아이디 저장 체크 여부에 대한 쿠키를 생성해서 응답한다.b.
체크박스 해제 시,
로그인 아이디 쿠키, 아이디 저장 체크 여부 쿠키의 만료 시간을 0으로 만들고 응답한다.3.
로그인 화면에서
아이디 저장 여부에 대한 쿠키를 확인하고 아이디 저장이 체크가 되어 있으면,
로그인 아이디 값을 가져와서 로그인 입력 창에 넣어준다.
•
cookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>아이디 저장</title>
</head>
<body>
<%
// 쿠키 가져오기
Cookie[] cookies = request.getCookies();
// 쿠키의 아이디와 저장여부
String username = "";
String rememberId = "";
if( cookies != null )
for(int i = 0 ; i < cookies.length ; i++) {
if( cookies[i].getName().equals("username") )
username = cookies[i].getValue(); // 저장된 로그인 아이디
if( cookies[i].getName().equals("rememberId") )
rememberId = cookies[i].getValue(); // 저장 여부 - 저장(on)
}
%>
<h1>로그인</h1>
<form action="cookie_pro.jsp" method="post">
<p>아이디 : <input type="text" name="username" /></p>
<p>비밀번호 : <input type="password" name="password" /></p>
<p>
<%
if(rememberId.equals("on")) {
%>
<input type="checkbox" name="remember-id" id="remember-id" checked />
<%
} else {
%>
<input type="checkbox" name="remember-id" id="remember-id" />
<%
}
%>
<label for="remember-id">아이디 저장</label>
</p>
<p><input type="submit" value="로그인"/></p>
</form>
</body>
</html>
HTML
복사
•
cookie_pro.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String username = request.getParameter("username");
String passowrd = request.getParameter("password");
String rememberId = request.getParameter("remember-id");
// checkbox 체크 시, 기본값 on 으로 넘어온다.
out.println("rememberId : " + rememberId + "<br>");
// 아이디 저장 체크 시, 쿠키 생성
if( rememberId != null && rememberId.equals("on") ) {
// 쿠키 생성
Cookie cookieId = new Cookie("username", username); // 아이디 쿠키
Cookie cookieRememberId = new Cookie("rememberId", rememberId); // 아이디 저장 쿠키
response.addCookie(cookieId);
response.addCookie(cookieRememberId);
out.println("아이디를 쿠키에 저장했습니다.<br>");
}
// 아이디 저장 미체크 시, 쿠키 삭제
else {
Cookie cookieId = new Cookie("username", username); // 아이디 쿠키
Cookie cookieRememberId = new Cookie("rememberId", rememberId); // 아이디 저장 쿠키
// 쿠키 만료
cookieId.setMaxAge(0);
cookieRememberId.setMaxAge(0);
response.addCookie(cookieId);
response.addCookie(cookieRememberId);
out.println("아이디를 쿠키에서 삭제했습니다.<br>");
}
%>
<a href="cookie.jsp">cookie.jsp</a>
Java
복사









