English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Цикл жизни JSP

Ключ к пониманию базовых функций JSP - это понимание жизни, которую они следуют.

Целый процесс жизни JSP от создания до уничтожения аналогичен жизни servlet, различие заключается в том, что жизнь JSP включает в себя компиляцию файла JSP в servlet.

Вот несколько этапов, которые проходят в жизни JSP:

  • Этап компиляции:

    Servlet-контейнер компилирует исходный файл servlet, генерируя класс servlet

  • Этап инициализации:

    Загрузка класса servlet, соответствующего JSP, создание его примера и вызов его инициализационного метода

  • Этап выполнения:

    Вызов метода обслуживания примера servlet, соответствующего JSP

  • Этап уничтожения:

    Вызов метода уничтожения примера servlet, соответствующего JSP, и уничтожение примера servlet

Очевидно, четыре основные этапа жизни JSP очень похожи на жизнь servlet, ниже приведен示意图:

Компиляция JSP

Когда браузер запрашивает страницу JSP, JSP-движок сначала проверяет, нужно ли компилировать этот файл. Если файл не был компилирован или был изменен после последней компиляции, то компилировать этот JSP-файл.

Процесс компиляции включает три шага:

  • Анализировать файл JSP.

  • Преобразовать файл JSP в servlet.

  • Компилировать servlet.

Инициализация JSP

После загрузки JSP файла контейнер вызовет метод jspInit() перед тем, как предоставить услугу для запроса. Если вам нужно выполнить пользовательскую задачу инициализации JSP, перепишите метод jspInit(), как показано ниже:

public void jspInit(){
  // Инициализационный код
}

Обычно программа инициализируется один раз, как и servlet. Обычно вы можете инициализировать подключение к базе данных, открыть файл и создать таблицу запросов в методе jspInit().

Выполнение JSP

Этот этап описывает все взаимодействия, связанные с запросом, в жизненном цикле JSP, до уничтожения.

После завершения инициализации JSP-страницы, движок JSP вызовет метод _jspService().

_jspService() метод требует HttpServletRequest объект и HttpServletResponse объект в качестве своих параметров, как показано ниже:

void _jspService(HttpServletRequest request,
                 HttpServletResponse response)
{
   // Серверный обработчик кода
}

_jspService() метод вызывается один раз для каждого request и отвечает за создание соответствующего response, а также за создание ответов всех 7 HTTP-методов, таких как GET, POST, DELETE и т.д.

Очистка JSP

Этап уничтожения в жизненном цикле JSP описывает все, что происходит при удалении JSP-страницы из контейнера.

Метод jspDestroy() в JSP эквивалентен методу уничтожения в servlet. При необходимости выполнения любой очистки работы перепишите метод jspDestroy(), например, для освобождения подключения к базе данных или закрытия папок и т.д.

Формат метода jspDestroy() следующий:

public void jspDestroy()
{
   // 清理代码
}

Онлайн пример

Пример кода жизненного цикла JSP приведен ниже:

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
    pageEncoding="UTF-8"%>
<html>
<head>
<title>life.jsp</title>
</head>
<body>
<%! 
  private int initVar = 0;
  private int serviceVar = 0;
  private int destroyVar=0;
%>
  
<%!
  public void jspInit(){
    initVar++;
    System.out.println("jspInit(): JSP была инициализирована " + initVar + " раз");
  }
  public void jspDestroy(){
    destroyVar++;
    System.out.println("jspDestroy(): JSP была уничтожена " + destroyVar + " раз");
  }
%>
<%
  serviceVar++;
  System.out.println("_jspService(): JSP ответила на " + serviceVar + " запросов");
  String content1="Количество инициализаций : " + initVar;
  String content2="Количество ответов на запросы клиентов : " + serviceVar;
  String content3="Количество уничтожений : " + destroyVar;
%>
<h1>Основной учебник(oldtoolbag.com) JSP Пример теста</h1>
<p><%=content1 %></p>
<p><%=content2 %></p>
<p><%=content3 %></p>
</body>
</html>

Откройте страницу в браузере, результат вывода: