비전공자 공부일기/:: WEB & Front-End
[WEB : Servlet] Cookie 쿠키(생성, 읽기, 제거)
와니_
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>");
}
}