Життєвий цикл JSP

Що таке JSP LifeCycle?
Життєвий цикл JSP визначається як переклад сторінки JSP на сервлет, оскільки сторінку JSP потрібно спочатку перетворити на сервлет, щоб обробляти запити на обслуговування. Життєвий цикл починається зі створення JSP і закінчується його дезінтеграцією.
Різні фази життєвого циклу JSP
Коли браузер запитує JSP, механізм JSP спочатку перевіряє, чи потрібно компілювати сторінку. Якщо JSP було скомпільовано востаннє або нещодавно модифіковано в JSP, то механізм JSP компілює сторінку.
Процес компіляції сторінки JSP складається з трьох кроків:
- Розбір JSP
- Перетворення JSP на сервлет
- Компіляція сервлета
Діаграма життєвого циклу JSP
Життєвий цикл JSP зображено на діаграмі нижче.
Наступні кроки пояснюють життєвий цикл JSP:
- Переклад сторінки JSP
- Компіляція сторінки JSP (Компіляція сторінки JSP у _jsp.java)
- Завантаження класу (_jsp.java перетворюється на файл класу _jsp.class)
- Створення екземпляра (створюється об’єкт згенерованого сервлета)
- Ініціалізація (
_jspinit()метод викликається контейнером) - Обробка запиту(
_jspservice()метод викликається контейнером) - знищити (
_jspDestroy()метод, що викликається контейнером)
Давайте докладніше підсумуємо вищевказані пункти:
1) Переклад сторінки JSP:
A Java файл сервлету генерується з вихідного файлу JSP. Це перший крок життєвого циклу JSP. На етапі перекладу контейнер перевіряє синтаксичну правильність файлів сторінок і тегів JSP.
- Контейнер JSP інтерпретує стандартні директиви та дії, а також спеціальні дії, що посилаються на бібліотеки тегів (усі вони є частиною сторінки JSP і будуть обговорюватися в наступному розділі), що використовуються на цій сторінці JSP.
- У наведеному вище графічному описі demo.jsp перекладається на demo_jsp.java на першому кроці
- Розглянемо приклад «demo.jsp», як показано нижче:
Demo.jsp
<html> <head> <title>Demo JSP</title> </head> <% int demvar=0;%> <body> Count is: <% Out.println(demovar++); %> <body> </html>
Code Пояснення до Demo.jsp
Code Лінія 1: початковий тег html
Code Лінія 2: головний тег
Code Рядок 3 – 4: Тег заголовка, тобто демонстраційний JSP і закриваючий тег заголовка
Code Рядок 5 – 6: Тег сценарію, який ініціалізує демонстраційну змінну
Code Рядок 7 – 8: у тегу body, текст, який буде надруковано у вихідних даних (кількість: )
Code Лінія 9: Тег сценарію, який намагається надрукувати змінну demovar із збільшеним значенням
Code Рядки 10 – 11: Теги Body та HTML закрито
Демонстраційна JSP-сторінка перетворюється на сервлет demo_jsp у наведеному нижче коді.
Code пояснення для Demo_jsp.java
Code Лінія 1: клас сервлета demo_jsp розширює батьківський клас HttpServlet
Code Рядок 2 – 3: Перевизначення методу служби jsp, тобто _jspservice, який має об’єкти HttpServletRequest і HttpServletResponse як параметри
Code Лінія 4: Спосіб відкриття
Code Лінія 5: Виклик методу getWriter() об'єкт відповіді для отримання PrintWriterоб'єкт (друкує відформатоване представлення об'єктів у текстовий потік виводу)
Code Лінія 6: виклик методу setContentType об’єкта відповіді для встановлення типу вмісту
Code Лінія 7: Використання write() метод друкуWriter об'єкт, який намагається розібрати html
Code Лінія 8: Ініціалізація змінної demovar до 0
Code Лінія 9: Телефоную write() метод друкуWriter об'єкт для розбору тексту
Code Лінія 10: Телефоную print() метод друкуWriter об'єкт для збільшення змінної demovar від 0+1=1. Отже, вивід буде 1
Code Лінія 11: Використання write() метод друкуWriter об'єкт, який намагається розібрати html
вихід:
- Тут ви бачите, що на скріншоті результат дорівнює 1, оскільки demvar ініціалізується на 0, а потім збільшується на 0+1=1
У наведеному вище прикладі
- demo.jsp, це JSP, де одна змінна ініціалізується та збільшується. Цей JSP перетворюється на сервлет (demo_jsp.class), де механізм JSP завантажує сторінку JSP і перетворює на вміст сервлету.
- Коли відбувається перетворення, весь текст шаблону перетворюється на
println()заяви і все Елементи JSP перетворюються на Java Код.
Ось як проста JSP-сторінка перетворюється на клас сервлету.
2) Компіляція сторінки JSP
- Згенерований файл сервлетів Java компілюється в клас сервлетів Java
- Трансляція вихідної сторінки Java до її класу реалізації може відбутися в будь-який час між розгортанням сторінки JSP у контейнері та обробкою сторінки JSP.
- У наведеному вище графічному описі demo_jsp.java скомпільовано у файл класу demo_jsp.class
3) Завантаження класу
- Клас сервлета, який було завантажено з джерела JSP, тепер завантажується в контейнер
4) Інстанціювання
- На цьому кроці генерується об’єкт, тобто екземпляр класу.
- Контейнер керує одним або кількома примірниками цього класу у відповідь на запити та інші події. Як правило, контейнер JSP створюється за допомогою контейнера сервлетів. Контейнер JSP є розширенням контейнера сервлетів, оскільки і контейнер підтримує JSP, і сервлет.
- Інтерфейс JSPPage, який надається контейнером, забезпечує
init()таdestroy()методи - Існує інтерфейс HttpJSPPage, який обслуговує HTTP-запити, а також містить метод служби.
5) Ініціалізація
public void jspInit()
{
//initializing the code
}
_jspinit()метод ініціює екземпляр сервлета, який було згенеровано з JSP і буде викликано контейнером на цьому етапі.- Після створення екземпляра одразу після цього буде викликано метод init
- Він викликається лише один раз протягом життєвого циклу JSP, метод ініціалізації оголошується, як показано вище
6) Обробка запиту
void _jspservice(HttpServletRequest request HttpServletResponse response)
{
//handling all request and responses
}
_jspservice()метод викликається контейнером для всіх запитів, викликаних сторінкою JSP протягом її життєвого циклу- Для цього етапу він має пройти всі вищезазначені етапи, а потім можна буде викликати лише метод обслуговування.
- Він передає об’єкти запиту та відповіді
- Цей метод не можна перевизначити
- Метод показано вище: він відповідає за генерацію всіх методів HTTP, наприклад GET, POST тощо.
7) Знищити
public void _jspdestroy()
{
//all clean up code
}
_jspdestroy()метод також викликається контейнером- Цей метод викликається, коли контейнер вирішує, що екземпляр сервлета більше не потрібен для обслуговування запитів.
- Після виклику методу знищення сервлет готовий до збирання сміття
- Це кінець життєвого циклу.
- Ми можемо перевизначити
jspdestroy()метод, коли ми виконуємо будь-яке очищення, наприклад розблокування підключень до бази даних або закриття відкритих файлів.



