romworld

Cookie 본문

JAVA/개념정리

Cookie

inderrom 2022. 12. 6. 03:08

CookieTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cookie 연습</title>

</head>
<body>
<h3>Cookie 연습</h3>
<a href="<%=request.getContextPath() %>/cookieAdd.do">Cookie 정보 저장하기</a><br><br>
<a href="<%=request.getContextPath() %>/cookieRead.do">Cookie 정보 확인하기</a><br><br>
<a href="<%=request.getContextPath() %>/cookieDelete.do">Cookie 정보 삭제하기</a><br><br>

</body>
</html>

CookieAdd

package kr.or.ddit.basic.cookie;

import java.io.IOException;
import java.io.PrintWriter;

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("/cookieAdd.do")
public class CookieAdd extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// Cookie 저장하는 방법
		
		// 1. Cookie객체를 생성한다. ==> '쿠키이름'과 '쿠키값'을 문자열로 지정하여 생성한다.
		// 형식) Cookie 쿠키변수 = new Cookie("쿠키이름","쿠키값");
		//   ==> '쿠키값'으로 한글을 사용할 경우에는 URLEncoder.encode()메서드로 인코딩 후에 저장한다.
		
		
		Cookie nameCookie = new Cookie("name", "홍길동");
		Cookie ageCookie = new Cookie("age", "25");
		//Cookie ageCookie = new Cookie("age", String.valueOf(25)); 숫자로 쓰면 안되므로 이렇게 써줘도 된다
		Cookie genderCookie = new Cookie("gender", "Male");
		
		// 2. 쿠키 속성 설정하기
		// nameCookie.setPath("적용경로");  // 지정한 경로와 그 하위 경로에서 사용 가능하다.
		//									==> 생략하면 쿠키를 저장할 당시의 경로가 설정된다.
		
		// 쿠키변수.setMaxAge(유지시간); // 단위(초), (-1: 브라우저가 종료될 때까지 유지(기본값)
		//										(0 : 즉시 쿠키가 삭제된다.)
		
		// 쿠키변수.setDomain("적용도메인명"); // 예)".ddit.or.key" ==> www.ddit.or.kr, mail.ddit.or.kr
		
		// 쿠키변수.setSecure(보안여부); // 적용true , 미적용 :flase
		
		// 3. response객체를 이용해서 쿠키를 웹브라우저르 보내면 웨브라우저가 이 쿠키를 받아서 저장한다.
		// 형식)response.addCookie(1번에서 만든 쿠키변수)
		response.addCookie(nameCookie);
		response.addCookie(ageCookie);
		response.addCookie(genderCookie);
		
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf8");
		PrintWriter out = response.getWriter();
		
		out.println("<html><head><meta charset=utf-8><title>Cookie연습</title></head>");
		out.println("<body>");

		out.println("<h3>Cookie데이터를 저장했습니다</h3>");
		out.println("<a href='" +  request.getContextPath() + "/basic/cookie/cookieTest.jsp'>시작문서로 이동하기</a>");
		out.println("</body></html>");
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}

CookieRead

package kr.or.ddit.basic.cookie;

import java.io.IOException;
import java.io.PrintWriter;

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("/cookieRead.do")
public class CookieRead extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
		PrintWriter out = response.getWriter();
		
		// 저장된 쿠키 읽어오기
		
		// 1. 전체 쿠키 정보를 Request객체를 이용하여 가져온다. ==> 가져온 쿠키 정보들은 배열로 저장된다.
		// 형식) Cookie[] 쿠키배열변수 = request.getCookies();
		Cookie[] cookieArr = request.getCookies();
		
		out.println("<html><head><meta charset='utf-8'><title>쿠키 읽기</title></head>");
		out.println("<body>");
		out.println("<h3>저장된 쿠키 확인하기</h3><hr>");
		
		if(cookieArr == null || cookieArr.length == 0	) {
			out.println("<h2>저장된 쿠키가 하나도 없습니다..</h2>");
		}else {
			
			// 쿠키 배열에서 해당 쿠키 정보를 구해온다.
			for(Cookie cookie : cookieArr) {
				// '쿠키이름' 구하기
				String name = cookie.getName();
				
				// '쿠키값' 구하기
				String value = cookie.getValue();
				
				out.println("쿠키이름 : " +name + "<br>");
				out.println("쿠키값 : " + value  + "<hr>");
			}
			
		}
		
		out.println("<a href='" +  request.getContextPath() 
					+ "/basic/cookie/cookieTest.jsp'>시작문서로 이동하기</a>");
		
		out.println("</body></html>");
		
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}

CookieDelete

package kr.or.ddit.basic.cookie;

