개발일지/JSP

[JSP] 쿠키(Cookie)

연습용365 2021. 11. 29. 00:09

 

 

 

 ● 쿠키(Cookie) ● 

- 웹사이트에 접속할 때 생성되는 정보를 담은 임시 파일
- 일반적으로 4KB 이하의 크기
- HTTP 프로토콜은 상태가 없으므로 상태를 지속 시키기 위한 방법이다.


 사용목적 : 사이트에 처음 방문해서 로그인을 하고나면 아이디와 패스워드를 기록한 퀴가 만들어짐. 그 다음 해당 사이트에 접속하면 별도의 절차 없이 사이트에 빠르게 연결할 수 있다. 이런 목적을 위해 만들어짐
 단 점 : 보안상의 문제를 해소하기 위해 웹 브라우저 자체에 쿠키 거부 기능 추가 됨. 연결을 지속 시키는 기능을 수행할 수 없게 되므로 가장 치명적인 단점이 된다.


쿠키사용
- javax.servlet.http 패키지에 있는 Cookie 클래스의 객체를 생성해야한다. 
- 웹 서버가 웹브라우저의 요청에 응답할 때 response 객체에 실려서 사용자의 웹 브라우저에 저장된다. 웹 브라우저에 저장된 쿠키는 사용자가 다시 웹 서버에 요청을 할 때 request 객체에 실려서 다시 웹서버에 전달됨.

 

 

 

 ● 쿠키 생성 및 사용 ● 

이름, 값, 유효기간, 도메인, 경로 등으로 이뤄져 있다.

<%
	//쿠키 생성. 이름 : testCookie, 값 : Hello Cookie
	Cookie info = new Cookie("testCookie", "Hello Cookie");
	info.setMaxAge(365*24*60*60); 	//쿠키의 유효기간을 365일로 설정
	info.setPath("/");		//쿠키의 유효한 디렉토리를 "/"로 설정

	response.addCookie(info);	//클라이언트 응답에 쿠키를 추가
%>

 

 

 ● 쿠키 정보 읽어오기 ● 

<%  //요청정보로부터 쿠키를 가져온다.
    Cookie[] cookies = request.getCookies();
    
    out.println("현재 설정된 쿠키의 개수 : " + cookies.length);
    //쿠키가 저장된 배열의 길이를 가져온다.

    for(int i = 0 ; i<cookies.length; i++){ //쿠키 배열을 반복문으로 돌린다.

        out.println(i + "번째 쿠키 이름 : " + cookies[i].getName());
        //쿠키의 이름을 가져온다.

        out.println(i + "번째 쿠키에 설정된 값 : " + cookies[i].getValue());
        //쿠키의 값을 가져온다.
  }
%>

 

 

 ● 쿠키 모두 삭제 ● 

<% // 요청정보로부터 쿠키를 가져온다.
  Cookie[] cookies = request.getCookies(); 

  for(int i = 0 ; i<cookies.length; i++){  // 쿠키 배열을 반복문으로 돌린다.

    cookies[i].setMaxAge(0); 
    // 특정 쿠키를 더 이상 사용하지 못하게 하기 위해서는 
    //쿠키의 유효시간을 만료시킨다. + 쿠키 유효시간을 0 으로 변경

    cookies[i].setPath("/"); 
    //쿠키의 생성때와 똑같이 지정해 주지 않으면 삭제가 되질 않는다고 한다(!)

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

 

 

 ● 쿠키 생성 및 사용 ● 

메소드 설명 
String getCommnet()  쿠키에 대한 설명을 가져온다. 
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(Striong)  쿠키의 유효한 디렉토리를 설정한다. 
void setSecure(boolean)  쿠키의 보안을 설정한다.
void setValue(String)  쿠키의 값을 설정한다. 
void setVersion(int)  쿠키의 버전을 설정한다. 

 

 

 ● 세션(session) 개념만 알아두기 ... 

- 쿠키가 웹 브라우저에 사용자 상태를 유지하기 위한 정보를 저장했다면, 세션은 웹 서버 쪽의 웹 컨테이너에 상태를 유지하기 위한 정보를 저장함. 세션은 사용자의 정보를 유지하기 위해 javax.servlet.http 패키지의 HttpSession 인터페이스를 구현해서 사용한다.

- 사용자의 정보를 유지하기 위해서는 쿠키를 사용하는 것보다 세션을 사용한 웹 브라우저와 웹 서버의 상태 유지가 훨씬 안정적이고, 보안상의 문제도 해결할 수 있다. 세션은 웹 브라우저 당 1개씩 생성되어 웹 컨테이너에 저장 됨

(수업에서 사용하지 못 하는 이유는 고정 아이피가 아니라서 ... )

- 웹 서버는 각각의 웹 브라우저로부터 발생한 요청에 대해서 특별한 식별자를 부여함. 이 식별자를 웹 브라우저에서 발생한 요청들과 비교해서 같은 식별인지 구별하게 됨. 이 특별한 식별자에 특정한 값을 넣을 수 있으며 이것을 사용해서 세션을 유지하게 됨

 

 

쉽게 생각해서 . . . 

 

쿠키는 클라이언트 브라우저에 넣는 정보

세션은 웹서버에 남는 정보이다~~~