Eggs Sunny Side Up
본문 바로가기
Web/JSP_Servlet

쿠키

by guswn100059 2023. 4. 18.

cookie
1. 세션 관리(Session Management)

- 서버가 알아야 할 정보들을 저장

ex) 로그인, 접속 시간, 장바구니 등

2. 개인화(Personalizaation)

- 사용자마다 다르게 적절한 페이지 제공

ex) 웹 환경설정

3. 트래킹(Tracking)

- 사용자의 행동과 패턴 분석 & 기록

ex) 구매기록, 시청기록

 

 

ex) 네이버 쿠키

Cookie에서 꼭 알아야할 4가지

1. Name(이름) : 구분하기 위해서

2. Value(값) : 파일에 저장된 텍스트 데이터

3. Domain(쿠키가 허용된 주소 = 생성된 주소) : 생성된 서버와 사용할 서버가 같아야 함

4. Expires / Max-Age (유효기간) : 날짜가 되면 자동 삭제 -> 대표적 기능 (로그인 유지하기)

 


예제)

쿠키 만드는 jsp)

<%@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>
	<%
		// 1. 쿠키 만드는 방법
		// new Cookie("name", "value");
		// Cookie는 순수 text만 저장가능
		// 특수문자(공백, !, ?..) 사용불가
		
		// 인코딩(URL인코딩) => 띄어쓰기를 해도 오류 X
		String enc = URLEncoder.encode("첫 번째 쿠키", "UTF-8");
		Cookie cookie = new Cookie("first", enc);
		
		// 아래코드는 value값에 공백이 존재하기에 오류가 남.
		// Cookie cookie = new Cookie("first", "첫 번째 쿠키");
		
		// 2. 응답에 쿠키 추가
		response.addCookie(cookie);
	%>
	
	<a href="Ex02SelectCookie.jsp">쿠키 확인하기</a>
</body>
</html>

 

쿠키 조회하는 jsp)

<%@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>
	<%
		// 1. 쿠키 조회하기
		// 쿠키를 한 번에 다 꺼내야함 => 하나씩 조회는 불가능
		Cookie[] cookies = request.getCookies();
		
		/*
		for(int i = 0; i < cookies.length; i++) {
			Cookie c = cookies[i];
		}
		*/
		
		// forEach문
		// for i in list : => list에서 하나씩 빼서 i에 담겠다.
		// for(변수 : 배열)
		for(Cookie c : cookies) {
			
			// 1. 쿠키 이름 가져오기
			String name = c.getName();
			
			// 2. 쿠키 값 가져오기
			String value = c.getValue();
			
			// <h4>이름 : 쿠키값</h4>
			if(name.equals("first")) {
				
				// 디코딩
				String dec = URLDecoder.decode(value, "UTF-8");
				out.print("<h4>"+name+" : "+dec+"</h4>");
			}
		}
	
	%>
	
	<!-- servlet에서 URLMapping 해줘야함. -->
	<a href="ex03">쿠키 수정/삭제</a>
</body>
</html>

 

쿠키 수정하는 java)

package Ex0418;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/ex03")
public class Ex03UpdateCookie extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// 1. 쿠키 파일 수정 == 똑같은 이름으로 쿠키를 만들어서 응답
		Cookie cookie = new Cookie("first", "firstCookie");
		
		// 쿠키의 유효기간 설정
		// .setMaxAge(유효기간(단위 : 초));
		cookie.setMaxAge(60*60*24*365);
		
		// 쿠키의 삭제
		// 유효기간을 0초로 수정시켜주기만 하면 된다.
		cookie.setMaxAge(0);
		
		// 2. 응답에 추가
		response.addCookie(cookie);
		
		// 쿠키 확인페이지로 이동
		response.sendRedirect("Ex02SelectCookie.jsp");
	}

}

 

'Web > JSP_Servlet' 카테고리의 다른 글

Session  (1) 2023.04.19
객체실습_html에서 값 입력 후 jsp에서 출력  (1) 2023.04.19
forward & redirect  (0) 2023.04.18
JSP 객체_html코드 안에서 Java코드 사용  (0) 2023.04.18
MVC(Eclipse)+ORACLE DB 연결(환경설정)  (0) 2023.04.11

댓글