1. 쿠키란?


  • 웹 서버가 사용자의 로컬 컴퓨터에 저장하는 기록 정보 파일

    • ex1) 아이디/비번이 쿠키에 저장되어 다음 방문 때는 자동 입력된다.
    • ex2) 1주일간 이 창을 띄우지 않음을 체크하면 그 기록이 쿠키에 저장되어 1주일간 팝업창이 뜨지 않는다.
  • 쿠키 동작 방식

    • 쿠키 생성
      • 사용자가 사이트를 처음 방문하면 서버가 해당 사용자의 쿠키를 생성 후 응답을 돌려줄 때 헤더에 담아서 보낸다.
    • 쿠키 저장
      • 웹 브라우저는 응답에 포함된 쿠키를 쿠키 저장소에 보관한다.
    • 쿠키 전송
      • 해당 웹 서버의 쿠키를 가진 웹 브라우저는 앞으로 웹 페이지 요청을 할 때마다 쿠키를 함께 전송한다.
  • 쿠키 구성요소

    • 이름 : 각각의 쿠키를 구분
    • 값 : 쿠키의 이름과 관련된 값
    • 유효시간 : 쿠키의 유지 시간
    • 도메인 : 쿠키를 전송할 도메인
    • 경로 : 쿠키를 전송할 요청 경로

 

2. 쿠키 생성


<%
    Cookie cookie = new Cookie("name", "value");
    response.addCookie(cookie);
%>

 

3. 쿠키 수정 및 삭제


  • 쿠키 수정
    • 해당 쿠키가 있는지 확인 후 있으면 새로운 값으로 쿠키 생성 후 응답에 추가
<%
    Cookie[] cookies = request.getCookies();
    if(cookies != null && cookies.length > 0) {
        for(int i = 0; i < cookies.length; i++) {
            if(cookies[i].getName().equals("name")) {
                Cookie cookie = new Cookie("name", "newValue");
                response.addCookie(cookie);
            }
        }
    }
%>

 

  • 쿠키 삭제
    • 쿠키 클래스는 삭제기능을 따로 지원하지는 않고 유효 시간을 0으로 설정해서 쿠키를 삭제할 수 있다.
Cookie[] cookies = request.getCookies();
if(cookies != null && cookies.length > 0) {
    for(int i = 0; i < cookies.length; i++) {
        if(cookies[i].getName().equals("name")) {
            cookies[i].setMaxAge(0);
            response.addCookie(cookies[i]);
        }
    }
}

 

4. 쿠키 도메인


  • 기본적으로 웹브라우저는 쿠키를 그 쿠키를 생성한 서버에만 전송된다.

    • 쿠키를 만들 때 도메인을 따로 명시하지 않은 경우
  • Cookie 객체의 setDomain(String domain)을 호출하면 쿠키를 보낼 도메인을 지정할 수 있다.

    • ex) cookie.setDomain(www.naver.com) 와 같이 호출하면 www.naver.com 해당 도메인에만 쿠키를 보낸다.
    • ex) cookie.setDomain(.naver.com) 와 같이 점(.)으로 시작하는 경우 같은 도메인이름(naver)를 가지는 모든 서버에 쿠키가 전송된다.
      • mail.naver.com, blog.naver.com 등등
  • 쿠키를 생성한 서버에만 전송하는 이유

    • 보안상의 문제
    • 아무 서버에서나 쿠키를 조작할 수 있으면 보안상으로 문제가 된다.

5. 쿠키 경로


  • 웹 브라우저가 쿠키를 전송할 경로를 지정한다.

    • 도메인이 서버를 지정했다면 경로는 그 뒷부분에 해당한다.
    • Cookie 객체의 setPath(String path) 메소드로 지정
  • 기본적으로 JSP 페이지에서 쿠키를 생성하면 웹 브라우저는 해당 페이지가 속한 경로 및 그 하위 경로에 쿠키를 전송한다.

    • ex) www.myweb.com/path1/myJspPage.jsp 에서 쿠키를 만들어 전송하면 /path1 하위 경로에만 쿠키를 전송한다.
    • ex) cookie.setPath(/) 서버의 모든 경로에 쿠키 전송
    • ex) cookie.setPath(/path2) path2 하위 경로에 대해서만 쿠키 전송
  • 일반적으로 쿠키 경로는 '/'로 지정한다.

    • 쿠키는 웹 애플리케이션 여기저기 퍼져있는 JSP와 서블릿에서 사용하기 때문

 

6. 쿠키를 사용한 로그인 기능


  • 사용자가 로그인을 하면 cookie를 만든다.
String id = request.getParameter("id");
String pw = request.getParameter("pw");

Cookie cookie = new Cookie("auth", id);
cookie.setMaxAge(-1); //브라우저 종료시 쿠키 삭제되도록 유효시간 -1로 설정

 

  • 이후 사용자가 페이지를 요청할 때 마다 auth 쿠키가 있는지 확인해서 있으면 로그인 유저, 없으면 비로그인 유저로 판단하여 적절한 응답을 하면 된다.

' > JSP' 카테고리의 다른 글

13. EL(Expression Language) 기본  (0) 2020.07.21
12. 세션(Session)  (0) 2020.07.19
10. 자바빈(JavaBean)  (0) 2020.07.19
9. <jsp:forward> 액션 태그  (0) 2020.07.19
8. include 디렉티브  (0) 2020.07.19

+ Recent posts