Интернет програмиране с JAVA
Бисквитките са текстови файлове, съхранявани на компютъра на клиента, съдържащи разнообразна информации с цел подпомагане на комуникацията между клиента и сървъра. Java сървлетите са проектирани да поддържат HTTP-бисквитки. За идентифициране на вече регистриран потребител например може да се осъществи следния процес в три стъпки:
Анатомия на бисквитките
Cookies обикновено се изпращат с HTTP хедъра (въпреки че JavaScript също може да изпрати бисквитка директно на един браузър). Сървлет, който създава бисквитка, може да изпрати хедърите по следния начин:
HTTP/1.1200 OK
Date:Fri,04Jan201421:03:38 GMT
...
Set-Cookie: name=xyz; expires=Friday,04-Feb-1022:03:38 GMT;
path=/; domain=javaeecode.com Connection: close
Content-Type: text/html
Ако браузърът е конфигуриран да съхранява бисквитки, то тогава тази информация ще се запази до времето на изтичане на валидността. Ако потребителят задава адреси в областта на оказания в параметъра “path” домейн, браузърът за всяка страница, която съответства на пътя и домейна на бисквитката, ще я изпраща до сървъра. Хедърите на браузъра може да изглеждат по следния начин:
GET / HTTP/1.1
Connection:Keep-Alive
...
Host: zink.demon.co.uk:1126
Accept: image/gif,*/*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz
След което сървлетът ще имат достъп до бисквитката чрез метода request.getCookies(), който връща масив от Cookie обекти.
Методи на сървлета за работа с бисквитки са:
public void setDomain(String pattern)
– определя домейна, за който ще се прилага бисквитката;public String getDomain()
- получава домейна, за който ще се прилага бисквитката;public void setMaxAge(int expiry)
- определя колко време ( в секунди), трябва да се изчака, преди да изтече бисквитката. Ако не се зададе, валидността на бисквитката ще изтече в рамките на текущата сесия.public int getMaxAge()
- връща максималното време за валидност на бисквитката;public String getName()
- връща името на бисквитката. Името не може да се променя след създаването.public void setValue(String newValue)
- определя стойността, свързана с бисквитката;public String getValue()
- получава стойност, свързана с бисквитката;public void setPath(String uri)
- определя пътя, към които се прилага тази бисквитка. Ако не се укаже пътя, бисквитката се връща за всички URL адреси, разположени в директорията на текущото URL, както и всички поддиректории;public String getPath()
- получава пътя, към които се прилага тази бисквитка;public void setSecure(boolean flag)
- определя булева стойност, показваща дали бисквитката трябва да бъде изпращана само чрез криптирани ( т.е. SSL ) връзки;public void setComment(String purpose)
- определя коментар, който описва целта на бисквитка. Коментарът е полезен, ако браузъра трябва да покаже бисквитката на потребителя.public String getComment()
- връща коментар, описващ целите на конкретната бисквитка, или нула, ако бисквитката няма никакъв коментар.Създаване на бисквитка със сървлет
Cookie cookie =new Cookie("key","value");
cookie.setMaxAge(60*60*24);
response.addCookie(cookie);
Стойността и името на бисквитката не може да съдържат интервали или някои от
следните символи - []()=," / ? @ : ;