Java.net.HttpCookie a Java nyelven
Előfeltétel - Cookie-k
Sok webhely apró, úgynevezett cookie-kat használ a kliensoldali állapot állandó tárolására a kapcsolatok között. A cookie-k a szerverről a kliensre, majd vissza a kérések és válaszok HTTP-fejlécébe kerülnek. A kiszolgáló cookie-kat használhat a munkamenet-azonosítók, a bevásárlókosár tartalmának, a bejelentkezési hitelesítő adatok felhasználói preferenciáinak és egyebeknek a jelzésére. A HttpCookie objektum egy http cookie-t képvisel, amely állapotinformációkat hordoz a szerver és a felhasználói ügynök között. A cookie-t széles körben alkalmazzák állapotjelző munkamenetek létrehozására. 3 http cookie-specifikáció létezik:
A HttpCookie osztály mind a három szintaxisformát képes elfogadni.
Konstruktor:
Egy cookie-t hoz létre a megadott névvel és értékkel. A névnek csak ASCII alfanumerikus karaktereket kell tartalmaznia, és meg kell felelnie az RFC 2965 szabványnak. IllegalArgument kivételt dob, ha a név nem helyes, vagy NullPointerException kivételt, ha a név nulla. Az érték bármi lehet, amit a cookie tárolni szeretne.
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 nullMódszerek:
- parse() : a fejléc karakterláncból elemzett cookie-k listáját adja vissza. A fejlécnek set-cookie vagy set-cookie2 tokennel kell kezdődnie, vagy egyáltalán nem tartalmazhat tokent.
Syntax : public static List parse(String header)
Parameters :
header : String to be parsed as cookies- lejárt() : logikai értéket ad vissza, jelezve, hogy a cookie lejárt-e vagy sem.
Syntax : public boolean hasExpired()- setComment() : A cookie célját leíró rövid leírás beállítására szolgál. Akkor használatos, amikor a cookie-t bemutatják a felhasználónak.
Syntax : public void setComment(String purpose)
Parameters :
purpose : purpose of cookie- getComment() : Visszaadja a cookie leírását vagy nullát, ha a cookie-hoz nincsenek megjegyzések.
Syntax : public void getComment()- setCommentURL() : Egy rövid megjegyzés url beállítására szolgál, amely leírja a cookie célját. Akkor használatos, amikor a böngésző bemutatja a cookie-t a felhasználónak.
Syntax : public void setCommentURL(String purpose)
Parameters :
purpose : purpose of cookie- getCommentURL() : Visszaadja a cookie URL-megjegyzését, vagy nullát, ha a cookie-nak nincsenek URL-megjegyzései.
Syntax : public String getComment()- setDiscard() : Annak beállítására szolgál, hogy a felhasználói ügynöknek el kell-e vetnie ezt a cookie-t vagy sem.
Syntax : public void setDiscard(Boolean discard)
Parameters :
discard : true if UA should discard otherwise false- getDiscard() : A setDiscard() metódus által beállított eldobási változó állapotát adja vissza. Pontosabban igazat ad vissza, ha az UA el akarja dobni ezt a cookie-t, egyébként hamis.
Syntax : public Boolean getDiscard()- setPortList() : A cookie által használható portok megadására szolgál.
Syntax : public void setPortList(String portList)
Parameters :
portList : String of comma separated digits specifying the ports.- getPortList() : Visszaadja azon portok listáját, amelyeket ez a cookie használhat.
Syntax : public String getPortList()- setDomain() : Adja meg azt a domaint, amelyben ez a cookie látható. Például a bali.vacations.com webhelyről küldött cookie-kat a böngésző általában nem küldi vissza a queensland.vacations.com webhely oldalaira. Ha a webhely ezt akarta, a szervletek megadhatják a cookie.setDomain(.vacations.com) értéket. Annak megakadályozása érdekében, hogy a szerverek olyan cookie-kat állítsanak be, amelyek a domainjükön kívüli gazdagépekre vonatkoznak, a megadott tartománynak meg kell felelnie a következő követelményeknek: ponttal kell kezdődnie (pl. .coreservlets.com).
Syntax : public void setDomain(String domain)
Parameters :
domain : String representing the domain in which this cookie is visible- getDomain() : Azt a domaint adja vissza, amelyben ez a cookie látható.
Syntax : public String getDomain()- setMaxAge() : a süti maximális korának másodpercben történő beállítására szolgál. Meghatározza a cookie létrehozása utáni maximális időtartamot, ameddig a süti életben van. A negatív értékek azt jelzik, hogy a cookie lejár, amint kilép a böngészőből.
Syntax : public void setMaxAge(long age)
Parameters :
age : Max survive time in seconds- getMaxAge() : A cookie maximális életkorát adja vissza.
Syntax : public long getMaxAge()- setPath() : Az ügyfél elérési útjának megadására szolgál, amelyen vissza kell küldenie a cookie-t. Ez a cookie a megadott útvonal összes oldala és alkönyvtára számára látható. Például, ha a szerver a cookie-t a http://ecommerce.site.com/toys/specials.html címről küldte, a böngésző visszaküldi a cookie-t, amikor csatlakozik a http://ecommerce.site.com/to/beginners.html oldalhoz, de nem a http://ecommerce.site.com/c/classic.html oldalra.
Syntax : public void setPath(String uri)
Parameters :
uri - a String specifying a path- getPath() : A cookie-hoz beállított elérési utat adja vissza.
Syntax : public String getPath()- Java implementáció:
- 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 ()); } }- Kimenet
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() : Jelzi, hogy biztonságos protokollt kell-e használni a cookie küldésekor. Az alapértelmezett érték 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.- getSecure() : Igaz értéket ad vissza, ha ezt a cookie-t biztonságos protokollon keresztül kell elküldeni, ellenkező esetben hamis.
Syntax : public boolean getSecure()- getName() : A süti nevét adja vissza.
Syntax : public String getName()- setValue() : Új értéket rendel a cookie-hoz az inicializálás után.
Syntax : public void setValue(String newValue)
Parameters :
newValue - a String specifying the new value- getValue : A süti értékét adja vissza.
Syntax : public String getValue()- getVersion() : 0-t ad vissza, ha a cookie megfelel az eredeti Netscape specifikációnak; 1, ha a cookie megfelel az RFC 2965/2109 szabványnak
Syntax : public int getVersion()- setVersion() : A cookie által használt cookie protokoll verziójának beállítására szolgál.
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() : Igaz értéket ad vissza, ha a cookie-t csak a http tudja használni, azaz nem használhatja olyan szkriptnyelvek, mint a JS vb stb.
Syntax : public boolean isHttpOnly()- setHttpOnly() : Annak beállítására szolgál, hogy ez a cookie csak http vagy sem.
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.- domainMatches() : Segédprogram annak ellenőrzésére, hogy a gazdagépnév a tartományban van-e vagy sem.
Syntax : public static boolean domainMatches(String domain
String host)
Parameters :
domain : domain to check hostname with
host : host to check- toString() : Ennek a cookie-nak a karakterlánc reprezentációját állítja elő.
Syntax : public String toString()- egyenlő () : igazat ad vissza, ha két http cookie megegyezik egymással hamis ellenkező esetben.
Syntax : public boolean equals(Object obj)- hashCode() : Ennek a http cookie-nak a hash kódját adja vissza. Az eredmény a cookie három jelentős összetevőjének hash kódértékének összege: név domain és elérési út. Felülbírálja a hashCode-ot az Object osztályban.
Syntax : public int hashCode()- klón() : Hozzon létre és küldjön vissza egy másolatot az objektumról. Felülbírálja az objektumosztály klónozási metódusát.
Syntax : public Object clone()Java implementáció:
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 ()); } }Kimenet:
Secure : true
Name : First
Value : 2
Version : 1
is HTTP only : true
toString : First='2'
Hashcode : 97440432Egy másik példa annak bemutatására, hogyan használják a cookie-kat a webszerverek, amelyekben a www.facebook.com által tárolt cookie-k adatait nyomtatjuk ki.
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 ()); } } }Kimenet:
------------------ 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: 0Referencia:
Hivatalos Java dokumentációKvíz létrehozása