import java.io.IOException;
import java.io.PrintWriter;

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("/cookieRead.do")
public class CookieRead extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
		PrintWriter out = response.getWriter();
		
		// 저장된 쿠키 읽어오기
		
		// 1. 전체 쿠키 정보를 Request객체를 이용하여 가져온다. ==> 가져온 쿠키 정보들은 배열로 저장된다.
		// 형식) Cookie[] 쿠키배열변수 = request.getCookies();
		Cookie[] cookieArr = request.getCookies();
		
		out.println("<html><head><meta charset='utf-8'><title>쿠키 읽기</title></head>");
		out.println("<body>");
		out.println("<h3>저장된 쿠키 확인하기</h3><hr>");
		
		if(cookieArr == null || cookieArr.length == 0	) {
			out.println("<h2>저장된 쿠키가 하나도 없습니다..</h2>");
		}else {
			
			// 쿠키 배열에서 해당 쿠키 정보를 구해온다.
			for(Cookie cookie : cookieArr) {
				// '쿠키이름' 구하기
				String name = cookie.getName();
				
				// '쿠키값' 구하기
				String value = cookie.getValue();
				
				out.println("쿠키이름 : " +name + "<br>");
				out.println("쿠키값 : " + value  + "<hr>");
			}
			
		}
		
		out.println("<a href='" +  request.getContextPath() 
					+ "/basic/cookie/cookieTest.jsp'>시작문서로 이동하기</a>");
		
		out.println("</body></html>");
		
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}

 

 


 

CookieTest02.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>
<h3>Cookie 카운트</h3>
<div>
<table border='1'>
<tr>
<td><a href="<%=request.getContextPath() %>/cookieCountServlet.do">Cookie Count 증가 하기</a></td></tr><br><br>
<tr>
<td><a href="<%=request.getContextPath() %>/cookieCountDelServlet.do">Cookie Count 초기화 하기</a></td></tr>
</table>
</div>
</body>
</html>

CookieCountServlet

package kr.or.ddit.basic.cookie;

import java.io.IOException;
import java.io.PrintWriter;

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("/cookieCountServlet.do")
public class CookieCountServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("utf-8");
		
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
		PrintWriter out = response.getWriter();
		
		// 쿠키 이름은 'count'로 하기로 함
		
		//count라는 쿠키가 있는지 검사한다.
		Cookie[] cookies = request.getCookies();
		
		int cnt = 0;  // 쿠키값이 저장될 변수
		

		if(cookies!=null) {
			for(Cookie cookie : cookies) {
				String name = cookie.getName(); // 쿠키 이름 구하기
				if("count".equals(name)) { // 쿠키이름이 'count'인지 검사
					cnt = Integer.parseInt(cookie.getValue()); // 현재의 쿠키값 구하기
					break;
				}
			}
		}
		
		
		cnt++; //카운트 증가
		
		// 증가된 카운트 값을 저장할 Cookie객체 생성
		Cookie countCookie = new Cookie("count", String.valueOf(cnt));
		
		response.addCookie(countCookie); // 쿠키 추가하기
		
		out.println("<html><head><meta charset='utf-8'>");
		out.println("<title>Cookie 연습</title></head>");
		out.println("<style>div{border: 1px solid black; width:500px;}</style>");

		out.println("<body>");
		out.print("<div>");
		out.println("<h2>어서오세요. 당신은 "+ cnt +"번째 방문입니다.</h2>");
		out.println("<br><hr><br>");
		
		out.println("<a href='"+ request.getContextPath() +"/cookieCountServlet.do'>카운트 증가하기</a>");
		out.println("<a href='"+ request.getContextPath() +"/basic/cookie/cookieTest02.jsp'>시작문서로 가기</a>");
		out.print("</div>");
		out.println("</body></html>");
		
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

CookieCountDelete

package kr.or.ddit.basic.cookie;

import java.io.IOException;
import java.io.PrintWriter;

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("/cookieCountDelServlet.do")
public class CookieCountDelServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// count라는 쿠키이름을 갖는 쿠키를 찾아서 삭제하기
		
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
		PrintWriter out = response.getWriter();
		
		// 쿠키 정보 가져오기
		Cookie[] cookies = request.getCookies();
		
		if(cookies!=null) {
		for(Cookie cookie : cookies) {
			String name = cookie.getName();
			if("count".equals(name)) { // 쿠키이름이 count인 쿠키 찾기
				cookie.setMaxAge(0);  // 쿠키의 유지시간을 0으로 설정한 후 다시 저장한다.
				response.addCookie(cookie);
			}
		}
	}
		out.println("<html><head><meta charset='utf-8'>");
		out.println("<title>Cookie 연습</title></head>");
		out.println("<style>div{border: 1px solid black; width:500px;}</style>");
		out.println("<body>");
		
		
		out.println("<div>");
		out.println("<h2>Count가 초기화 되었습니다.</h2>");
		out.println("<br><br>");
		
		out.println("<a href='"+ request.getContextPath() +"/basic/cookie/cookieTest02.jsp'>시작문서로 가기</a><br><br>");
		out.println("</div>");
		out.println("</body></html>");
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

'JAVA > 개념정리' 카테고리의 다른 글

Session  (0) 2022.12.06
Cookie 2 ( login)  (0) 2022.12.06
Servlet 3 ( request, response, forward,redirect)  (1) 2022.12.06
Servlet 2  (0) 2022.12.06
Servlet  (0) 2022.12.06
Comments