-
[WEB : Servlet] Cookie 쿠키(생성, 읽기, 제거)비전공자 공부일기/:: WEB & Front-End 2019. 7. 2. 17:30
2019. 07. 02 필기
자바스크립트 쿠키는 따로 있음. 자바스크립트 쿠키는 권한이 있는, 예를들면 로그인 상태의 사람만 볼 수 있는 응답화면을 제공한다. 다음 예시의 쿠키는 이런 권한이 없어도 볼 수 있는 응답화면을 제공한다.
- 쿠키 - 클라이언트에 저장되는 정보 / 간단한 데이터를 String 으로 저장
- 세션 - 서버에 저장되는 정보 / 보안을 요하는 필요한 데이터를 객체로 저장
* 웹 페이지의 브라우저에서 마우스 오른쪽을 누르고 '(페이지) 검사'를 누르면 검사창이 뜨는데, 검사창 상단의 Application 탭을 누르면 Cookie를 확인할 수 있다.
쿠키를 생성하여 응답문서에 쿠키를 저장하여 클라이언트에게 전달하는 서블릿
@WebServlet("/read.itwill") public class CookieReadServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out=response.getWriter(); //Http : 클라이언트가 제공하는 모!든! 쿠키(Cookie 인스턴스 배열)를 반환하는 메소드 // => 클라이언트가 제공한 쿠키가 없는 경우 null 반환 Cookie[] cookies=request.getCookies(); out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet</title>"); out.println("<style>"); out.println("p {color: #FF00CC; }"); out.println("</style>"); out.println("</head>"); out.println("<body>"); out.println("<h1>클라이언트에 쿠키 전달</h1>"); out.println("<hr>"); out.println("<p>전달된 쿠키는 클라이언트의 가슴 속에 남아있습니다.</p>"); out.println("<hr>"); if(cookies==null) { out.println("<p>너는 쿠키가 없구나~</p>"); } else { String id=""; String count=""; for(Cookie cookie:cookies) { //Cookie.getName() : 쿠키명을 반환하는 메소드 if(cookie.getName().contentEquals("id")) { //Cookie.getValue() : 쿠키값을 반환하는 메소드 id=cookie.getValue(); } else if(cookie.getName().contentEquals("count")) { count=cookie.getValue(); } if (!id.equals("")) { out.println("<p>아이디 ="+id+"</p>"); } if(!id.equals("")) { int cnt=Integer.parseInt(count)+1; out.println("<p>요청횟수 ="+cnt+"</p>"); Cookie countCookie = new Cookie("count", cnt+""); countCookie.setMaxAge(24*60*60); response.addCookie(countCookie); } } } out.println("<p><a href='create.itwill'>쿠키 전달</a></p>"); out.println("<p><a href='remove.itwill'>쿠키 제거</a></p>"); out.println("</body>"); out.println("</html>"); } }
클라이언트에 저장되어 전달된 쿠키값을 응답문서로 생성하여 전달하는 서블릿
=> 클라이언트에 서버 문서를 요청할 경우 서버이름으로 저장된 모든 쿠키를 무조건 리퀘스트 메세지로 전달@WebServlet("/read.itwill") public class CookieReadServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out=response.getWriter(); //Http : 클라이언트가 제공하는 모!든! 쿠키(Cookie 인스턴스 배열)를 반환하는 메소드 // => 클라이언트가 제공한 쿠키가 없는 경우 null 반환 Cookie[] cookies=request.getCookies(); out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet</title>"); out.println("<style>"); out.println("p {color: #FF00CC; }"); out.println("</style>"); out.println("</head>"); out.println("<body>"); out.println("<h1>클라이언트에 쿠키 전달</h1>"); out.println("<hr>"); out.println("<p>전달된 쿠키는 클라이언트의 가슴 속에 남아있습니다.</p>"); out.println("<hr>"); if(cookies==null) { out.println("<p>너는 쿠키가 없구나~</p>"); } else { String id=""; String count=""; for(Cookie cookie:cookies) { //Cookie.getName() : 쿠키명을 반환하는 메소드 if(cookie.getName().contentEquals("id")) { //Cookie.getValue() : 쿠키값을 반환하는 메소드 id=cookie.getValue(); } else if(cookie.getName().contentEquals("count")) { count=cookie.getValue(); } if (!id.equals("")) { out.println("<p>아이디 ="+id+"</p>"); } if(!id.equals("")) { int cnt=Integer.parseInt(count)+1; out.println("<p>요청횟수 ="+cnt+"</p>"); Cookie countCookie = new Cookie("count", cnt+""); countCookie.setMaxAge(24*60*60); response.addCookie(countCookie); } } } out.println("<p><a href='create.itwill'>쿠키 전달</a></p>"); out.println("<p><a href='remove.itwill'>쿠키 제거</a></p>"); out.println("</body>"); out.println("</html>"); } }
클라이언트에 저장된 쿠키를 제거하고 응답문서로 전달하는 서블릿
@WebServlet("/remove.itwill") public class CookieRemoveServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out=response.getWriter(); //클라이언트에서 제공된 모든 쿠키를 반환받아 저장 Cookie[] cookies=request.getCookies(); if(cookies!=null) { for(Cookie cookie:cookies) { //클라이언트에서 제공된 모든 Cookie 인스턴스의 지속시간을 0으로 변경 cookie.setMaxAge(0); //지속시간이 변경된 Cookie 인스턴스를 클라이언트에게 전달 // => Cookie 인스턴스를 전달받은 클라이언트는 지속시간이 0으로 셋팅되어 잇으므로 쿠키 소멸 response.addCookie(cookie); } } out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet</title>"); out.println("<style>"); out.println("p {color: #FF00CC; }"); out.println("</style>"); out.println("</head>"); out.println("<body>"); out.println("<h1>클라이언트에 쿠키 전달</h1>"); out.println("<hr>"); out.println("<p>쿠키가 사망하였습니다.</p>"); out.println("<hr>"); out.println("</body>"); out.println("</html>"); } }
'비전공자 공부일기 > :: WEB & Front-End' 카테고리의 다른 글
[WEB : Servlet] JDBC 연동 - (1) (3) 2019.07.03 [WEB : Servlet] Session 세션 (6) 2019.07.03 Servlet - 파일 업로드 (0) 2019.07.02 웹개발 - 서블릿 생명주기 Servlet Life Cycle (3) 2019.07.02 웹개발16 - 선택자(selector), 자식요소 (6) 2019.06.26