서브렛 학습 노트 다시 보기 - 쿠키 객체

4059 단어
먼저 쿠키를 이해하려면 http 프로토콜을 알아야 한다. 쿠키는 http 프로토콜이 지정한 것이다. 먼저 서버에서 쿠키를 브라우저에 저장하고 다음 브라우저가 서버를 요청할 때 지난번에 요청한 쿠키를 서버에 돌려주고 쿠키는 키 값 대조 형식으로 로컬 캐시에 저장한다.
  • HTTP 프로토콜 규정:
  • 쿠키 1개 최대 4kb
  • 한 서버에 최대 20개의 쿠키를 브라우저에 저장
  • 브라우저 하나에 최대 300개의 쿠키 저장

  • 주의해라, 서로 다른 브라우저는 여전히 약간의 차이가 있다. 모든 브라우저가 이 규정을 성실하게 준수하는 것은 아니다.
  • 쿠키의 용도는 다음과 같습니다.
  • 서버가 쿠키를 사용하여 클라이언트 상태 추적
  • 카트 보관
  • 마지막 로그인 이름
  • 표시
  • 쿠키의 저장 및 획득:
  • 우리는 a.jsp에 쿠키를 저장한 다음에 b.jsp에서 이 쿠키를 가져와 옮겨 봅니다. (비교적 간단하기 때문에 코드 부분만 제공합니다.)
    //a.jsp body  
      <%
                  Cookie cookie1=new Cookie("name","wang");
                response.addCookie(cookie1);
                 Cookie cookie2=new Cookie("password","123");
                 response.addCookie(cookie2);
        
        %>
    
    //b.jsp body  
    <%
            Cookie[] cookie1=request.getCookies();
            for(Cookie c:cookie1){
                out.print(c.getName()+":"+c.getValue()+"<br>");
                
            }
        
        %>
  • 쿠키의 생존 시간(setMaxAge() 방법:
  • 서버에서 쿠키 객체를 만든 후 setMaxAge() 방법을 사용하여 쿠키의 최대 생명을 설정할 수 있습니다.
  • maxAge > 0: 쿠키가 클라이언트 하드 드라이브에 저장된 최대 시간을 초로 표시합니다(예: cookie).setMaxAge(60)는 쿠키 객체의 생존 시간이 60초
  • 임을 나타냅니다.
  • maxAge <0: 쿠키는 브라우저에 의해 하드디스크에 저장되지 않고 브라우저 메모리에서만 살아남으며 클라이언트가 브라우저를 닫으면 쿠키는 사라집니다.
  • maxAge==0: 클라이언트 하드 드라이브에 abc라는 쿠키가 이미 존재하고 서버가 다시 클라이언트에게 abc, 그리고 maxAge가 0인 쿠키를 보내면 클라이언트의 abc라는 쿠키를 삭제한다는 뜻이다.


  •  
  • 쿠키의 경로(path):
  • 쿠키의 경로를 설정하려면 쿠키가 필요합니다.setPath 메서드.예: cookie.setPath("/cookie1/a");
    쿠키의 경로를 설정하지 않으면 쿠키의 경로는 기본적으로 현재 자원이 있는 경로입니다. 예를 들어 다음과 같습니다.
  • 액세스http://localhost:8080/MyCookieDemo/cookie1/AServlet쿠키가 저장되었을 때 기본 경로는/My 쿠키 Demo/쿠키 1
  • 입니다.
  • 액세스http://localhost:8080/MyCookieDemo/cookie1/demo1/BServlet쿠키가 저장되었을 때 기본 경로는/My 쿠키 Demo/쿠키 1/demo1
  • 입니다.

    쿠키의 path를 이해했으니 문제가 생겼습니다. 쿠키의 용도는 무엇입니까?이 물건은 쓸모가 있느냐?
    만약에 현재 WEB 응용 프로그램 A가 있다면 클라이언트에게 10개의 쿠키를 보냈을 것이다. 이것은 클라이언트가 응용 프로그램 A에 접근한 어떤 서브렛이든 이 10개의 쿠키를 요청에 포함시킨다는 것을 의미한다.이것은 비과학적이다. 아마도 Aservlet만 요청한 쿠키를 읽어야 할 것이고, 다른 서브렛은 요청한 쿠키를 가져오지 않을 것이다.이는 클라이언트 브라우저가 때때로 이러한 쿠키를 보내는 것이 불필요하다는 것을 의미한다. 이때 쿠키의 path를 설정하여 브라우저가 어떤 경로에 접근할 때 어떤 쿠키를 포함하는지 지정할 수 있다.
    요청 경로에 쿠키 경로가 포함된 경우 요청에 이 쿠키가 포함됩니다. 그렇지 않으면 요청에 이 쿠키가 포함되지 않습니다.만약 어떤 쿠키의 경로가/myCookieDemo/cookie1이라면우리가 방문할 때http://localhost:8080/myCookieDemo/index.jsp요청 헤더에 이 쿠키를 휴대하지 않습니다. 만약 방문한 것이http://localhost:8080/myCookieDemo/cookie1/index.jsp요청 헤더에 이 쿠키가 포함되어 있고 이 페이지에서도 이 쿠키에 저장된 데이터를 얻을 수 있습니다.
  • 쿠키 저장 중국어
  • 쿠키의 name과 value는 모두 중국어를 저장할 수 없지만, 중국어를 URL 인코딩으로 변환한 다음 쿠키의 name과value에 저장할 수 있습니다.다음은 코드 Demo:
    String name = "  ";
    String value = "  ";
    name = URLEncoder.encode(name, "utf-8");
    value = URLEncoder.encode(value, "utf-8");
    
    Cookie c = new Cookie(name, value);
    response.addCookie(c);
    
    //   Cookie ,   URL    。
    Cookie[] cs = request.getCookies();
    if(cs != null) {
    for(Cookie c : cs) {
    String name = URLDecoder.decode(c.getName(), "utf-8");
    String value = URLDecoder.decode(c.getValue(), "utf-8");
    System.out.println(name + "=" + value);
    }
    }

     
     

    좋은 웹페이지 즐겨찾기