: 인터넷 웹사이트의 방문기록을 남겨 사용자와 웹사이트 사이를 매개해 주는 정보.
Cookie name Cookie = new Cookie("name", URLEncoder.encode("홍길동", "UTF-8"));
https - 보안이 더 강화된 프로토콜, true만 가능
http - 보안이 더 낮은 프로토콜, false로 사용 가능
전체 Cookie 정보를 Request객체를 이용해서 가져온다.
==> 가져온 Cookie 정보들은 배열에 저장된다.
형식) Cookie[] 쿠키배열변수 = request.getCookies();
쿠키 배열에서 해당 쿠키 정보를 구해온다.
for(Cookie cookie : cookieArr){
String name = cookie.getName(); //'쿠키 변수' 구하기
//String value = cookie.getValue(); //'쿠키값' 구하기
String value = URLDecoder.decode(cookie.getValue(), "utf-8");
}
Cookie[] cookieArr = request.getCookies();
out.println("<html><head><meta charset='utf-8'>");
out.println("<title>Cookie 삭제 연습</title></head>");
out.println("<body>");
out.println("<h2>저장된 Cookie 데이터 삭제하기</h2>");
if(cookieArr==null || cookieArr.length ==0 ) {
out.println("<h3>삭제할 쿠키가 하나도 없습니다.</h3>");
}else {
// 반복문을 사용해서 삭제할 쿠키를 찾는다.
// (예: city 쿠키변수에 저장된 쿠키삭제하기)
for(Cookie cookie : cookieArr) {
String name = cookie.getName(); // '쿠키변수'값 구하기
if("city".equals(name)) { // 삭제할 쿠키 찾기
cookie.setMaxAge(0); // 유지시간을 0으로 설정한다.
response.addCookie(cookie); // 변경된 쿠키를 저장한다.
}
}
}
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();
// countCookie라는 쿠키변수를 사용해서 처리
// countCookie라는 쿠키가 있는지 검사한다.
Cookie[] cookies = request.getCookies();
int count = 0; // 카운트 값 저장할 변수 선언 및 초기화
if(cookies!=null) {
for(Cookie cookie : cookies) {
String name = cookie.getName(); // 쿠키 변수 구하기
if("count".equals(name)) {
// 현재의 count값 구하기
count = Integer.parseInt(cookie.getValue());
break;
}
}
}
//cookie가 없으면 count는 0
count++; // count 값 증가하기
//증가된 count 값을 저장한다.
Cookie countCookie = new Cookie("count", String.valueOf(count));
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>어서오세요. 당신은 "+ count +"번째 방문입니다.</h2>");
out.println("<br><hr><br>");
out.println("<a href='"+ request.getContextPath() +"/cookieCountServlet.do'>카운트 증가하기</a>");
out.println("<a href='"+ request.getContextPath() +"/cookie/cookieTest02.jsp'>시작문서로 가기</a>");
out.print("</div>");
out.println("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}
}
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[] cookieArr = request.getCookies();
for(Cookie cookie : cookieArr) {
String name = cookie.getName();
if("count".equals(name)) {
cookie.setMaxAge(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() +"/cookie/cookieTest02.jsp'>시작문서로 가기</a><br><br>");
out.println("</div>");
out.println("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
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("/cookieLoginServlet.do")
public class CookieLoginServlet 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();
// userid, pass, chkid 값 읽어오기
String userid = request.getParameter("id");
String pass = request.getParameter("pass");
String remember = request.getParameter("remember"); //checkbox
// 쿠키 객체 생성
Cookie idCookie = new Cookie("userId", userid);
// checkbox의 체크 여부 검사
if(remember==null) { // 체크가 해제된 상태
// 쿠키 삭제한다.
idCookie.setMaxAge(0);
response.addCookie(idCookie);
}else { // 체크된 상태
// 쿠키 저장한다.
response.addCookie(idCookie);
}
// // 값 가져오기 - id 기억하기 체크했을 때
// // id 기억하기 체크 = true일 때 아이디 기억해서 jsp로 보내기
//
// if("true".equals(remember)) {// id기억하기가 check일 때
//
// /* Cookie[] cookies = request.getCookies();
// if(cookies!=null) {
// for(Cookie cookie : cookies) {
// if("id".equals(cookie.getName())){
// userid = cookie.getValue();
// response.addCookie(cookie);
// }
// }
// }else {
// */ Cookie idCookie = new Cookie("id", userid);
// response.addCookie(idCookie);
//
// }
// 로그인 성공 여부 검
//id와 pass가 test / 1234일 때 메인 화면으로 이동
if("test".equals(userid) && "1234".equals(pass)) {
//메인화면 이동
//request.getRequestDispatcher(request.getContextPath() + "/cookie/cookieMain.jsp").forward(request, response);
response.sendRedirect(request.getContextPath() + "/cookie/cookieMain.jsp");
}else {
response.sendRedirect(request.getContextPath() + "/cookie/cookieLogin.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}