Cookie
- 웹사이트에 접속할 때 생성되는 정보를 담은 임시파일
- 쿠키는 데이터베이스에 저장되는 것이 아니라 사용자의 pc에 저장됨
- 쿠키정보는 서버에 저장하지 않고 클라이언트의 컴에 저장 한글의 경우 깨질 수 있어 인코딩 작업이 필요함.
Cookie 조회 방법
Cookie 생성
쿠키는 사용자가 웹서버에 요청을 할때 request객체에 담겨 웹서버에 전달된다. 이때 웹서버는 전달된 쿠키의 값을 통해 같은 웹브라우저에서 온 요청인지 판별이 가능하다.
c1.jsp <%@page import="java.net.URLEncoder"%> <%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath();
//쿠키에 데이터를 저장(쿠키이름, 쿠키값) //쿠키정보는 서버에 저장하지 않고 클라이언트의 컴에 저장 Cookie c1 = new Cookie("name","suzi"); Cookie c2 = new Cookie("age","25"); Cookie c3 = new Cookie("addr",URLEncoder.encode("서울","UTF-8"));
//서버에서 클라이언트에게 쿠키를 전달하므로 response response.addCookie(c1); response.addCookie(c2); response.addCookie(c3); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <a href="c2.jsp">쿠키</a> </body> </html> |
Cookie 읽어오기
c2.jsp <%@page import="java.net.URLDecoder"%> <%@page import="java.net.URLEncoder"%> <%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath(); //쿠키 받아오기(쿠키가 여러개 이므로 배열로 받음) Cookie[] c = request.getCookies();
%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% //쿠키가 있을때만 실행 if(c!=null){
for(Cookie cc : c){
//내장객체 이용하여 출력 out.print("쿠키이름: "); out.print(cc.getName()); out.print(", 쿠키값: ");
String str = cc.getValue();
if(cc.getName().equals("addr")){ str = URLDecoder.decode(str,"UTF-8");//한글의 경우 깨질수 있으므로 디코더 사용 } out.print(str+"<br/>"); } } %> </body> </html> |
Cookie 유효시간 설정 (setMaxAge), 접근경로 설정(setPath)
c3.jsp <%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath();
//쿠키 생성 Cookie c1 = new Cookie("name","shin"); Cookie c2 = new Cookie("age","30"); Cookie c3 = new Cookie("addr","Pusan"); Cookie c4 = new Cookie("tel","010-1234-1234");
//쿠키도 유효기간이 존재한다(설정 가능) c1.setMaxAge(0); //바로 지워짐 c2.setMaxAge(-1);//끝까지 유지 c3.setMaxAge(10);//10초후 삭제
//c2.setPath("/");//프로젝트내 어느 페이지에서든 접근 가능 //c4.setPath("/board");//board에서만 접근 가능
//쿠키 전달 response.addCookie(c1); response.addCookie(c2); response.addCookie(c3); response.addCookie(c4);
%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <a href="c4.jsp">확인</a> </body> </html> |
Cookie 삭제
c4.jsp <%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath();
//쿠키 지우기 Cookie c4 = new Cookie("tel",null); response.addCookie(c4);
//쿠키 받음 Cookie[] ck = request.getCookies(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% if(ck!=null){
for(Cookie c : ck){ out.print("쿠키이름: "); out.print(c.getName()); out.print(" ,쿠키값: "); out.print(c.getValue()+"<br/>"); } } %> </body> </html> |
Cookie를 활용한 상품목록조회
shop.jsp <%@page import="java.net.URLDecoder"%> <%@page import="java.net.URLEncoder"%> <%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath(); //쿠키 읽음 Cookie[] ck = request.getCookies(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>상품목록조회</title> </head> <body> <table border="1" width="400" cellpadding="0" cellspacing="0"> <tr> <th>상품명</th> <th>상품가격</th> </tr> <tr> <td><a href="p1.jsp">냉장고</a></td> <td>1000</td> </tr> <tr> <td><a href="p2.jsp">세탁기</a></td> <td>2000</td> </tr> <tr> <td><a href="p3.jsp">LEDTV</a></td> <td>3000</td> </tr> </table> <br/> <hr align="left" width="400" color="red"/> 오늘본 상품 목록<br/> <% if(ck!=null){
for(int i=ck.length-1;i>=0;i--){ if(ck[i].getName().indexOf("productName")!=-1){ %> <%=URLDecoder.decode(ck[i].getValue(),"UTF-8")%><br/> <% out.print("<img width='100'src='./image/"+URLDecoder.decode(ck[i].getValue(),"UTF-8")+".jpg'/><br/>"); 이미지 태그 작성할 때 쿠키의 value값을 이용하여 출력 } } } %> </body> </html> |
상품 조회 후 페이지
냉장고 페이지(p1.jsp)
p1.jsp <%@page import="java.net.URLEncoder"%> <%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath(); //쿠키 생성 Cookie c = new Cookie("productName1", URLEncoder.encode("냉장고","UTF-8"));
c.setMaxAge(10); response.addCookie(c); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>냉장고페이지</title> </head> <body> 잘얼어 냉장고 <br/> <img alt="냉장고" src="./image/냉장고.jpg"/><br/> <a href="shop.jsp">돌아가기</a> </body> </html> |
세탁기 페이지(p2.jsp)
p2.jsp <%@page import="java.net.URLEncoder"%> <%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath(); //쿠키 생성 Cookie c = new Cookie("productName2", URLEncoder.encode("세탁기","UTF-8"));
c.setMaxAge(10); response.addCookie(c); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>세탁기페이지</title> </head> <body> 깨끗해 세탁기 <br/> <img alt="세탁기" src="./image/세탁기.jpg"/><br/> <a href="shop.jsp">돌아가기</a> </body> </html> |
TV 페이지(p3.jsp)
p3.jsp <%@page import="java.net.URLEncoder"%> <%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath(); //쿠키 생성 Cookie c = new Cookie("productName3", URLEncoder.encode("LEDTV","UTF-8"));
c.setMaxAge(10); response.addCookie(c); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>TV페이지</title> </head> <body> 잘보여 LEDTV <br/> <img alt="LEDTV" src="./image/LEDTV.jpg"/><br/> <a href="shop.jsp">돌아가기</a> </body> </html> |
쿠키를 활용한 팝업창 만들기 예제(main.jsp)
main.jsp <%@ page contentType="text/html; charset=UTF-8"%> <% request.setCharacterEncoding("utf-8"); %> <% //쿠키 읽음 Cookie[] ck = request.getCookies(); String popUrl = ""; String strUrl, str; strUrl = "popup.jsp"; str = "window.open('" + strUrl + "', 'Think', "; str = str + "'left=610, "; str = str + "top=10, "; str = str + "width=372, "; str = str + "height=466, "; str = str + "toolbar=no, "; str = str + "menubar=no, "; str = str + "status=no, "; str = str + "scrollbars=no, "; str = str + "resizable=no')"; //팝업창 주소 설정 popUrl = str; if(ck != null) { for(Cookie c : ck) { if(c.getName().equals("popup") && c.getValue().equals("no")) { popUrl = "";//popup 쿠키의 값이 no일 경우 팝업창주소를 초기화 시키고 멈춤 break; } } } %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <link rel="stylesheet" type="text/css" href="style.css"/> </head> <body leftmargin="8" onload="<%=popUrl%>"> <table cellSpacing=0 cellPadding=0 border=0 width="700"> <tr> <td align="center">쿠키를 이용한 팝업 예제 프로그램</td> </tr> </table> </body> </html> |
쿠키를 활용한 팝업창 만들기 예제(popup.jsp)
popup.jsp <%@ page contentType="text/html; charset=UTF-8"%> <% request.setCharacterEncoding("utf-8"); %> <% String win, popup; win = request.getParameter("win"); if (win == null || win.equals("")) win = "no"; popup = request.getParameter("popup"); if(popup == null || popup.equals("")) popup = "yes"; //쿠키 생성(이름: popup, 값: yes || no) Cookie c = new Cookie("popup", popup); c.setMaxAge(60);//1분 //c.setMaxAge(86400);//하루 c.setPath("/"); response.addCookie(c); //파라미터 win의 값이 yes라면 현재 보고있는 창 종료, if(win.equals("yes")){ out.println("<script type=\"text/javascript\">"); out.println("window.close();"); out.println("</script>"); } else { //파라미터 win의 값이 yes 가 아닐경우 html 작성 %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <link rel="stylesheet" type="text/css" href="style.css"/> <script type="text/javascript"> function sendIt() { document.myForm.submit(); }
</script> </head> <body> <form name="myForm" method="post" action="popup.jsp"> <table width="372" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="372" colspan="2" height="437" valign="top" align="center"> <br/>팝업 예제<br/> </td> </tr> <tr> <td align="center" height="28" width="332" bgcolor="#f5f5f5"> <input type="checkbox" name="popup" value="no"/><font color="#555555"> 오늘 하루동안 이 창을 열지 않음</font> <input type="hidden" name="win" value="yes"/> </td> <td height="28" align="right" width="40" bgcolor="#f5f5f5"> <img src="hor.gif"/><a href="#" onclick="sendIt();">Close</a> </td> </tr> </table> </form> </body> </html> <% } %> |
메인 페이지
팝업 페이지
'Dev > JSP & Servlet' 카테고리의 다른 글
cos.jar를 이용한 파일 업로드(2)-파일 업로드,다운로드.삭제 (0) | 2019.03.04 |
---|---|
cos.jar를 이용한 파일 업로드(1)-cos.lib설치, 파일등록, 파일정보 조회 (0) | 2019.02.28 |
Servlet - 회원가입,로그인 페이지 만들기 (0) | 2019.02.27 |
Servlet - 성적입력 페이지 만들기 (0) | 2019.02.26 |
Servlet - 게시판 만들기 (0) | 2019.02.26 |