[Java] Cookie 활용하기


     

     

    Java, Cookie 활용하기

     

     

     

     

      Cookie의 활용

     Cookie, HTTP의 일종으로 인터넷 사용자가 웹 사이트 방문시, 그 사이트가 사용하고 있는 서버를 통해 사용자의 pc에 설치되는 작은 기록 정보이다.

     

    HttpServletRequest를 사용하는 Java에서 request값을 오랫동안 값을 유지하기 위해 대신 사용하는 방법 중 하나이다.

    보통, Login 여부 혹은 이전에 받은 Data를 저장하기 위한 용도로 활용한다.

     

    이 활용에 가장 비슷한 것은 Session이 있다.

     

     

     

      Session과 Cookie의 차이

     먼저, Session과 Cookie의 가장 큰 차이라고 한다면 서버와 클라이언트이다.

     

    Session은 Server에 값을 저장하고, Cookie는 Client에 값을 저장한다.

    Server는 Web을 제공, 실행시키는 OS이며 일반 사용자가 물리적인 접근은 거의 불가능하고

    Client는 반대로 Web을 접근할 때 사용하는 일반 사용자의 PC이다.

     

    즉, Server에 활용되는 Memory를 줄이기 위해 사용자 PC의 Memory를 잠깐 빌리는 형태이다.

    말이 빌린다는 형태이지, 오히려 처리속도가 빨라지므로 서로에게 이득이 되는 형태이다.

     

     

     

      But, Cookie 삭제하기

    Cookie 삭제하는 방법

     본Cookie를 지우는 방법은 Chrome와 Whale의 기준 (Window OS) 로 Ctrl + Shift + Delete 키를 동시에 나오는 창이다.

     

    우리는 알게 모르게 Cookie를 자주 사용하고 있으며, Cookie를 통해서 자동 로그인 기능을 쉽게 접할수도 있다.

     

    만약 Test로 접하고, Cookie를 지우고 싶다면 위의 언급한 단축키로 기간을 정해서 Cookie를 삭제시킬수도 있다.

     

     

     

      Cookie 사용 방법 -1

    Cookie cookie = new Cookie("loginOS", "mobile");	//Cookie 생성
    cookie.setMaxAge(60*60*24); 						//60초 X 60분 X 24시간
    cookie.setPath("/");        						//모든 도메인

    Cookie 저장하기

     Cookie의 사용은 다음과 같다.

     

    Cookie를 생성할 때, Cookie의 생성자를 통해 key값과 Value값을 저장한다.

    여기서 말하는 key와 Value는 HttpServletRequest와 HttpServletSession의 사용과 비슷하다.

     

    단, set과 add의 메서드가 아닌 생성자를 통해 만드는 것이 다른 점이다.

     

    Cookie를 생성 하고 나서는 반드시 HttpServletResponse에다가 Cookie를 저장해야한다.

     

     

    여기서 불편한 점은, Cookie 하나 당 Cookie를 각자 한개씩 생성해야 한다는 점이다.

     

    Cookie 설명 내용
    new Cookie(Key, Value) Cookie 값 생성, 삽입
    setMaxAge(type Int) Cookie 생성후 부터 삭제될 시간 (초 기준)
    setPath(type String) 어떤 mapping에서 소환할 지 기준

     

     

      Cookie 활용 방법 -2

    Cookie cookie = new Cookie("deviceToken", deviceToken);
    cookie.setMaxAge(60*60*24);                 //60초 X 60분 X 24시간
    cookie.setPath("/member/membership03.do");  //해당 Mapping에서만 Cookie 생성
    
    response.addCookie(cookie);

     본문과 같이 작성할 경우, 해당 Mapping에서만 Cookie를 검색할 수가 있다.

     

     

    Cookie가 해당 Mapping에서 생성 되었는지 체크하기 위해 Log를 찍는 과정이다.

     

     

     

     

      Cookie 값 꺼내오기

    Cookie[] cookies = request.getCookies();
    
    if(cookies != null) {
        for(Cookie index : cookies) {
            String cookieName = index.getName();
            if(cookieName.equals("deviceToken")) {
                log.info("왔다.");
            }
        }
    }

    Cookie 꺼내는 과정

     Cookie의 값을 꺼내오기 위해서는 For문과 if문의 도움이 필요하다.

    함수만으로 Cookie를 꺼내는 방법을 찾아보았지만, 안타깝게도 실패했다.

     

    먼저 request에 저장된 Cookie를 getCookies(); 메서드를 통해 Cookie를 배열에 담는다.

    Cookie를 꺼내기 위해서 if를 통해 cookie가 null인지 먼저 check를 한다.

    null이 아닐 경우, for문을 통해서 Cookie 배열을 모두 검색한다.

     

    메서드 내용
    getName(); Cookie에 저장 된 Key 값
    getValue(); Cookie에 저장 된 Value 값

    Cookie는 대표적으로 두 가지 방식으로 검색이 가능하다.

    검색은 String의 비교값인 equals()를 통해 값 여부를 체크하면 된다.

     

     

     

     

      마무리

     Cookie를 활용하는 방법은 많다.

    삭제하는 방법은 위에 언급한 setMaxAge(0)을 통해 하면 된다.

     

    좀 더 쌔끈한 Request값 활용을 위하여, Cookie를 다뤄보았다.

     

    1. Server의 Memory가 자유롭다.

    2. Request값의 활용이 다양해진다.

    3. Cookie를 활용해서, 값의 여부로 로그인 상태, 이전 로그인 기록 등 다양하게 활용이 가능하다.

    4. Session처럼 사이트 종료시 정보가 사라지지 않는다.

     

    1. 사용 방법이 복잡하다.

    2. 꺼낼 때 For문을 활용해야 한다.?

    3. 초보가 사용하기에는 약깐 난이도가 있다.

     

     개인적으로 Session보다는 Cookie의 활용이 매우 좋다.

    Cookie는 Web을 하고 있다면, 반드시 접하고 한 번쯤 Session과 비교해서 사용하는 것도 나쁘지 않다.

     

    반응형

    'Language > JAVA' 카테고리의 다른 글

    [Java] 셀레니움 설치하기  (0) 2022.09.27
    [Java] FCM Push 전송하기, json Version  (0) 2022.05.12
    [Java] Thread 활용하기  (0) 2022.01.25
    Java, 메모장 파일 만들기  (0) 2021.10.10
    [Java] 자바 Stack 클래스 사용 방법  (0) 2021.10.08

    댓글

    Designed by JB FACTORY