Рубрики

Java.net.HttpCookie на Java

Обязательное условие — печенье

Многие веб-сайты используют небольшие текстовые строки, известные как куки, для хранения постоянного состояния на стороне клиента между соединениями. Файлы cookie передаются от сервера к клиенту и обратно в заголовках HTTP запросов и ответов. Файлы cookie могут использоваться сервером для указания идентификаторов сеансов, содержимого корзины покупок, учетных данных для входа в систему, пользовательских настроек и многого другого.

Объект HttpCookie представляет файл cookie http, который переносит информацию о состоянии между сервером и агентом пользователя. Cookie широко используется для создания сеансов с сохранением состояния.
Существует 3 спецификации http cookie:

Класс HttpCookie может принимать все эти 3 формы синтаксиса.

Конструктор: Создает cookie с указанным именем и значением. Имя должно содержать только буквенно-цифровые символы ASCII и соответствовать RFC 2965. Оно выдает исключение IllegalArgument, если имя не является правильным, или NullPointerException, если name равно 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. синтаксический анализ (): возвращает список печенья , выделенное из строки заголовка. Заголовок должен начинаться с токена 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. Используется, когда нужно предоставить куки пользователю.
    Syntax : public void setComment(String purpose)
    Parameters :
    purpose : purpose of cookie
  4. getComment (): возвращает описание куки или ноль, если у куки нет комментариев.
    Syntax : public void getComment()
  5. setCommentURL (): Используется для установки краткого URL- адреса комментария, описывающего назначение файла cookie. Он используется, когда браузер представляет куки пользователю.
    Syntax : public void setCommentURL(String purpose)
    Parameters :
    purpose : purpose of cookie
  6. getCommentURL (): Возвращает URL-адрес куки-файла или ноль, если у куки-файла нет URL-комментариев.
    Syntax : public String getComment()
  7. setDiscard (): используется для установки, должен ли пользовательский агент отказаться от этого куки или нет.
    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, отправленные сервлетом с сайта 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 истечет при выходе из браузера.
    Syntax : public void setMaxAge(long age)
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge (): возвращает максимальный возраст файлов cookie.
    Syntax : public long getMaxAge()
  15. setPath (): используется для указания пути к клиенту, по которому он должен возвращать cookie. Этот файл cookie виден всем страницам и подкаталогам указанного пути. Например, если сервер отправил куки-файл с http://ecommerce.site.com/toys/specials.html, браузер отправит куки-файл обратно при подключении к 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:

    // Java-программа для иллюстрации различных
    // методы класса java.net.HttpCookie

    public class httpcookie1 

    {

      

        public static void main(String[] args) 

        {

      

            // Конструктор для создания нового куки.

            HttpCookie cookie = new HttpCookie("First", "1");

      

            // setComment () метод

            cookie.setComment("Just for explanation");

      

            // метод getComment ()

            System.out.println("Comment : " + cookie.getComment());

      

            // setCommentURL () метод

            cookie.setCommentURL("192.168.1.1");

      

            // getCommentURL () метод

            System.out.println("CommentURL : " + cookie.getCommentURL());

      

            // setDiscard () метод

            cookie.setDiscard(true);

      

            // метод getDiscard ()

            System.out.println("Discard : " + cookie.getDiscard());

      

            // метод setPortlist ()

            cookie.setPortlist("1001,8520");

      

            // метод getPortList ()

            System.out.println("Ports: " + cookie.getPortlist());

      

            // метод setDomain ()

            cookie.setDomain(".localhost.com");

      

            // метод getDomain ()

            System.out.println("Domain : " + cookie.getDomain());

      

            // метод setMaxAge ()

            cookie.setMaxAge(3600);

      

            // метод getMaxAge ()

            System.out.println("Max Age : " + cookie.getMaxAge());

      

            // метод setPath ()

            cookie.setPath("192.168.1.1/admin/index.html");

      

            // метод getPath ()

            System.out.println("Path: " + cookie.getPath());

      

        }

      
    }

    Выход

    Comment : Just for explanation
    CommentURL : 192.168.1.1
    Discard : true
    Ports: 1001,8520
    Domain : .localhost.com
    Max Age : 3600
    Path: 192.168.1.1/admin/index.html
  18. 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.
  19. getSecure (): Возвращает true, если этот файл cookie должен быть отправлен по безопасному протоколу, в противном случае — false.
    Syntax : public boolean getSecure()
  20. getName (): возвращает имя куки.
     Syntax : public String getName()
  21. setValue (): назначает новое значение cookie после инициализации.
    Syntax : public void setValue(String newValue)
    Parameters :
    newValue - a String specifying the new value
  22. ПолучитьЗначение: Возвращает значение куки.
    Syntax : public String getValue()
  23. getVersion (): возвращает 0, если файл cookie соответствует исходной спецификации Netscape; 1, если файл cookie соответствует RFC 2965/2109
    Syntax : public int getVersion()
  24. 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
  25. isHttpOnly (): возвращает true, если cookie может использоваться только http, т.е. он не может использоваться языками сценариев, такими как JS, vb и т. д.
    Syntax : public boolean isHttpOnly()
  26. 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.
  27. domainMatches (): служебная функция для проверки, находится ли имя хоста в домене или нет.
    Syntax : public static boolean domainMatches(String domain,
                        String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  28. toString (): Создает строковое представление этого файла cookie.
     Syntax :public String toString()
  29. equals (): возвращает true, если два http-файла cookie равны друг другу, в противном случае — false.
     Syntax :public boolean equals(Object obj)
  30. hashCode (): возвращает хеш-код этого файла cookie http. Результатом является сумма значений хеш-кода трех значимых компонентов этого файла cookie: имени, домена и пути. Переопределяет hashCode в классе Object.
    Syntax : public int hashCode()
  31. clone (): создать и вернуть копию этого объекта. Переопределяет метод клонирования класса объекта.
    Syntax : public Object clone()

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

// Java-программа для иллюстрации различных
// методы класса java.net.HttpCookie

import java.net.HttpCookie;

  

public class httpcookie1 

{

  

    public static void main(String[] args) 

    {

  

        // Конструктор для создания нового куки.

        HttpCookie cookie = new HttpCookie("First", "1");

  

        // setSecure () метод

        cookie.setSecure(true);

  

        // метод getSecure ()

        System.out.println("Secure : " + cookie.getSecure());

  

        // метод getName ()

        System.out.println("Name : " + cookie.getName());

  

        // метод setValue (): может использоваться для изменения значения cookie.

        cookie.setValue("2");

  

        // метод getvalue ()

        System.out.println("Value : " + cookie.getValue());

  

        // setVersion () метод

        cookie.setVersion(1);

  

        // метод getVersion ()

        System.out.println("Version : " + cookie.getVersion());

  

        // setHttPonly () метод

        cookie.setHttpOnly(true);

  

        // isHttpOnly () метод

        System.out.println("is HTTP only : " + cookie.isHttpOnly());

  

        // метод toString ()

        System.out.println("toString : " + cookie.toString());

  

        // метод hashcode ()

        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

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";

  

        // Создать стандартный системный CookieManager

        CookieManager cookieManager = new CookieManager();

  

        CookieHandler.setDefault(cookieManager);

  

        // Открываем соединение по указанному URL

        URL url = new URL(urlString);

        URLConnection urlConnection = url.openConnection();

        urlConnection.getContent();

  

        // Получить CookieStore, который является внутренней памятью по умолчанию

        CookieStore cookieStore = cookieManager.getCookieStore();

  

        // Получить все сохраненные HttpCookies из CookieStore

        List<HttpCookie> cookies = cookieStore.getCookies();

  

        int cookieIdx = 0;

  

        // Итерация объекта HttpCookie

        for (HttpCookie ck : cookies) {

  

            System.out.println("------ Cookie." + ++cookieIdx + " -------");

  

            // Получить имя куки

            System.out.println("Cookie name: " + ck.getName());

  

            // Получить домен, установленный для куки

            System.out.println("Domain: " + ck.getDomain());

  

            // Получить максимальный возраст куки

            System.out.println("Max age: " + ck.getMaxAge());

  

            // Получить путь к серверу

            System.out.println("Server path: " + ck.getPath());

  

            // Получить логическое значение, если cookie ограничен безопасным

            // протокол

            System.out.println("Is secured: " + ck.getSecure());

  

            // Получает значение куки

            System.out.println("Cookie value: " + ck.getValue());

  

            // Получает версию протокола, с которой данный cookie

            // Связанный.

            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

Эта статья предоставлена Rishabh Mahrsee . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Java.net.HttpCookie на Java

0.00 (0%) 0 votes