JSP жизнен цикъл

jsp жизнен цикъл

Какво е JSP LifeCycle?

Жизненият цикъл на JSP се дефинира като преобразуване на JSP страница в сервлет, тъй като JSP страницата трябва първо да бъде преобразувана в сервлет, за да обработи заявките за услуга. Жизненият цикъл започва със създаването на JSP и завършва с разпадането му.

Различни фази на жизнения цикъл на JSP

Когато браузърът поиска JSP, JSP машината първо проверява дали трябва да компилира страницата. Ако JSP е компилиран последно или скорошната модификация е извършена в JSP, тогава JSP машината компилира страницата.

Процесът на компилиране на JSP страница включва три стъпки:

  • Разбор на JSP
  • Превръщане на JSP в сървлет
  • Компилиране на сервлета

Диаграма на жизнения цикъл на JSP

Жизненият цикъл на JSP е изобразен на диаграмата по-долу.

JSP жизнен цикъл

Следните стъпки обясняват жизнения цикъл на JSP:

  1. Превод на JSP страница
  2. Компилация на JSP страница (Компилация на JSP страница в _jsp.java)
  3. Зареждане на клас (_jsp.java се преобразува във файл на клас _jsp.class)
  4. Инстанциране (Създава се обект на генериран сървлет)
  5. Инициализация (_jspinit() методът се извиква от контейнер)
  6. Обработка на заявката(_jspservice() методът се извиква от контейнера)
  7. Унищожи (_jspDestroy() метод, извикан от контейнера)

Нека имаме по-подробно обобщение на горните точки:

1) Превод на JSP страницата:

A Java servlet файл се генерира от 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 Line 1: html начален етикет

Code Line 2: Етикет за глава

Code Ред 3 – 4: Заглавен етикет, т.е. демонстрационен JSP и затварящ заглавен етикет

Code Ред 5 – 6: Скриптлет таг, в който се инициализира демонстрацията на променливата

Code Ред 7 – 8: В етикета body, текст, който да бъде отпечатан в изхода (Броят е: )

Code Ред 9: Етикет на скрипт, където се опитва да отпечата променливата demovar с увеличена стойност

Code Ред 10 – 11: Етикетите Body и HTML са затворени

Демонстрационната JSP страница се преобразува в demo_jsp сървлет в кода по-долу.

JSP жизнен цикъл

Code обяснение за Demo_jsp.java

Code Line 1: Servlet клас demo_jsp разширява родителския клас HttpServlet

Code Ред 2 – 3: Замяна на метода на услугата на jsp, т.е. _jspservice, който има HttpServletRequest и HttpServletResponse обекти като свои параметри

Code Line 4: Метод на отваряне

Code Line 5: Извикване на метода getWriter() обект на отговор, за да се получи PrintWriterобект (отпечатва форматирано представяне на обекти в текстов изходен поток)

Code Line 6: Извикване на метод setContentType на обект на отговор за задаване на типа съдържание

Code Line 7: Използвайки write() метод на печатWriter обект, опитващ се да анализира HTML

Code Line 8: Инициализиране на променливата demovar до 0

Code Line 9: Обаждане write() метод на печатWriter обект за анализиране на текста

Code Line 10: Обаждане print() метод на печатWriter обект за увеличаване на променливата demovar от 0+1=1. Следователно, изходът ще бъде 1

Code Line 11: Използвайки write() метод на печатWriter обект, опитващ се да анализира HTML

Изход:

JSP жизнен цикъл

  • Тук можете да видите, че на екранната снимка изходът е 1, тъй като demvar се инициализира на 0 и след това се увеличава на 0+1=1

В горния пример,

  • demo.jsp, е JSP, където една променлива се инициализира и увеличава. Този JSP се преобразува в сервлет (demo_jsp.class), където JSP машината зарежда JSP страницата и преобразува в съдържание на сервлет.
  • Когато преобразуването се случи, целият текст на шаблона се преобразува в println() изявления и всичко останало JSP елементи се преобразуват в Java код.

Ето как една проста JSP страница се превежда в сервлет клас.

2) Компилация на JSP страницата

  • Генерираният java servlet файл се компилира в java servlet клас
  • Преводът на изходната страница на 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() метод, когато извършваме каквото и да е почистване, като например освобождаване на връзки към база данни или затваряне на отворени файлове.

Обобщете тази публикация с: