English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ключ к пониманию базовых функций JSP - это понимание жизни, которую они следуют.
Целый процесс жизни JSP от создания до уничтожения аналогичен жизни servlet, различие заключается в том, что жизнь JSP включает в себя компиляцию файла JSP в servlet.
Вот несколько этапов, которые проходят в жизни JSP:
Этап компиляции:
Servlet-контейнер компилирует исходный файл servlet, генерируя класс servlet
Этап инициализации:
Загрузка класса servlet, соответствующего JSP, создание его примера и вызов его инициализационного метода
Этап выполнения:
Вызов метода обслуживания примера servlet, соответствующего JSP
Этап уничтожения:
Вызов метода уничтожения примера servlet, соответствующего JSP, и уничтожение примера servlet
Очевидно, четыре основные этапа жизни JSP очень похожи на жизнь servlet, ниже приведен示意图:
Когда браузер запрашивает страницу JSP, JSP-движок сначала проверяет, нужно ли компилировать этот файл. Если файл не был компилирован или был изменен после последней компиляции, то компилировать этот JSP-файл.
Процесс компиляции включает три шага:
Анализировать файл JSP.
Преобразовать файл JSP в servlet.
Компилировать servlet.
После загрузки JSP файла контейнер вызовет метод jspInit() перед тем, как предоставить услугу для запроса. Если вам нужно выполнить пользовательскую задачу инициализации JSP, перепишите метод jspInit(), как показано ниже:
public void jspInit(){ // Инициализационный код }
Обычно программа инициализируется один раз, как и servlet. Обычно вы можете инициализировать подключение к базе данных, открыть файл и создать таблицу запросов в методе jspInit().
Этот этап описывает все взаимодействия, связанные с запросом, в жизненном цикле JSP, до уничтожения.
После завершения инициализации JSP-страницы, движок JSP вызовет метод _jspService().
_jspService() метод требует HttpServletRequest объект и HttpServletResponse объект в качестве своих параметров, как показано ниже:
void _jspService(HttpServletRequest request, HttpServletResponse response) { // Серверный обработчик кода }
_jspService() метод вызывается один раз для каждого request и отвечает за создание соответствующего response, а также за создание ответов всех 7 HTTP-методов, таких как GET, POST, DELETE и т.д.
Этап уничтожения в жизненном цикле 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>
Откройте страницу в браузере, результат вывода: