---
title: JSP (Java Server Pages)
seo:
  title: JSP (Java Server Pages) — Java Developer
  description: Тема «JSP (Java Server Pages)» для собеседования Java Developer. Что такое Java Server Pages (JSP)? Зачем нужен JSP?
---

[Все темы Java Developer](/java-developer)

## <strong>Что такое Java Server Pages (</strong><code>JSP</code><strong>)?</strong> [#q-14bee738d69b81768bbad061dad52126]

<strong>Java Server Pages (</strong>
<code>JSP</code>
<strong>)</strong> — это технология для создания динамических веб-страниц на
языке Java. <code>JSP</code> позволяет встраивать Java-код в HTML-страницы, что
упрощает разработку веб-приложений. Основные особенности <code>JSP</code>
включают&#58;

1. <strong>Динамическое создание контента</strong>&#58; <code>JSP</code>
   позволяет генерировать HTML, XML или другие типы документов на сервере в
   ответ на запросы клиентов.

1. <strong>Легкость использования</strong>&#58; Использование знакомого
   синтаксиса HTML с возможностью добавления Java-кода через специальные теги (
   <code>&#60;&#37; &#37;&#62;</code>, <code>&#60;&#37;&#61; &#37;&#62;</code>).

1. <strong>Сервлеты в основе</strong>&#58; <code>JSP</code> страницы
   компилируются в сервлеты, что обеспечивает высокую производительность и
   возможность использования всех возможностей Java.

1. <strong>Поддержка выражений и тегов</strong>&#58; В <code>JSP</code> можно
   использовать выражения <code>JSP</code> (JSP Expression Language, EL) и
   стандартные теги (JSTL) для упрощения работы с данными и логикой отображения.

Пример простой <code>JSP</code> страницы&#58;

```xml
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>My JSP Page</title>
</head>
<body>
    <h1>Hello, JSP!</h1>
    <p>The current date and time is: <%= new java.util.Date() %></p>
</body>
</html>
```

В этом примере HTML-код смешан с Java-кодом, который выводит текущую дату и время. <code>JSP</code> обеспечивает удобный способ создания динамических веб-страниц, позволяя разработчикам интегрировать серверную логику с пользовательским интерфейсом.

:::note[Ссылки для изучения]

1. [Гайд по Java Server Pages](https://javarush.com/groups/posts/2655-chto-takoe-jsp-razbiraemsja-s-vozmozhnostjami-na-praktike)
   :::

---

## <strong>Зачем нужен</strong> <code>JSP</code><strong>?</strong> [#q-14bee738d69b811fac76d7855033fe1b]

<code>JSP</code> нужен для создания динамических веб-страниц, позволяя легко
встраивать Java-код в HTML и генерировать контент на сервере в ответ на запросы
клиентов.

:::note[Ссылки для изучения]

1. [Гайд по Java Server Pages](https://javarush.com/groups/posts/2655-chto-takoe-jsp-razbiraemsja-s-vozmozhnostjami-na-praktike)
   :::

---

## <strong>Расскажите об этапах (фазах) жизненного цикла</strong> <code>JSP</code> [#q-14bee738d69b81a7a794dab49f1a3360]

Жизненный цикл <code>JSP</code> включает следующие этапы&#58;

1. <strong>Перевод</strong>&#58; <code>JSP</code> страница переводится в
   сервлетный Java-класс.

1. <strong>Компиляция</strong>&#58; Сгенерированный сервлетный класс
   компилируется в байт-код.

1. <strong>Загрузка</strong>&#58; Скомпилированный сервлет загружается в
   контейнер сервлетов.

1. <strong>Инициализация</strong>&#58; Вызывается метод
   <code>jspInit&#40;&#41;</code> для инициализации <code>JSP</code>.

1. <strong>Обработка запросов</strong>&#58; Вызывается метод
   <code>&#95;jspService&#40;&#41;</code> для обработки каждого запроса.

1. <strong>Уничтожение</strong>&#58; Вызывается метод
   <code>jspDestroy&#40;&#41;</code> перед уничтожением <code>JSP</code>.

Эти этапы обеспечивают полную обработку и управление <code>JSP</code> страницей на сервере.

:::note[Ссылки для изучения]

1. [Гайд по Java Server Pages](https://javarush.com/groups/posts/2655-chto-takoe-jsp-razbiraemsja-s-vozmozhnostjami-na-praktike)
   :::

---

## <strong>Какая разница между динамическим и статическим содержимым</strong> <code>JSP</code><strong>?</strong> [#q-14bee738d69b8104b3fdd96b9701fdf1]

<strong>Статическое содержимое</strong> в <code>JSP</code> включает HTML, CSS и
JavaScript, которые отображаются клиенту без изменений, так как они прописаны
напрямую в <code>JSP</code>.

<strong>Динамическое содержимое</strong> создается с использованием встроенного
Java-кода или выражений <code>JSP</code>, которые генерируют или изменяют
контент в зависимости от логики и данных на сервере.

Пример статического содержимого&#58;

```html
<h1>Welcome to My Website</h1>
```

Пример динамического содержимого&#58;

```html
<p>The current date and time is: <%= new java.util.Date() %></p>
```

Статическое содержимое остается неизменным, тогда как динамическое содержимое создается или изменяется при каждом запросе к серверу.

:::note[Ссылки для изучения]

1. [Гайд по Java Server Pages](https://javarush.com/groups/posts/2655-chto-takoe-jsp-razbiraemsja-s-vozmozhnostjami-na-praktike)
   :::

---

## <strong>Как закомментировать код в</strong> <code>JSP</code><strong>?</strong> [#q-14bee738d69b81e7bc11ca194474820e]

В <code>JSP</code> можно использовать три типа комментариев&#58;

1. <strong>HTML-комментарии</strong>&#58; Видны в исходном коде страницы,
   отправленной клиенту.

   ```java
   <!-- HTML comment -->
   ```

1. <strong>JSP-комментарии</strong>&#58; Не видны клиенту и не включаются в
   скомпилированный сервлет.

   ```java
   <%-- JSP comment --%>
   ```

1. <strong>Java-комментарии</strong>&#58; Используются внутри скриплетов и
   директив, обрабатываются как комментарии на Java.

   ```java
   <%
       // Single-line Java comment
       /* Multi-line
          Java comment */
   %>
   ```

Каждый тип комментариев имеет своё назначение и используется в зависимости от того, нужно ли скрыть комментарий от клиента или оставить его в скомпилированном коде.

:::note[Ссылки для изучения]

1. [Гайд по Java Server Pages](https://javarush.com/groups/posts/2655-chto-takoe-jsp-razbiraemsja-s-vozmozhnostjami-na-praktike)
   :::

---

## <strong>Взаимодействие</strong> <code>JSP</code> <strong>- сервлет -</strong> <code>JSP</code> [#q-14bee738d69b816aa1b2ddb1b9da95a2]

Взаимодействие <code>JSP</code> - сервлет - <code>JSP</code> обычно происходит в несколько этапов&#58;

{/* prettier-ignore */}
1. <strong>Клиент отправляет запрос</strong>&#58; Клиент (например, веб-браузер) отправляет HTTP-запрос на сервер.

1. <strong>Сервлет обрабатывает запрос</strong>&#58;

    - Сервлет получает запрос.

    - Обрабатывает его (например, получает данные из базы данных, выполняет бизнес-логику).

    - Устанавливает атрибуты в объекте <code>HttpServletRequest</code> для передачи данных.

    ```java
    public class MyServlet extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            // Логика обработки
            String data = "Some data from servlet";
            request.setAttribute("data", data);

            // Перенаправление на JSP
            RequestDispatcher dispatcher = request.getRequestDispatcher("/result.jsp");
            dispatcher.forward(request, response);
        }
    }
    ```

1. <strong>Перенаправление на JSP</strong>&#58;

    - Сервлет перенаправляет запрос и ответ на JSP-страницу с помощью <code>RequestDispatcher</code>.

1. <strong>JSP отображает результат</strong>&#58;

    - JSP получает атрибуты, установленные сервлетом.

    - Генерирует динамический HTML-контент, основываясь на переданных данных, и отправляет его клиенту.

    ```xml
    <%-- result.jsp --%>
    <html>
    <head><title>Result</title></head>
    <body>
        <h1>Processed Data</h1>
        <p>Data from servlet: ${data}</p>
    </body>
    </html>
    ```

В этом цикле сервлет обрабатывает бизнес-логику и передает результаты на <code>JSP</code>, которая отвечает за отображение данных клиенту.

:::note[Ссылки для изучения]

1. [Гайд по Java Server Pages](https://javarush.com/groups/posts/2655-chto-takoe-jsp-razbiraemsja-s-vozmozhnostjami-na-praktike)
   :::
