PTI-IT

Интернет програмиране с JAVA

View the Project on GitHub theVelislavKolesnichenko/PTI-IT

Проследяване на сесии

HTTP е протокол без запазване на състоянието, което означава, че всеки път, когато клиент извлича уеб страница, клиентът отваря отделна връзка към уеб сървъра и сървъра автоматично не води нито един запис на предходната заявка на клиента. Все още има следните три начина за поддържане на сесията между уеб клиент и уеб сървър: •Бисквитки - Уеб сървърът може да зададе уникално ID на сесия под формата на бисквитка за всеки уеб клиент и за следващи заявки от страна на този клиент той може да бъде разпознат. Това не е ефективен способ, защото има възможност браузърът да е забранил бисквитките в своите настройки, така че този подход е непрепоръчителен за управление на сесии.

<input type="hidden" name="sessionid" value="12345">

използването на този метод означава, че посоченото име и стойност автоматично се включват в данните за GET или POST. Всеки път, когато уеб браузърът изпраща заявка, стойността на sessionid може да се използва, за да се проследи неговата идентичност. Това може да бъде ефективен начин за следене на сесията, но активирането на обикновена (<A HREF...>) хипервръзка не води до подаване на форма, което означава, че скритите полета на формата също не могат да осигурят универсален способ за проследяване на сесия. Пренаписване на URL-то Може да се добавят някои допълнителни данни към края на заявката на всяко URL, които да се идентифицират с конкретна сесия, и сървърът да асоциира този „идентификатор“ на сесия с данни предназначени за нея. URL пренаписването е подобър начин да се поддържат сесии и работи за браузърите, когато те не поддържат бисквитки, но тук недостатък е, че ще трябва динамично да се генерира всяко URL, за да може дадено ID на сесия да се асоциира с него, дори при използването на прости статични HTML страници.

HttpSession обект За разлика от описаните по-горе три начина, сървлет притежава HttpSession интерфейс, който осигурява начин да се идентифицира даден потребител в повече от една заявка за страница или посещение на уеб сайт и да се съхранява информация за този потребител. Контейнерът за сървлет използва този интерфейс, за да се създаде сесия между HTTP клиента и HTTP сървъра. Сесията продължава за определен период от време, в повече от една връзка или заявка за страница от страна на потребителя.

HttpSession session = request.getSession();

Използване на HttpSession

Интерфейсът HttpServletRequest предоставя два метода за получаване на обект на HttpSession:

Методи на HttpSession интерфейса: