Java.net.HttpCookie programoje Java
Būtina sąlyga - Slapukai
Daugelis svetainių naudoja mažas teksto eilutes, vadinamas slapukais, kad išsaugotų nuolatinę kliento būseną tarp ryšių. Slapukai perduodami iš serverio klientui ir vėl atgal į užklausų ir atsakymų HTTP antraštes. Slapukus serveris gali naudoti norėdamas nurodyti seanso ID, pirkinių krepšelio turinį, prisijungimo kredencialus, vartotojo nuostatas ir kt. HttpCookie objektas yra http slapukas, kuris perduoda būsenos informaciją tarp serverio ir vartotojo agento. Slapukas plačiai naudojamas kuriant būsenos seansus. Yra 3 http slapukų specifikacijos:
HttpCookie klasė gali priimti visas šias 3 sintaksės formas.
Konstruktorius:
Sukuria slapuką su nurodytu pavadinimu ir reikšme. Pavadinimą turi sudaryti tik ASCII raidiniai ir skaitiniai simboliai ir jis turi atitikti RFC 2965. Jei pavadinimas neteisingas, jis pateikia IllegalArgument išimtį arba NullPointerException, jei pavadinimas yra nulinis. Vertė gali būti bet kokia, kurią norite išsaugoti.
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 nullMetodai:
- parse () : grąžina slapukų, išnagrinėtų iš antraštės eilutės, sąrašą. antraštė turi prasidėti set-cookie arba set-cookie2 token arba joje neturi būti jokio prieigos rakto.
Syntax : public static List parse(String header)
Parameters :
header : String to be parsed as cookies- yra pasibaigęs() : grąžina loginę reikšmę, nurodant, ar slapuko galiojimo laikas baigėsi, ar ne.
Syntax : public boolean hasExpired()- setComment() : Naudojamas trumpam aprašymui, apibūdinančiam slapuko paskirtį, nustatyti. Jis naudojamas, kai vartotojui pateikiamas slapukas.
Syntax : public void setComment(String purpose)
Parameters :
purpose : purpose of cookie- gauti komentarą () : Grąžina slapuko aprašymą arba nulį, jei slapukas neturi komentarų.
Syntax : public void getComment()- setCommentURL() : Naudojamas norint nustatyti trumpą komentaro URL, apibūdinantį slapuko tikslą. Jis naudojamas, kai naršyklė pateikia slapuką vartotojui.
Syntax : public void setCommentURL(String purpose)
Parameters :
purpose : purpose of cookie- getCommentURL() : Grąžina slapuko URL komentarą arba nulį, jei slapukas neturi URL komentarų.
Syntax : public String getComment()- setDiscard() : Naudojamas norint nustatyti, ar vartotojo agentas turėtų atmesti šį slapuką, ar ne.
Syntax : public void setDiscard(Boolean discard)
Parameters :
discard : true if UA should discard otherwise false- getDiscard() : Grąžina atmetimo kintamojo būseną, nustatytą setDiscard() metodu. Tiksliau, grąžinama tiesa, jei UA turi atmesti šį slapuką, kitaip klaidinga.
Syntax : public Boolean getDiscard()- setPortList() : Naudojamas norint nurodyti prievadus, kuriuos šis slapukas gali naudoti.
Syntax : public void setPortList(String portList)
Parameters :
portList : String of comma separated digits specifying the ports.- getPortList() : Grąžina prievadų, kuriuos gali naudoti šis slapukas, sąrašą.
Syntax : public String getPortList()- setDomain() : Nurodykite domeną, kuriame šis slapukas turėtų būti matomas. Pavyzdžiui, slapukai, siunčiami iš servleto adresu bali.vacations.com, naršyklė paprastai negrąžintų į queensland.vacations.com puslapius. Jei svetainė norėjo, kad tai įvyktų, servlets galėtų nurodyti cookie.setDomain(.vacations.com). Kad serveriai negalėtų nustatyti slapukų, taikomų prie jų domeno nepriklausantiems pagrindiniams kompiuteriams, nurodytas domenas turi atitikti šiuos reikalavimus: jis turi prasidėti tašku (pvz., .coreservlets.com).
Syntax : public void setDomain(String domain)
Parameters :
domain : String representing the domain in which this cookie is visible- getDomain() : Grąžina domeną, kuriame matomas šis slapukas.
Syntax : public String getDomain()- setMaxAge() : naudojamas nustatyti maksimalų slapuko amžių sekundėmis. Jis nurodo maksimalų laiką po slapuko sukūrimo, kurį jis yra gyvas. Neigiamos reikšmės nurodo, kad slapuko galiojimas baigsis, kai tik naršyklė bus uždaryta.
Syntax : public void setMaxAge(long age)
Parameters :
age : Max survive time in seconds- getMaxAge() : Grąžina maksimalų slapuko amžių.
Syntax : public long getMaxAge()- setPath() : Naudojamas norint nurodyti kliento kelią, kuriuo jis turėtų grąžinti slapuką. Šis slapukas matomas visuose nurodyto kelio puslapiuose ir pakatalogiuose. Pavyzdžiui, jei serveris atsiuntė slapuką iš http://ecommerce.site.com/toys/specials.html, naršyklė siųs slapuką atgal, kai prisijungs prie http://ecommerce.site.com/to/beginners.html, bet ne į http://ecommerce.site.com/c/classic.html.
Syntax : public void setPath(String uri)
Parameters :
uri - a String specifying a path- getPath() : Grąžina šiam slapukui nustatytą kelią.
Syntax : public String getPath()- Java diegimas:
- 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 ()); } }- Išvestis
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() : Nurodoma, ar siunčiant šį slapuką reikia naudoti saugų protokolą. Numatytoji vertė yra klaidinga.
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() : Grąžina tiesa, jei šis slapukas turi būti išsiųstas naudojant saugų protokolą, kitaip klaidingas.
Syntax : public boolean getSecure()- getName() : Grąžina slapuko pavadinimą.
Syntax : public String getName()- setValue() : Po inicijavimo slapukui priskiriama nauja reikšmė.
Syntax : public void setValue(String newValue)
Parameters :
newValue - a String specifying the new value- getValue: Grąžina slapuko vertę.
Syntax : public String getValue()- getVersion() : Grąžina 0, jei slapukas atitinka pradinę Netscape specifikaciją; 1, jei slapukas atitinka RFC 2965/2109
Syntax : public int getVersion()- setVersion() : Naudojamas šio slapuko naudojamo slapukų protokolo versijai nustatyti.
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() : Grąžina tiesa, jei slapuką gali naudoti tik http, ty jo negali naudoti scenarijų kalbos, pvz., JS vb ir kt.
Syntax : public boolean isHttpOnly()- setHttpOnly() : Naudojamas norint nustatyti, ar šis slapukas yra tik http, ar ne.
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() : Naudingumo funkcija, skirta patikrinti, ar pagrindinio kompiuterio pavadinimas yra domene, ar ne.
Syntax : public static boolean domainMatches(String domain
String host)
Parameters :
domain : domain to check hostname with
host : host to check- toString() : Sukuria šio slapuko eilutės atvaizdavimą.
Syntax : public String toString()- lygus () : grąžina true, jei du http slapukai yra lygūs vienas kitam false kitu atveju.
Syntax : public boolean equals(Object obj)- hashCode() : Grąžinti šio http slapuko maišos kodą. Rezultatas yra trijų svarbių šio slapuko komponentų maišos kodo vertės suma: vardo domenas ir kelias. Nepaiso maišos kodo klasėje Object.
Syntax : public int hashCode()- klonas () : Sukurkite ir grąžinkite šio objekto kopiją. Nepaiso objektų klasės klonavimo metodo.
Syntax : public Object clone()Java diegimas:
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 ()); } }Išvestis:
Secure : true
Name : First
Value : 2
Version : 1
is HTTP only : true
toString : First='2'
Hashcode : 97440432Kitas pavyzdys, rodantis, kaip iš tikrųjų slapukus naudoja žiniatinklio serveriai, kuriuose spausdiname www.facebook.com saugomų slapukų informaciją.
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 ()); } } }Išvestis:
------------------ 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: 0Nuoroda:
Oficiali Java dokumentacijaSukurti viktoriną