Java.net.HttpCookie в Java

Передумова - Печиво

Багато веб-сайтів використовують невеликі рядки тексту, відомі як файли cookie, для збереження постійного стану клієнта між підключеннями. Файли cookie передаються від сервера до клієнта і назад у HTTP-заголовках запитів і відповідей. Файли cookie можуть використовуватися сервером для вказівки ідентифікаторів сеансів, вмісту кошика для покупок, облікових даних для входу, налаштувань користувача тощо. Об’єкт HttpCookie представляє файл cookie http, який передає інформацію про стан між сервером і агентом користувача. Файли cookie широко застосовуються для створення сеансів із збереженням стану. Існує 3 специфікації файлів cookie http:

Клас HttpCookie може приймати всі ці 3 форми синтаксису.

Конструктор:

Створює файл cookie із зазначеним іменем і значенням. Ім’я має містити лише буквено-цифрові символи ASCII і відповідати RFC 2965. Викидає виняток IllegalArgument, якщо ім’я неправильне, або NullPointerException, якщо ім’я має значення null. Значення може бути будь-яким, що файл cookie хоче зберегти.

    Syntax :     public HttpCookie(String name   
String value)
Parameters :
name : name of cookie
value : value of cookie
Throws :
IllegalArgumentException : if name does not conform to RFC2965
NullPointerException : if name is null

