Ключом к пониманию базовой функциональности JSP является понимание жизненных циклов, которых они придерживаются.
Жизненный цикл JSP — это весь процесс от создания до уничтожения, который аналогичен жизненному циклу сервлета. Разница в том, что жизненный цикл JSP также включает в себя компиляцию файлов JSP в сервлеты.
Ниже приведены этапы, которые проходит жизненный цикл JSP:
Фаза компиляции:
Контейнер сервлетов компилирует исходный файл сервлета и генерирует класс сервлета.
Фаза инициализации:
Загрузите класс сервлета, соответствующий JSP, создайте его экземпляр и вызовите его метод инициализации.
Этап исполнения:
Вызовите метод службы экземпляра сервлета, соответствующего JSP.
Фаза разрушения:
Вызовите метод уничтожения экземпляра сервлета, соответствующего JSP, а затем уничтожьте экземпляр сервлета.
Очевидно, что четыре основных этапа жизненного цикла JSP очень похожи на жизненный цикл сервлета, как показано ниже:
Когда браузер запрашивает страницу JSP, механизм JSP сначала проверяет, нужно ли компилировать этот файл. Если этот файл не был скомпилирован или был изменен с момента последней компиляции, скомпилируйте файл JSP.
Процесс компиляции состоит из трех этапов:
Разобрать JSP-файлы.
Преобразование файлов JSP в сервлеты.
Скомпилируйте сервлет.
После того как контейнер загружает файл JSP, он вызывает метод jspInit(), прежде чем предоставлять какую-либо услугу запросу. Если вам нужно выполнить пользовательские задачи инициализации JSP, просто переопределите метод jspInit(), например:
public void jspInit(){ // код инициализации}
Вообще говоря, программа инициализируется только один раз, и то же самое справедливо и для сервлетов. Обычно вы можете инициализировать соединение с базой данных, открыть файл и создать таблицу запросов в методе jspInit().
На этом этапе описываются все взаимодействия, связанные с запросами, в жизненном цикле JSP до его уничтожения.
Когда веб-страница JSP завершит инициализацию, механизм JSP вызовет метод _jspService().
Метод _jspService() требует в качестве параметров объект HttpServletRequest и объект HttpServletResponse, например:
void _jspService(запрос HttpServletRequest, ответ HttpServletResponse){ // код обработки на стороне сервера}
Метод _jspService() вызывается один раз в каждом запросе и отвечает за генерацию соответствующего ответа, а также отвечает за генерацию ответов для всех 7 методов HTTP, таких как GET, POST, DELETE и т. д.
Фаза уничтожения жизненного цикла JSP описывает, что происходит, когда веб-страница JSP удаляется из контейнера.
Метод jspDestroy() в JSP эквивалентен методу уничтожения в сервлете. Переопределите метод 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><%! частный int initVar=0; частный int serviceVar=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>Пример теста JSP учебника w3cschool</h1><p><%=content1 %></p><p><%=content2 %></p><p><%=content3 %></p></body></html>