Јава.нет.ХттпЦоокие у Јави

Предуслов - Колачићи

Многе веб локације користе мале низове текста познате као колачићи за складиштење трајног стања на страни клијента између веза. Колачићи се прослеђују са сервера на клијента и назад у ХТТП заглављима захтева и одговора. Колачићи могу да се користе од стране сервера да укажу на ИД-ове сесија, садржај корпе за куповину, акредитиве за пријаву, корисничка подешавања и још много тога. ХттпЦоокие објекат представља хттп колачић који носи информације о стању између сервера и корисничког агента. Колачић је широко прихваћен за креирање сесија са стањем. Постоје 3 спецификације хттп колачића:

Класа ХттпЦоокие може прихватити сва ова 3 облика синтаксе.

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

Креира колачић са наведеним именом и вредношћу. Име мора да садржи само АСЦИИ алфанумеричке знакове и да је у складу са РФЦ 2965. Избацује изузетак ИллегалАргумент ако име није тачно или НуллПоинтерЕкцептион ако је име нулл. Вредност може бити било шта што колачић жели да сачува.

    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. парсе() : враћа листу колачића рашчлањених из стринга заглавља. заглавље мора да почиње токеном сет-цоокие или сет-цоокие2 или уопште не сме да садржи токен.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. хасЕкпиред() : враћа логичку вредност која показује да ли је колачић истекао или не.
        Syntax :     public boolean hasExpired()  
  3. сетЦоммент() : Користи се за постављање кратког описа који описује сврху колачића. Користи се када се колачић прикаже кориснику.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. гетЦоммент() : Враћа опис колачића или нулл ако колачић нема коментара.
        Syntax :     public void getComment()  
  5. сетЦомментУРЛ() : Користи се за постављање кратког УРЛ-а коментара који описује сврху колачића. Користи се када претраживач кориснику представи колачић.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. гетЦомментУРЛ() : Враћа УРЛ коментар колачића или нулл ако колачић нема УРЛ коментаре.
        Syntax :     public String getComment()  
  7. сетДисцард() : Користи се за подешавање да ли кориснички агент треба да одбаци овај колачић или не.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. гетДисцард() : Враћа стање променљиве одбацивања постављено методом сетДисцард(). Тачније, враћа труе ако УА треба да одбаци овај колачић, иначе је лажно.
        Syntax :     public Boolean getDiscard()  
  9. сетПортЛист() : Користи се за одређивање портова које овај колачић може да користи.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. гетПортЛист() : Враћа листу портова које овај колачић може да користи.
        Syntax :     public String getPortList()  
  11. сетДомаин() : Одредите домен у којем овај колачић треба да буде видљив. На пример, колачићи послати са сервлета на бали.вацатионс.цом обично се не би враћали од стране претраживача на странице на куеенсланд.вацатионс.цом. Ако је сајт желео да се то догоди, сервлети би могли да наведу цоокие.сетДомаин(.вацатионс.цом). Да би спречили сервере да постављају колачиће који се примењују на хостове ван њиховог домена, наведени домен мора да испуњава следеће захтеве: мора да почиње са тачком (нпр. .цоресервлетс.цом).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. гетДомаин(): Враћа домен у коме је овај колачић видљив.
        Syntax :     public String getDomain()  
  13. сетМакАге() : користи се за постављање максималне старости колачића у секундама. Одређује максимално време након креирања колачића за које је он жив. Негативне вредности означавају да ће колачић истећи чим се прегледач затвори.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. гетМакАге() : Враћа максималну старост колачића.
        Syntax :     public long getMaxAge()  
  15. сетПатх() : Користи се за одређивање путање до клијента на којој треба да врати колачић. Овај колачић је видљив свим страницама и поддиректоријумима наведене путање. На пример, ако је сервер послао колачић са хттп://ецоммерце.сите.цом/тоис/специалс.хтмл, прегледач ће послати колачић назад када се повеже на хттп://ецоммерце.сите.цом/то/бегиннерс.хтмл, али не и на хттп://ецоммерце.сите.цом/ц/цлассиц.хтмл.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. гетПатх(): Враћа путању постављену за овај колачић.
        Syntax :     public String getPath()  
  17. Јава имплементација:
  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. сетСецуре() : Назначено да ли ће се користити безбедан протокол приликом слања овог колачића. Подразумевана вредност је лажна.
        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. гетСецуре(): Враћа тачно ако овај колачић мора да се пошаље безбедним протоколом, иначе је лажно.
        Syntax :     public boolean getSecure()  
  23. гетНаме() : Враћа назив колачића.
           Syntax :     public String getName()  
  24. сетВалуе() : Додељује нову вредност колачићу након иницијализације.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. гетВалуе : Враћа вредност колачића.
        Syntax :     public String getValue()  
  26. гетВерсион() : Враћа 0 ако је колачић у складу са оригиналном Нетсцапе спецификацијом; 1 ако је колачић у складу са РФЦ 2965/2109
        Syntax :     public int getVersion()  
  27. сетВерсион() : Користи се за подешавање верзије протокола колачића који користи овај колачић.
        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. исХттпОнли() : Враћа тачно ако колачић може да користи само хттп, тј. не може га користити скриптни језици попут ЈС вб итд.
        Syntax :     public boolean isHttpOnly()  
  29. сетХттпОнли() : Користи се за подешавање да ли је овај колачић само хттп или не.
        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. домаинМатцхес() : Услужна функција за проверу да ли је име хоста у домену или не.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. тоСтринг() : Конструише стринг репрезентацију овог колачића.
           Syntax :    public String toString()  
  32. једнако() : враћа тачно ако су два хттп колачића једнака један другом фалсе у супротном.
           Syntax :    public boolean equals(Object obj)  
  33. хасхЦоде() : Врати хеш код овог хттп колачића. Резултат је збир вредности хеш кода три значајне компоненте овог колачића: назив домена и путања. Замењује хасхЦоде у класи Објецт.
        Syntax :     public int hashCode()  
  34. цлоне() : Направите и вратите копију овог објекта. Замењује метод клонирања класе објеката.
        Syntax :     public Object clone()  

Јава имплементација:

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

Још један пример који показује како се колачићи заправо користе од стране веб сервера у којима штампамо детаље колачића које чува ввв.фацебоок.цом

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

Референца:

Званична Јава документација

Креирај квиз