Java 팁:쿠키 작업

4199 단어 cookie
l  1.쿠키 설정
  Cookie cookie = new Cookie("key", "value");
  cookie.setMaxAge(60);//60초의 생존 기간을 설정합니다. 만약 마이너스로 설정하면 브라우저 프로세스 쿠키 (메모리에 저장) 를 위해 브라우저를 닫으면 효력을 상실합니다.
  cookie.setPath("/test/test2");//Cookie 경로를 설정하고 설정하지 않으면 현재 경로(서브렛의 경우 request.getContextPath() + 웹.XML에 구성된 서브렛의 url-pattern 경로 섹션)
  response.addCookie(cookie);
l  2.쿠키 읽기
Cookie[] cookies = request.getCookies();
//이 방법은 현재 경로와 '직접 부모 경로' 의 모든 쿠키 대상을 읽을 수 있으며, 쿠키가 없으면 null로 되돌아갑니다
예:
Cookie cookies[] = request.getCookies();
           if (cookies != null)
         {
              for (int i = 0; i < cookies.length; i++)
          {
            if (cookies[i].getName().equals("cookiename"))
            {
                System.out.println("+++++++++++++++++++++++++++++++++++:"+URLDecoder.decode(cookies[i].getValue(),"UTF-8"));
                  
       }
          }
        }
l  3.쿠키 삭제
  Cookie cookie = new Cookie("key", null);
  cookie.setMaxAge(0);//지금 쿠키를 삭제하려면 0으로 설정
  cookie.setPath("/test/test2");//지정된 경로에서 쿠키 삭제, 경로 설정 안 함, 기본적으로 현재 경로 쿠키 제거
response.addCookie(cookie); 
l  4.참고: 경로 구조를 다음과 같이 가정합니다.
  /test
  /test/test2
  /test345
  /test555/test666 
a. 같은 키 이름의 쿠키(값은 같거나 다를 수 있음)는 다른 경로 아래에 존재할 수 있습니다. 
 
b. 삭제할 때 현재 경로에 키가 "key"인 쿠키가 없으면 모든 부모 경로를 조회하고, 검색하면 삭제 작업을 실행합니다. (매번 자신과 가장 가까운 부모 경로 쿠키만 삭제할 수 있습니다) 본문은 꿈에서 나온 것입니다.
 
  FF.쿠키를 설정할 때 사용하는 것과 같은 경로를 지정해서 변경 쿠키를 삭제해야 하며 쿠키의 키 이름은 대문자, 소문자, 크기를 막론하고 모두 경로를 지정해야 합니다. 
 
IE. 키 이름이 소문자일 때, 현재 경로가/test/test2이면, 다시 위로/test,/test555,/test345를 찾을 수 없으면/를 조회합니다.(/test555/test666은 조회하지 않음)
 
키 이름의 대소문자가 혼합되거나 대문자가 될 때 경로를 지정하지 않으면 기본적으로 현재 경로를 삭제하고 위로 조회하지 않습니다.
 
c. 쿠키를 읽을 때는 직접 상위 경로의 쿠키만 읽을 수 있습니다. 
 
현재 경로가/test/test2라면 읽을 키는 '키' 입니다.현재 경로를 읽은 후/test를 읽고/test를 읽은 후, 본문을 읽습니다.
 
d. 자바의 웹 프로젝트를 할 때 일반적인 웹 서버(예를 들어 Tomcat이나 Jetty)는 모두 Context로 서로 다른 웹 Application을 관리하기 때문에 모든 Context에 서로 다른 Path가 있다.
 
한 서버에 여러 개의 웹 응용 프로그램이 있을 때 Path 를/로 설정하는 쿠키를 설정하지 않도록 주의하십시오. 쉽게 오작동할 수 있습니다.(물론 도메인 이름이 같다는 전제 조건)
 
인스턴스:
 
1.	  Cookie
	function SetCookie(name, value)
{
	var expdate = new Date();
	var argv = SetCookie.arguments;
	var argc = SetCookie.arguments.length;
	var expires = (argc > 2) ? argv[2] : null;
	alert("expires:"+expires);
	var path = (argc > 3) ? argv[3] : null;
	alert("path:"+path);
	var domain = (argc > 4) ? argv[4] : null;
	alert("domain:"+domain);
	var secure = (argc > 5) ? argv[5] : false;
	alert("secure:"+secure);
	expdate.setTime(expdate.getTime() + ( 60 * 30 * 24 * 60 * 60 * 1000 ));
	document.cookie = name + "=" + escape (value) + "; expires="+ expdate.toGMTString()
	+((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain))
	+((secure == true) ? "; secure" : "");
}
2.	  Cookie
function GetCookie(name)
{
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen)
	{
	var j = i + alen;
	if (document.cookie.substring(i, j) == arg)
	return GetCookieVal (j);
	i = document.cookie.indexOf(" ", i) + 1;
	if (i == 0) break;
	}
	return "";
}
function GetCookieVal(offset)
{	
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
	endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}
3.	  Cookie
function DelCookie(name)
{
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = GetCookie (name);
document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}

좋은 웹페이지 즐겨찾기