Методи:

  1. parse() : повертає список файлів cookie, розібраних із рядка заголовка. заголовок має починатися з маркера set-cookie або set-cookie2 або взагалі не повинен містити жодного маркера.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. hasExpired() : повертає логічне значення, яке вказує, чи закінчився термін дії файлу cookie.
        Syntax :     public boolean hasExpired()  
  3. setComment() : Використовується для встановлення короткого опису, що описує призначення файлу cookie. Він використовується для надання файлу cookie користувачеві.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. getComment() : Повертає опис файлу cookie або null, якщо у файлі cookie немає коментарів.
        Syntax :     public void getComment()  
  5. setCommentURL() : Використовується для встановлення короткої URL-адреси коментаря, що описує призначення файлу cookie. Він використовується, коли браузер представляє файл cookie користувачеві.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. getCommentURL() : Повертає коментар URL-адреси файлу cookie або null, якщо файл cookie не містить коментарів URL-адреси.
        Syntax :     public String getComment()  
  7. setDiscard() : Використовується для встановлення того, чи повинен агент користувача відхиляти цей файл cookie чи ні.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. getDiscard() : Повертає стан змінної discard, встановленої методом setDiscard(). Точніше, повертає true, якщо UA має відхилити цей файл cookie, інакше повертає false.
        Syntax :     public Boolean getDiscard()  
  9. setPortList() : Використовується для визначення портів, які може використовувати цей файл cookie.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList() : Повертає список портів, які може використовувати цей файл cookie.
        Syntax :     public String getPortList()  
  11. setDomain() : Укажіть домен, у якому цей файл cookie має бути видимим. Наприклад, файли cookie, надіслані з сервлета на bali.vacations.com, зазвичай не повертаються браузером на сторінки на queensland.vacations.com. Якщо сайт хоче, щоб це сталося, сервлети можуть вказати cookie.setDomain(.vacations.com). Щоб сервери не встановлювали файли cookie, які застосовуються до хостів за межами їхнього домену, указаний домен має відповідати таким вимогам: він має починатися з крапки (наприклад, .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. getDomain() : Повертає домен, у якому видимий цей файл cookie.
        Syntax :     public String getDomain()  
  13. setMaxAge() : використовується для встановлення максимального віку файлу cookie в секундах. Він визначає максимальний час після створення файлу cookie, протягом якого він живий. Від’ємні значення вказують на те, що файл cookie закінчиться, щойно браузер закриється.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge() : Повертає максимальний вік файлу cookie.
        Syntax :     public long getMaxAge()  
  15. setPath() : Використовується для вказівки шляху до клієнта, за яким він має повернути файл cookie. Цей файл cookie є видимим для всіх сторінок і підкаталогів указаного шляху. Наприклад, якщо сервер надіслав файл cookie з http://ecommerce.site.com/toys/specials.html, браузер надішле файл cookie назад під час підключення до http://ecommerce.site.com/to/beginners.html, але не до http://ecommerce.site.com/c/classic.html.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. getPath() : Повертає шлях, встановлений для цього файлу cookie.
        Syntax :     public String getPath()  
  17. Реалізація Java:
  18. Java
       // Java Program to illustrate various   // methods of java.net.HttpCookie class   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )         {      // Constructor to create a new cookie.      HttpCookie     cookie     =     new     HttpCookie  (  'First'       '1'  );      // setComment() method      cookie  .  setComment  (  'Just for explanation'  );      // getComment() method      System  .  out  .  println  (  'Comment : '     +     cookie  .  getComment  ());      // setCommentURL() method      cookie  .  setCommentURL  (  '192.168.1.1'  );      // getCommentURL() method      System  .  out  .  println  (  'CommentURL : '     +     cookie  .  getCommentURL  ());      // setDiscard() method      cookie  .  setDiscard  (  true  );      // getDiscard() method      System  .  out  .  println  (  'Discard : '     +     cookie  .  getDiscard  ());      // setPortlist() method      cookie  .  setPortlist  (  '10018520'  );      // getPortList() method      System  .  out  .  println  (  'Ports: '     +     cookie  .  getPortlist  ());      // setDomain() method      cookie  .  setDomain  (  '.localhost.com'  );      // getDomain() method      System  .  out  .  println  (  'Domain : '     +     cookie  .  getDomain  ());      // setMaxAge() method      cookie  .  setMaxAge  (  3600  );      // getMaxAge() method      System  .  out  .  println  (  'Max Age : '     +     cookie  .  getMaxAge  ());      // setPath() method      cookie  .  setPath  (  '192.168.1.1/admin/index.html'  );      // getPath() method      System  .  out  .  println  (  'Path: '     +     cookie  .  getPath  ());      }   }   
  19. Вихід
  20.  Comment : Just for explanation   
    CommentURL : 192.168.1.1
    Discard : true
    Ports: 10018520
    Domain : .localhost.com
    Max Age : 3600
    Path: 192.168.1.1/admin/index.html
  21. setSecure() : Указується, чи використовуватиметься захищений протокол під час надсилання цього файлу cookie. Значення за замовчуванням - false.
        Syntax :     public void setSecure(boolean secure)   
    Parameters:
    secure - If true the cookie can only be sent over a secure protocol like https.
    If false it can be sent over any protocol.
  22. getSecure() : Повертає true, якщо цей файл cookie має бути надіслано за допомогою безпечного протоколу, інакше значення false.
        Syntax :     public boolean getSecure()  
  23. getName(): Повертає назву файлу cookie.
           Syntax :     public String getName()  
  24. setValue() : Призначає нове значення файлу cookie після ініціалізації.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. getValue: Повертає значення файлу cookie.
        Syntax :     public String getValue()  
  26. getVersion() : Повертає 0, якщо файл cookie відповідає оригінальній специфікації Netscape; 1, якщо файл cookie відповідає RFC 2965/2109
        Syntax :     public int getVersion()  
  27. setVersion() : Використовується для встановлення версії протоколу cookie, який використовує цей файл cookie.
        Syntax :    public void setVersion(int v)   
    throws IllegalArgumentException
    Parameters :
    v - 0 for original Netscape specification; 1 for RFC 2965/2109
    Throws :
    IllegalArgumentException - if v is neither 0 nor 1
  28. isHttpOnly() : Повертає true, якщо файл cookie може використовуватися лише http, тобто його не можна використовувати мовами сценаріїв, такими як JS vb тощо.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly() : Використовується для встановлення того, чи файл cookie є лише http.
        Syntax :     public void setHttpOnly(boolean httpOnly)   
    Parameters :
    httpOnly - if true make the cookie HTTP only i.e. only visible as part
    of an HTTP request.
  30. domainMatches() : Допоміжна функція для перевірки, чи ім’я хоста входить до домену чи ні.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. toString() : Створює рядкове представлення цього файлу cookie.
           Syntax :    public String toString()  
  32. дорівнює(): повертає істину, якщо два файли cookie http дорівнюють один одному, інакше хибність.
           Syntax :    public boolean equals(Object obj)  
  33. hashCode() : Повернути хеш-код цього файлу cookie http. Результатом є сума значень хеш-коду трьох важливих компонентів цього файлу cookie: імені домену та шляху. Перевизначає hashCode у класі Object.
        Syntax :     public int hashCode()  
  34. clone() : Створіть і поверніть копію цього об’єкта. Перевизначає метод клонування класу об’єктів.
        Syntax :     public Object clone()  

Реалізація Java:

Java
   // Java Program to illustrate various   // methods of java.net.HttpCookie class   import     java.net.HttpCookie  ;   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )         {      // Constructor to create a new cookie.      HttpCookie     cookie     =     new     HttpCookie  (  'First'       '1'  );      // setSecure() method      cookie  .  setSecure  (  true  );      // getSecure() method      System  .  out  .  println  (  'Secure : '     +     cookie  .  getSecure  ());      // getName() method      System  .  out  .  println  (  'Name : '     +     cookie  .  getName  ());      // setValue() method : can be used to modify value of cookie.      cookie  .  setValue  (  '2'  );      // getvalue() method      System  .  out  .  println  (  'Value : '     +     cookie  .  getValue  ());      // setVersion() method      cookie  .  setVersion  (  1  );      // getVersion() method      System  .  out  .  println  (  'Version : '     +     cookie  .  getVersion  ());      // setHttPonly() method      cookie  .  setHttpOnly  (  true  );      // isHttpOnly() method      System  .  out  .  println  (  'is HTTP only : '     +     cookie  .  isHttpOnly  ());      // toString() method      System  .  out  .  println  (  'toString : '     +     cookie  .  toString  ());      // hashcode() method      System  .  out  .  println  (  'Hashcode : '     +     cookie  .  hashCode  ());      }   }   

Вихід:

 Secure : true   
Name : First
Value : 2
Version : 1
is HTTP only : true
toString : First='2'
Hashcode : 97440432

Інший приклад, щоб показати, як файли cookie фактично використовуються веб-серверами, на яких ми друкуємо деталі файлів cookie, які зберігаються на www.facebook.com

Java
   import     java.io.IOException  ;   import     java.net.CookieHandler  ;   import     java.net.CookieManager  ;   import     java.net.CookieStore  ;   import     java.net.HttpCookie  ;   import     java.net.URL  ;   import     java.net.URLConnection  ;   import     java.util.List  ;   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )     throws     IOException         {      String     urlString     =     'https://www.facebook.com/'  ;      // Create a default system-wide CookieManager      CookieManager     cookieManager     =     new     CookieManager  ();      CookieHandler  .  setDefault  (  cookieManager  );      // Open a connection for the given URL      URL     url     =     new     URL  (  urlString  );      URLConnection     urlConnection     =     url  .  openConnection  ();      urlConnection  .  getContent  ();      // Get CookieStore which is the default internal in-memory      CookieStore     cookieStore     =     cookieManager  .  getCookieStore  ();      // Retrieve all stored HttpCookies from CookieStore      List   <  HttpCookie  >     cookies     =     cookieStore  .  getCookies  ();      int     cookieIdx     =     0  ;      // Iterate HttpCookie object      for     (  HttpCookie     ck     :     cookies  )     {      System  .  out  .  println  (  '------ Cookie.'     +     ++  cookieIdx     +     ' -------'  );      // Get the cookie name      System  .  out  .  println  (  'Cookie name: '     +     ck  .  getName  ());      // Get the domain set for the cookie      System  .  out  .  println  (  'Domain: '     +     ck  .  getDomain  ());      // Get the max age of the cookie      System  .  out  .  println  (  'Max age: '     +     ck  .  getMaxAge  ());      // Get the path of the server      System  .  out  .  println  (  'Server path: '     +     ck  .  getPath  ());      // Get boolean if the cookie is being restricted to a secure      // protocol      System  .  out  .  println  (  'Is secured: '     +     ck  .  getSecure  ());      // Gets the value of the cookie      System  .  out  .  println  (  'Cookie value: '     +     ck  .  getValue  ());      // Gets the version of the protocol with which the given cookie is      // related.      System  .  out  .  println  (  'Cookie protocol version: '     +     ck  .  getVersion  ());      }      }   }   

Вихід:

 ------------------ Cookie.1 ------------------   
Cookie name: fr
Domain: .facebook.com
Max age: 7775999
Server path: /
Is secured: true
Cookie value: 0Xj7tBSsWlmtXPo92..BZFC8G.qC.AAA.0.0.BZFC8G.AWUwiIgM
Cookie protocol version: 0

Посилання:

Офіційна документація Java

Створіть вікторину