Жизненный цикл JSP страницы включает несколько этапов, которые происходят с момента запроса страницы клиентом до ее ответа. Эти этапы позволяют сервлет-контейнеру управлять страницей, обеспечивая её корректное выполнение и оптимизацию.
🟠Перевод (Translation)
На этом этапе страница переводится в сервлетный код. Это означает, что JSP контейнер берет исходный код страницы и генерирует соответствующий Java код для сервлета.
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>Example JSP</title>
</head>
<body>
<h1>Welcome to JSP</h1>
<p>Current time: <%= new java.util.Date() %></p>
</body>
</html>
🟠Компиляция (Compilation)
Переведенный сервлетный код компилируется в байт-код (класс-файл). Это стандартная компиляция Java, которая создает скомпилированный класс из Java исходного кода.
🟠Загрузка (Loading)
На этом этапе скомпилированный класс загружается в память JVM (Java Virtual Machine). Это стандартный процесс загрузки классов в Java, осуществляемый класс-загрузчиком.
🟠Инициализация (Initialization)
Контейнер вызывает метод
jspInit() сервлета, который соответствует JSP странице. Этот метод аналогичен методу init() в обычных сервлетах и вызывается один раз, когда сервлет загружается в память. Здесь можно выполнять любые операции инициализации, такие как настройка ресурсов.public void jspInit() {
// Инициализационный код
}🟠Обработка запроса (Request Processing)
Когда клиент отправляет запрос к JSP странице, контейнер создает объекты
HttpServletRequest и HttpServletResponse и передает их методу jspService(), который обрабатывает запросы и генерирует ответ. Этот метод вызывается каждый раз при поступлении запроса.public void _jspService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
out.println("<html><head><title>Example JSP</title></head><body>");
out.println("<h1>Welcome to JSP</h1>");
out.println("<p>Current time: " + new java.util.Date() + "</p>");
out.println("</body></html>");
}
}🟠Завершение (Termination)
Когда контейнер решает выгрузить JSP страницу (например, при завершении работы приложения или перезагрузке сервера), он вызывает метод
jspDestroy(). Этот метод аналогичен методу destroy() в обычных сервлетах и позволяет выполнять любые операции очистки, такие как освобождение ресурсов.public void jspDestroy() {
// Очистка ресурсов
}Ставь 👍 и забирай 📚 Базу знаний