〰️
Programming with Java
  • Програмиране с JAVA
  • Обектно-ориентирано програмиране - 1 част
    • Лабораторно упражнение 1
      • Основи на програмирането с Java за начинаещи‎
        • Oбщи термини в Java
        • Основни характеристики на JAVA‎
        • Инсталиране на JDK
        • Инсталиране на Intellij
      • Първа програма в Java
      • Системен изход в JAVA
      • Дефиниране на променливи
      • Примитивни типове данни
      • Оператори
      • If-else
      • Switch-Case
      • For loop
      • While loop
      • Do-while loop
      • Continue
      • Break
      • Задачи
    • Лабораторно упражнение 2
      • Клас
      • Обект
      • Ключова дума new
      • Запазена дума static
      • Конвенции за именуване в Java
      • Wrapper Class
      • Сравняване на
      • Нуждата Wrapper Class
      • Упражнения за извънаудиторна заетост
    • Лабораторно упражнение 3
      • Наследяване
      • this и super
      • Модификатори за достъп
      • Капсулиране
      • Упражнения за извънаудиторна заетост
    • Лабораторно упражнение 4
      • Проследяване на грешки
      • Оценяване на изрази
      • Упражнения за извънаудиторна заетост
    • Лабораторно упражнение 5
      • Полиморфизъм
      • Абстрактен клас
      • Интерфейс
      • Упражнения за извънаудиторна заетост
    • Лабораторно упражнение 6
      • Разлика между Абстрактен клас и Интерфейс
        • Разлика 1
        • Разлика 2
        • Разлика 3
        • Разлика 4
        • Разлика 5
        • Разлика 6
      • Упражнения за извънаудиторна заетост
    • Лабораторно упражнение 7
      • String
      • Enum
      • Обработка на изключения
      • Упражнения за извънаудиторна заетост
    • Лабораторно упражнение 8
      • Генерични класове
      • Генеричен метод
      • Параметри на типа в Java Generics
      • Предимства на генериците
      • Генериците работят само с референтни типове
    • Лабораторно упражнение 9
      • Упражнения за извънаудиторна заетост
    • Лабораторно упражнение 10
      • Упражнения за извънаудиторна заетост
    • Лабораторно упражнение 11
      • Упражнения за извънаудиторна заетост
    • Лабораторно упражнение 12
      • Упражнения за извънаудиторна заетост
    • Лабораторно упражнение 13
      • Упражнения за извънаудиторна заетост
      • Упражнения за извънаудиторна заетост
  • Обектно-ориентирано програмиране - 2 част
    • Лабораторно упражнение 1
      • SRP - Single Responsibility Principle
        • Задачи
      • OCP - Open-Closed Principle
        • Задачи
    • Лабораторно упражнение 2
      • LSP - Liskov Substitution Principle
        • Задачи
      • ISP - Interface Segregation Principle
        • Задачи
      • DI - Dependency Inversion Principle
        • Задачи
    • Лабораторно упражнение 3
      • Singleton
        • Задачи
      • Builder
        • Задачи
    • Лабораторно упражнение 4
      • Factory Method
      • Abstract Factory
      • Задачи
    • Лабораторно упражнение 5
    • Лабораторно упражнение 6
      • Decorator
      • Bridge
        • Композиция
      • Задачи
    • Лабораторно упражнение 7
      • Adapter
      • Задачи
    • Лабораторно упражнение 8
      • Composite
      • Proxy
      • Задачи
    • Лабораторно упражнение 9
    • Лабораторно упражнение 10
      • Visitor
      • State
      • Задачи
    • Лабораторно упражнение 11
      • Observer
      • Задачи
    • Лабораторно упражнение 12
      • Chain of Responsibility
      • Command
      • Задачи
    • Лабораторно упражнение 13
  • Интернет технологии 2023
    • Лабораторно упражнение 1
      • HTTP протокол
        • Синтаксис на URL
        • HTTP съобщения
        • Методи за HTTP заявка
        • Кодове за състояние на HTTP отговор
      • Postman
        • Изпращане на заявка с Postman
        • Получаване на отговор
      • Задачи за работа с Postman
    • Лабораторно упражнение 2
      • Работа с Tomcat
      • Maven
      • Създаване на Maven проект в IntelliJ Ultimate Edition
      • Създаване на Maven проект в IntelliJ Community Edition
      • Създаване на Maven проект в Eclipse IDE
    • Лабораторно упражнение 3
      • Java Servlets
      • Жизнен цикъл на сървлета
      • Създаване на сървлети
      • Задачи за създаване на сървлети
    • Лабораторно упражнение 4
      • Extensible Markup Language
      • Java Architecture for XML Binding
      • JavaScript Object Notation
      • Задачи
    • Лабораторно упражнение 5
    • Лабораторно упражнение 6
      • Spring Boot
      • Създаване на Spring boot проект
      • Структура на Spring Boot проект
        • Файлът pom.xml
        • Main клас в Spring Boot
        • Управление на конфигурацията с application.properties
      • Задача
    • Лабораторно упражнение 7
      • Комуникационен поток и CRUD операции
      • ResponseEntity
      • Избрани анотации
      • Задача
    • Лабораторно упражнение 8
      • Lombok
      • Data transfer object (DTO)
      • Обработване на изключения в Spring Boot приложение
        • Клас Optional<T>
      • Валидиране на данните от заявката
      • Задачи
    • Лабораторно упражнение 9-10
      • Конфигуриране на PostgreSQL DB
      • Jakarta Persistence анотации
      • Repository слой
      • Задачи
    • Лабораторно упражнение 11
      • Проследяване на сесии
      • Филтри и FilterChain
      • Spring Security
        • Добавяне на Spring Security в Spring Boot приложение
        • Конфигуриране на филтри
        • Удостоверяване със Spring Security
        • Защита на метод със Spring Security
      • Задача
    • Лабораторно упражнение 12
      • JSON Web Token
      • Защита с помощта на JWT
      • Задача
    • Лабораторно упражнение 13
  • Програмиране за мобилни и Интернет устройства
    • Лабораторно упражнение 1
      • Задачи
    • Лабораторно упражнение 2
      • Среда за разработване
        • Създаване на проект
        • Структора на проект
        • Виртуално устройство с Android OS
      • Задача
    • Лабораторно упражнение 3
      • Activity
      • Layout
        • XML описание
      • Задача
    • Лабораторно упражнение 4
      • Activity Lifecycle
      • Intent
      • Слушатели на събитията и методи за обратно извикване
      • Задача
    • Лабораторно упражнение 5
      • Слушатели на събитията и методи за обратно извикване
      • Задача
    • Лабораторно упражнение 6
      • Фрагменти
      • DialogFragment
      • Задача
    • Лабораторно упражнение 7
      • Примери
        • BaseAdapter
        • ArrayAdapter
        • Custom ArrayAdapter
      • RecyclerView
        • Пример
      • CardView
      • Задача
    • Лабораторно упражнение 8
      • Runnable
      • HandlerThread
      • ThreadPoolExecutor
      • Задача
    • Лабораторно упражнение 9
      • Задача
      • Задача
      • Пример
  • Интернет Технологии
    • Лабораторно упражнение 1
      • Инсталиране и настройка на необходимата среда за работа в упражненията
      • Maven
      • Създаване на Maven проект в Eclipse IDE
      • Създаване на Maven проект в IntelliJ
      • Работа с Tomcat
      • Задача
    • Лабораторно упражнение 2
      • HTML форми
      • Cascading Style Sheets (CSS)
        • CSS селектори
        • Някои CSS свойства
      • Задача
    • Лабораторно упражнение 3
      • Java Servlets
      • Жизнен цикъл на сървлета
      • Създаване на сървлети
      • Задачи
    • Лабораторно упражнение 4
      • Java Server Pages технология. Същност и детайли
      • Пренасочване между Servlet и JSP
      • Задачи
    • Лабораторно упражение 5
      • Build pattern
      • JavaBean
      • Задачи
    • Лабораторно упражение 6
      • Проследяване на сесии
      • Управление на бисквитки (Cookies)
      • Задачи
    • Лабораторно упражнение 7
      • Проследяване на сесии
      • Управление на бисквитки (Cookies)
      • Servlet Filter
      • Задачи
    • Лабораторно упражнение 8
      • Servlet Filter
      • Прихващане на грешки
      • Задачи
    • Лабораторно упражнение 9
      • Extensible Markup Language
      • JavaScript Object Notation
        • Fetch
      • Задача
    • Лабораторно упражнение 10
      • Java Architecture for XML Binding
      • Задачи
