ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSP 쿠키(Cookie) 정리 및 예시!!
    JSP 2014. 9. 29. 17:07

    웹에서 쿠키(Cookie)의 사용


    1. 쿠키의 개념

    - HTTP 프로토콜은 상태가 없다. 즉 이전에 무엇을 했고, 지금 무엇을 했는지에 대한 정보를 갖고 있지 않는 특성을 가지고 있다. 즉, 웹 브라우저(클라이언트)의 요청에 대한 응답을 하고 나면 해당 클라이언트와의 연결을 지속하지 않는다.


    - HTTP 프로토콜은 상태에 대한 지속적인 연결이 없다. 따라서 이런 부분을 해결하기 위해서 웹 서버 측에 웹 브라우저의 정보를 저장한 후 계속되는 웹브라우저의 요청 속에 포함되어 있는 웹 브라우저의 정보와 비교해서 동일한 웹 브라우저로부터 온 요청을 판단할 수 있다.


    - 쿠키(Cookie)는 상태가 없는 프로토콜을 위해 상태를 지속시키기 위한 방법이다. 쿠키는 웹 브라우저의 정보를 웹 브라우저에 저장하므로, 이후에 서버로 전송되는 요청에는 쿠키가 가지고 있는 정보가 같이 포함돼 전송된다. 이때 웹 서버는 웹 브라우저의 요청 속에 포함되어 있을 쿠키를 읽어서 새로운 웹 브라우저인지 이전에 요청을 했던 웹 브라우저인지를 판단할 수 있다.


    - 쿠키는 웹 사이트에 접속할 때 생성되는 정보를 담은 임시 파일이다. 일반적으로 쿠키는 4KB 이하의 크기로 생성된다. 이러한 쿠키의 목적은 원래 사이트에 접속한 사용자의 정보를 유지하거나, 사이트에 접속하는 사용자들이 해당 사이트에 쉽게 접속하기 위한 것이다.


    - 어떤 웹 사이트를 처음 방문해서 로그인해 사용하고나면, 아이디와 패스워드를 기록한 쿠키가 만들어진다.그 다음 부터 해당 사이트에 접속하면 별도의 절차 없이 사이트에 빠르게 연결할 수 있게 된다. 쿠키는 이러한 목적으로 사용하기 위해 만들어진 것이다.


    - 그러나 쿠키는 웹 브라우저가 바문했던 웹 사이트에 대한 정보 및 개인의 정보가 기록되기 때문에 개인의 사생활이나 정보를 침해할 소지가 있다는 문제점을 안고 있다. 이러한 보안상의 문제를 조금이나마 해소하기 위해서 웹 브라우저 자체에 쿠키 거부 기능이 추가되었다.


    - 쿠키에 대한 거부가 웹 브라우저에 설정되어 있으면, 쿠키 본래의 목적인 웹 브라우저와의 연결을 지속시키는 기능을 수행할 수 없게 된다. 따라서 이것은 쿠키의 가장 치명적인 단점이 된다.



    2. 쿠키 관련 메소드

     

     메소드

    설명 

    String getComment() 

     쿠키에 대한 설명을 가져온다.

    String getDomain() 

     쿠키의 유효한 도메인 정보를  가져온다.

    int getMaxAge() 

     쿠키의 사용하 수 있는 기간에 대한 정보를 가져온다. 

    String getName()

     쿠키의 이름을 가져온다 

    String getPath() 

     쿠키의 유효한 디렉토리 정보를 가져온다. 

    boolean getSecure() 

     쿠키의 보안이 어떻게 설정되어 있는지 가져온다. 

    String getValue() 

     쿠키에 설정된 값을 가져온다. 

    int getVersion() 

     쿠키의 버전을 가져온다. 

    void setComment(String) 

     쿠키에 대한 설명을  설정한다

    void setDomain(String) 

     쿠키의 유효한 도메인을 설정한다.

    void setMaxAge(int) 

     쿠키의 유효한 기간을 설정한다. 

    void setPath(String) 

     쿠키의 유효한 디렉토리를 설정한다. 

    void setSecure(boolean) 

     쿠키의 보안을 설정한다. 

    void setValue(String) 

     쿠키의 값을 설정한다. 

    void setVersion(int) 

     쿠키의 버전을 설정한다. 


    3. 쿠키 예제


    (1) 쿠키 읽어서 가져오기 (자동 로그인 처리)

    <%

    String id = "";

    try {

    Cookie[] cookies = request.getCookies();                // 요청에서 쿠키를 가져온다


    if(cookies!=null) {                                               // 쿠키가 Null이 아닐때,

    for(int i=0; i<cookies.length; i++) {                 

    if(cookies[i].getName().equals("id")) {         // 쿠키의 이름이 id 일때

    id = cookies[i].getValue();                // 해당 쿠키의 값을 id 변수에 저장한다.

    }

    }

    if(id.equasl("")){                                        // 쿠키에서 이름 id를 찾지 못햇을때

    response.sendRedirect("loginForm.jsp");    // loginFomr으로 리다이렉트 한다.
    }

    } else {

    response.sendRedirect("loginForm.jsp");


    } catch(Exception e) {}

    %>

    (2) 쿠키에 저장된 정보 읽어오기

    <%

    String id = request.getParameter("id");                        // 요청에서 id 값을 가져온다.

    String passwd = reqeust.getParameter("passwd");          // 요청에서 passwd값을 가져온다,


    ...................................                                                    // (생략) id 와 passwd로 로그인을 확인한다.


    if(check == 1) {                                                      // 로그인이 성공일때,

    Cookie cookie = new Cookie("id",id);               // id 라는 이름과 request의 id 값으로 쿠키 생성

    cookie.setMaxAge(20*60);                            // 쿠키의 유효시간을 20분으로 설정

    response.addCookie(cookie);                        // 쿠키를 응답에 추가

    response.sendRedirect("cookieMain.jsp");       // cookieMain 으로 리다이렉트


    } else {

    }


    %>

    (3) 쿠키 삭제하기 (로그아웃)

    <%

    Cookie[] cookies = request.getCookies();            // 요청에서 쿠키를 가져온다.


    if(cookies != null) {

    for(int i=0; i<cookies.length; i++) {

    if(cookies[i].getName().equasl("id")) {    

    cookies[i].setMaxAge(0);

    response.addCookie(cookies[i]);    // 수정한 쿠키를 응답에 추가(수정 )한다.

    }

    }

    }


    'JSP' 카테고리의 다른 글

    JNDI vs DriverManager 차이점  (0) 2015.04.12
    JSP include 지시어 와 include 액션태그 차이점!!  (0) 2015.02.15
    JSP 액셀 다운  (0) 2014.06.09
    out 내장 객체!!  (0) 2014.06.05
    파일다운로드 소스!!!! (내가 구글링하여 구현)  (0) 2014.05.12
Designed by Tistory.