13. 쿠키
0. 목차
Chapter13. 쿠키
Ch13 - 1. 쿠키란?
Ch13 - 2. 쿠키 문법
Ch13 - 1. 쿠키란?
▶ 쿠키란?
▷ 웹 브라우저의 요청과 응답, 그 후 관계 종료
- 웹 브라우저 -데이터 요청/응답- 서버 –→ 서버와 웹 브라우저 관계 종료
- 이렇게 웹 브라우저에 응답 후 관계를 끊는 것은 http 프로토콜의 특징
▷ 서버와 웹 브라우저 관계 종료 이후 연결이 끊어졌지만
▷ 어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키라는 방식을 사용
- 쿠키 생성 장소 : 서버
- 쿠키 저장 장소 : 클라이언트 측에 특정 정보 저장
▷ 쿠키의 특징
- 서버에 요청 할 때마다 쿠키의 속성 값을 참조 또는 변경 가능
- 쿠키는 4kb로 용량이 제한적이며, 300개까지 데이터 정보를 가질 수 있음
Ch13 - 2. 쿠키 문법
▶ 쿠키 사용 과정
▷ 쿠키는 서버에서 생성되고, 클라이언트 측에 전송되어 저장 됨
Cookie cookie = new Cookie("cookie 이름", "cookie 값");
▶ 쿠키 관련 메서드 : set
▷ setMaxAge()
- 쿠키 유효기간 설정
▷ setpath()
- 쿠키 사용의 유효 디렉토리 설정
▷ setValue()
- 쿠키 값 설정
▷ setVersion()
- 쿠키 버전 설정
▶ 쿠키 관련 메서드 : get
▷ getMaxAge()
- 쿠키 유효 기간 정보를 얻음
▷ getName()
- 쿠키 이름을 얻음
▷ getPath()
- 쿠키사용의 유효 디렉토리 정보를 얻음
▷ getValue()
- 쿠키의 값을 얻음
▷ getVersion()
- 쿠키 버전을 얻음
▶ 쿠키 메서드 실습1 : 쿠키 사용 과정
▷ 쿠키 생성 : cookieset.jsp
// cookieset.jsp
<body>
<%
Cookie cookie = new Cookie("cookieN", "cookieV"); // 쿠키 객체 생성
cookie.setMaxAge(60*60); // 쿠키 속성 먹임, 1시간 동안만 쿠키 살아있음
response.addCookie(cookie); // 쿠키 응답 객체에 탑재
%>
<a href="cookieget.jsp">cookie get</a> // cookie get 클릭 시, 쿠키 꺼내는 파일로 이동
</body>
▷ 쿠키를 받아 사용 : cookieget.jsp
// cookieget.jsp
<body>
<%
Cookie[] cookies = request.getCookies(); // cookieset.jsp에서 생성 한 쿠키를 가져옴
// for문으로 쿠키의 이름과 값을 출력
for(int i=0; i<cookies.length; i++) {
String str = cookies[i].getName();
if(str.equals("cookieN")) {
out.println("cookies[" + i + "] name : " + cookies[i].getName() + "<br />");
out.println("cookies[" + i + "] value : " + cookies[i].getValue() + "<br />");
out.println("=====================<br />");
}
}
%>
<a href="cookiedel.jsp">cookie delete</a> // 클릭 시, 쿠키 삭제하는 페이지로 이동
</body>
▷ 쿠키 삭제 : cookiedel.jsp
// cookiedel.jsp
<body>
<%
Cookie[] cookies = request.getCookies(); // set 되어있는 쿠키를 가져 옴
// 현재 set 된 쿠키의 이름을 띄우고 setMaxAge를 0으로 줌으로 0초 살아있게 만듦, 즉 쿠키를 소멸시킴
for(int i=0; i<cookies.length; i++) {
String str = cookies[i].getName();
if(str.equals("cookieN")) {
out.println("name : " + cookies[i].getName() + "<br />");
cookies[i].setMaxAge(0);
response.addCookie(cookies[i]); // 쿠키를 삭제했으니 속성을 변경, 다시 응답 객체에 쿠키 탑재
}
}
%>
<a href="cookietest.jsp">쿠키확인</a> // 클릭 시, 쿠키가 어떻게 설정 되어 있는 지
</body>
▷ cookietest.jsp
// cookietest.jsp
<body>
<%
Cookie[] cookies = request.getCookies(); // set 되어있는 쿠키를 가져 옴
// 쿠키가 있으면 쿠키의 이름과 값을 출력, cookieN은 삭제 되어있기 때문에 디폴트로 설정 된 쿠키가 나옴
if(cookies != null) {
for(int i=0; i<cookies.length; i++){
out.println(cookies[i].getName() + "<br />");
out.println(cookies[i].getValue() + "<br />");
}
}
%>
</body>
- 쿠키 객체 생성 » 쿠키 속성 설정 » 쿠키 response 객체에 탑재
- 쿠키 가져다 쓰려면 request 객체를 통해 get
- 가져다 쓰고 쿠키 속성 변경하면 다시 response 객체에 탑재 시켜주기
- response 객체에 쿠키를 탑재 시켜 주어야 request 가능
▶ 쿠키 메서드 실습2 : 로그인
▷ id/pw 입력 창 : login.html
// login.html
<body>
<form action="loginOk.jsp" method="post">
아이디 : <input type="text" name="id" size="10"><br />
비밀번호 : <input type="password" name="pw" size="10"><br />
<input type="submit" value="로그인">
</form>
</body>
▷ id/pw 확인 : loginoOk.jsp
// loginoOk.jsp
<body>
<%!
String id, pw;
%>
<%
id = request.getParameter("id");
pw = request.getParameter("pw");
if(id.equals("abcde") && pw.equals("12345")) { // id : abcde, pw : 12345 라고 가정하고, id와 pw가 일치 시
Cookie cookie = new Cookie("id", id); // 쿠키에 id 객체 생성
cookie.setMaxAge(60); // 60초 동안 쿠키 살아있음, 쿠키 속성 설정
response.addCookie(cookie); // 쿠키 응답 객체에 탑재
response.sendRedirect("welcome.jsp");
} else {
response.sendRedirect("login.html"); // id : abcde, pw : 12345 라고 가정하고, id와 pw가 불일치 시
}
%>
</body>
login.html에서 로그인에 성공해서 welcome.jsp로 가든
로그인에 실패해서 다시 login.html로 초기화 되든
모두 loginoOk.jsp를 거침
▷ 로그아웃 시 : loginout.jsp
// loginout.jsp
<body>
<%
Cookie[] cookies = request.getCookies();
if(cookies != null) {
for(int i=0; i<cookies.length; i++) {
if(cookies[i].getValue().equals("abcde")){
cookies[i].setMaxAge(0); // 쿠키 속성 변경, 쿠키 생존 시간 0초
response.addCookie(cookies[i]); // 속성 변경 했으므로 응답 객체에 다시 올려 줌
}
}
}
//response.sendRedirect("login.html");
response.sendRedirect("cookietest.jsp"); // 쿠키 삭제 된 거 확인
%>
</body>
▷ 로그인 시 : welcome.jsp
// welcome.jsp
<body>
<%
Cookie[] cookies = request.getCookies();
for(int i=0; i<cookies.length; i++) {
String id = cookies[i].getValue(); // 로그인 성공하면, 쿠키 값을 불러 옴
if(id.equals("abcde")) out.println(id + "님 안녕하세요." + "<br />");
}
%>
<a href="logout.jsp">로그아웃</a>
</body>