Powered by GitBook
On this page

Was this helpful?

  1. Интернет Технологии
  2. Лабораторно упражнение 7

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

HTTP е протокол без запазване на състоянието, което означава, че всеки път, когато клиент извлича уеб страница, клиентът отваря отделна връзка към уеб сървъра и сървъра автоматично не води нито един запис на предходната заявка на клиента. Все още има следните три начина за поддържане на сесията между уеб клиент и уеб сървър:

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

  • Скрити полета - уеб сървъра може да изпрати скрито поле на HTML форма, заедно с уникален идентификатор на сесията:

<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:

  • public HttpSession getSession() - Връща текущата сесия, свързана с тази заявка, или ако заявката няма сесия, създава такава.

  • public HttpSession getSession(boolean create) Връща текущата HttpSession, свързана с тази заявка или, ако няма текуща сесия и параметъра е true, връща нова сесия.

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

  • public String getId() - Връща низ, съдържащ стойността на уникалния идентификатор.

  • public long getCreationTime() - Връща времето, когато е създадена тази сесия, измерено в милисекунди от полунощ на 1 януари 1970 г. GMT.

  • public long getLastAccessedTime() - Връща последния път, когато клиентът изпрати заявка, свързана с тази сесия, като броя на милисекундите от полунощ на 1 януари 1970 г. GMT.

  • public void invalidate() - Прави сесията недействителна и след това развързва всички свързани с нея обекти.

  • public void setAttribute(String name, Object value) - Този метод поставя обект към тази сесия, като използва посоченото име.

  • public Object getAttribute(String name) - Този метод връща обекта, свързан с посоченото име в тази сесия, или null, ако никой обект не е обвързан под името.

  • public int getMaxInactiveInterval() - извлича времето в секунди до изтичане на сесията

  • public void setMaxInactiveInterval(int interval) - Този метод задава времето, в секунди, между клиентски заявки преди контейнер servlet ще анулира тази сесия.

  • public void removeAttribute(String name) - Този метод премахва променлива от сесията

PreviousЛабораторно упражнение 7NextУправление на бисквитки (Cookies)

Last updated 3 years ago

Was this helpful?