〰️
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
  • Методът init()
  • Методът service()
  • Методът doGet()
  • Методът doPost()
  • Методът destroy()

Was this helpful?

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

Жизнен цикъл на сървлета

Жизненият цикъл на сървлета може да се дефинира като времето от неговото създаване до премахването му от паметта. Етапите, през които преминава сървлета, са следните:

  • инициализация на сървлета чрез повикване на init() метода му;

  • сървлетът повиква метода си service() за да обслужва клиентските заявки;

  • сървлетът е деактивиран чрез повикване на метода му destroy() от контейнера;

  • сървлетът е премахнат от паметта от почистващата услуга на Java виртуалната машина (JVM).

Методът init()

Методът е проектиран да бъде извикан само веднъж. Извиква се при създаването на сървлета и повече не се извиква. Използва се за първоначална инициализация. Сървлетът обикновено се създава, когато клиентът за първи път достъпи URL адреса, на който той съответства, но може да бъде създаден и при стартирането на сървъра. Когато клиент направи достъп до сървлета, се създава единична негова инстанция, а обслужването на всяка клиентска заявка се обработва в отделна нишка. Методът init() също така създава или зарежда различни помощни данни, необходими за работата на сървлета. Дефиницията на метода е следната:

public void init() throws ServletException{
    // инициализиращ код...
}

Методът service()

Това е основният метод на сървлета, който извършва същинската работа. Сървлет контейнерът извиква този метод, за да бъдат обслужени клиентските заявки и да бъде генериран форматиран отговор за клиента. Всеки път, когато сървърът получи заявка за сървлет, той създава нова нишка и извиква service(). Методът проверява типа на заявката (GET, POST, PUT, DELETE, etc.) и извиква съответния метод, реализиран в сървлета.

public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
    …
}

Методите doGet() и doPost() са най-често използваните методи във всяка клиентска заявка.

Методът doGet()

Методът обработва постъпила GET заявка от клиента, която е резултат от нормално извикване URL адреса на сървлета или от HTML форма, в която не е указан method. Заявката от тип GET предава данни към сървъра посредством параметри на URL адреса Query string.

Query string параметрите се изписват след URL адреса като започват с ?. Те се състоят от ключ и стойност, като при изброяване на множество параметри се разделят със символа &.

http://example.com?key1=value1&key2=value2

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    // код на сървлета
}

Методът doPost()

Методът обработва постъпила POST заявка от клиента, която е резултат от HTML форма, в която конкретно е зададен method="POST". Заявката от тип POST предава данни към сървъра посредством тялото на HTTP пакета, което не изменя URL адреса и позволява предаване на данни с по-голям обем.

Параметрите на POST заявката се състоят от ключ и стойност, които се групират в тялото на HTTP пакета.

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // код на сървлета
}

Методът destroy()

Методът се извиква само веднъж по време на жизнения цикъл на сървлета. Този метод дава възможност на сървлета да извърши някои финализиращи операции като затваряне на връзка към база от данни, записване на бисквитка или някаква почистваща операция. След неговото повикване сървлета е маркиран за почистване.

public void destroy(){
    // финализиращ код...
}

Сравнение между GET и POST

GET

POST

Бутон за връщане назад/ презареждане

безвредно

Данните ще бъдат изпратени отново (браузърът предупреждава потребителя, че данните ще бъдат изпратени повторно)

Запазване на отметка

Може да се запази

Не може да се запази

Кеширане

Може да се кешира

Не може да се кешира

Кодиране

application/x-www-form-urlencoded

application/x-www-form-urlencoded or multipart/form-data. multipart кодирането се използва за двоични данни.

История

Параметрите остават в историята на браузъра

Параметрите не се записват в историята на браузъра

Ограничения за дължина на данните

Да, при изпращане на данни методът GET добавя параметри към URL адреса, а дължината на URL адреса е ограничена (максималната дължина на URL адреса е 2048 знака)

Без ограничения

Ограничения за типа данни

Разрешени са само ASCII символи

Без ограничения. Бинарните данни също са позволени

Сигурност

GET е по-малко сигурен в сравнение с POST, защото изпратените данни са част от URL адреса

Никога не използвайте GET, когато изпращате пароли или друга чувствителна информация!

POST е малко по-безопасен от GET, защото параметрите не се съхраняват в историята на браузъра или в лога на уеб сървъра

Видимост

Данните са видими за всички в URL адреса

Данните не се показват в URL адреса

PreviousJava ServletsNextСъздаване на сървлети

Last updated 2 years ago

Was this helpful?