Java.net.HttpCookie w Javie
Warunek wstępny - Ciastka
Wiele witryn internetowych wykorzystuje małe ciągi tekstowe zwane plikami cookie do przechowywania trwałego stanu po stronie klienta pomiędzy połączeniami. Pliki cookie są przesyłane z serwera do klienta i z powrotem w nagłówkach HTTP żądań i odpowiedzi. Pliki cookie mogą być wykorzystywane przez serwer do wskazania identyfikatorów sesji, zawartości koszyka, danych logowania, preferencji użytkownika i nie tylko. Obiekt HttpCookie reprezentuje plik cookie http, który przenosi informacje o stanie między serwerem a agentem użytkownika. Plik cookie jest powszechnie stosowany do tworzenia sesji stanowych. Istnieją 3 specyfikacje plików cookie http:
Klasa HttpCookie może akceptować wszystkie te 3 formy składni.
Konstruktor:
Tworzy plik cookie o określonej nazwie i wartości. Nazwa musi zawierać wyłącznie znaki alfanumeryczne ASCII i być zgodna z RFC 2965. Zgłasza wyjątek IllegalArgument, jeśli nazwa jest niepoprawna, lub wyjątek NullPointerException, jeśli nazwa ma wartość null. Wartością może być dowolna wartość, którą plik cookie chce przechowywać.
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 nullMetody:
- analizować(): zwraca listę plików cookie przeanalizowaną na podstawie ciągu nagłówka. nagłówek musi zaczynać się od tokenu set-cookie lub set-cookie2 albo nie może w ogóle zawierać żadnego tokenu.
Syntax : public static List parse(String header)
Parameters :
header : String to be parsed as cookies- wygasł(): zwraca wartość logiczną wskazującą, czy plik cookie wygasł, czy nie.
Syntax : public boolean hasExpired()- ustawKomentarz(): Służy do ustawienia krótkiego opisu opisującego przeznaczenie pliku cookie. Używa się go, aby zaprezentować użytkownikowi plik cookie.
Syntax : public void setComment(String purpose)
Parameters :
purpose : purpose of cookie- pobierz komentarz(): Zwraca opis pliku cookie lub wartość null, jeśli plik cookie nie zawiera komentarzy.
Syntax : public void getComment()- ustawKomentarzURL() : Służy do ustawienia krótkiego adresu URL komentarza opisującego cel pliku cookie. Jest używany, gdy przeglądarka prezentuje użytkownikowi plik cookie.
Syntax : public void setCommentURL(String purpose)
Parameters :
purpose : purpose of cookie- pobierzKomentarzURL() : Zwraca komentarz URL pliku cookie lub wartość null, jeśli plik cookie nie zawiera komentarzy URL.
Syntax : public String getComment()- setDiscard() : Służy do ustawiania, czy agent użytkownika powinien odrzucić ten plik cookie, czy nie.
Syntax : public void setDiscard(Boolean discard)
Parameters :
discard : true if UA should discard otherwise false- getDiscard(): Zwraca stan zmiennej odrzuconej ustawionej metodą setDiscard(). Mówiąc dokładniej, zwraca wartość true, jeśli UA ma odrzucić ten plik cookie, w przeciwnym razie zwraca wartość false.
Syntax : public Boolean getDiscard()- setPortList() : Służy do określenia portów, z których może korzystać ten plik cookie.
Syntax : public void setPortList(String portList)
Parameters :
portList : String of comma separated digits specifying the ports.- getPortList(): Zwraca listę portów, z których może korzystać ten plik cookie.
Syntax : public String getPortList()- ustawDomenę() : Określ domenę, w której ten plik cookie powinien być widoczny. Na przykład pliki cookie wysłane z serwletu pod adresem bali.vacations.com zwykle nie są zwracane przez przeglądarkę do stron pod adresem queensland.vacations.com. Jeśli witryna chciała, aby tak się stało, serwlety mogłyby określić plik cookie.setDomain(.vacations.com). Aby uniemożliwić serwerom ustawienie plików cookie dotyczących hostów spoza ich domeny, określona domena musi spełniać następujące wymagania: musi zaczynać się od kropki (np. .coreservlets.com).
Syntax : public void setDomain(String domain)
Parameters :
domain : String representing the domain in which this cookie is visible- pobierzDomenę(): Zwraca domenę, w której widoczny jest ten plik cookie.
Syntax : public String getDomain()- setMaxAge() : używany do ustawiania maksymalnego wieku pliku cookie w sekundach. Określa maksymalny czas życia pliku cookie po utworzeniu. Wartości ujemne określają, że plik cookie wygaśnie natychmiast po zamknięciu przeglądarki.
Syntax : public void setMaxAge(long age)
Parameters :
age : Max survive time in seconds- getMaxAge() : Zwraca maksymalny wiek pliku cookie.
Syntax : public long getMaxAge()- ustawŚcieżkę() : Służy do określenia ścieżki do klienta, pod którą powinien zwrócić plik cookie. Ten plik cookie jest widoczny dla wszystkich stron i podkatalogów określonej ścieżki. Na przykład, jeśli serwer wysłał plik cookie z witryny http://ecommerce.site.com/toys/specials.html, przeglądarka wyśle plik cookie z powrotem podczas łączenia się z witryną http://ecommerce.site.com/to/beginners.html, ale nie z witryną http://ecommerce.site.com/c/classic.html.
Syntax : public void setPath(String uri)
Parameters :
uri - a String specifying a path- getPath(): Zwraca ścieżkę ustawioną dla tego pliku cookie.
Syntax : public String getPath()- Implementacja Java:
- 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 ()); } }- Wyjście
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- setSecure() : Wskazano, czy podczas wysyłania tego pliku cookie ma być używany bezpieczny protokół. Wartość domyślna to fałsz.
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.- getSecure() : Zwraca wartość true, jeśli ten plik cookie musi zostać wysłany przy użyciu bezpiecznego protokołu, w przeciwnym razie wartość false.
Syntax : public boolean getSecure()- getNazwa(): Zwraca nazwę pliku cookie.
Syntax : public String getName()- ustawWartość() : Przypisuje nową wartość do pliku cookie po inicjalizacji.
Syntax : public void setValue(String newValue)
Parameters :
newValue - a String specifying the new value- uzyskaj wartość: Zwraca wartość pliku cookie.
Syntax : public String getValue()- getVersion() : Zwraca 0, jeśli plik cookie jest zgodny z oryginalną specyfikacją Netscape; 1, jeśli plik cookie jest zgodny z RFC 2965/2109
Syntax : public int getVersion()- setVersion() : Służy do ustawiania wersji protokołu plików cookie, z którego korzysta ten plik 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- isHttpOnly(): Zwraca wartość true, jeśli plik cookie może być używany tylko przez http, tj. nie może być używany przez języki skryptowe, takie jak JS vb itp.
Syntax : public boolean isHttpOnly()- setHttpOnly() : Służy do ustawiania, czy ten plik cookie jest tylko http, czy nie.
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.- domenaMatches() : Funkcja narzędziowa sprawdzająca, czy nazwa hosta znajduje się w domenie, czy nie.
Syntax : public static boolean domainMatches(String domain
String host)
Parameters :
domain : domain to check hostname with
host : host to check- doString(): Konstruuje ciąg znaków reprezentujący ten plik cookie.
Syntax : public String toString()- równa się(): zwraca wartość true, jeśli dwa pliki cookie http są sobie równe, w przeciwnym razie zwraca wartość true.
Syntax : public boolean equals(Object obj)- hashCode() : Zwróć kod skrótu tego pliku cookie http. Wynikiem jest suma wartości kodu skrótu trzech istotnych składników tego pliku cookie: nazwy domeny i ścieżki. Zastępuje hashCode w klasie Object.
Syntax : public int hashCode()- klon(): Utwórz i zwróć kopię tego obiektu. Zastępuje metodę klonowania klasy obiektu.
Syntax : public Object clone()Implementacja 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 ()); } }Wyjście :
Secure : true
Name : First
Value : 2
Version : 1
is HTTP only : true
toString : First='2'
Hashcode : 97440432Kolejny przykład pokazujący, w jaki sposób faktycznie wykorzystywane są pliki cookies przez serwery internetowe, w którym drukujemy szczegóły plików cookies przechowywanych przez www.facebook.com
Javaimport 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 ()); } } }Wyjście :
------------------ 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: 0Odniesienie:
Oficjalna dokumentacja JavaUtwórz quiz