〰️
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

Управление на бисквитки (Cookies)

Бисквитките са текстови файлове, съхранявани на компютъра на клиента, съдържащи разнообразна информации с цел подпомагане на комуникацията между клиента и сървъра. 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);

Стойността и името на бисквитката не може да съдържат интервали или някои от следните символи - []()=," / ? @ : ;

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

Last updated 3 years ago

Was this helpful?