Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции 2025. Java. Белая / Ответы на билеты. Java

.pdf
Скачиваний:
4
Добавлен:
02.01.2026
Размер:
4.52 Mб
Скачать

Характеристика

(

 

)

(

 

 

 

 

 

 

 

Когда

Создается контейнером при инициализации

Создается контей

создается

каждого сервлета (перед вызовом

запуске (разверт

 

 

).

 

приложения.

 

 

 

 

Время жизни

Существует, пока существует экземпляр

Существует, пока

 

сервлета.

 

 

приложение разве

 

 

 

 

запущено.

 

 

 

 

 

 

 

Параметры

 

 

 

 

 

инициализации

Доступ к параметрам, заданным для этого

Доступ к парамет

 

 

конкретного сервлета (через

 

для всего веб-пр

 

в

или

).

(через

 

 

 

 

 

).

 

 

 

 

 

Атрибуты

Не предоставляет прямого механизма для

 

 

 

хранения атрибутов, специфичных для

 

 

 

 

.

 

Позволяет хранит

 

 

 

 

 

 

 

 

использовать объ

 

 

 

 

(атрибуты) на уро

 

 

 

 

приложения.

 

 

 

 

 

 

Доступ к

 

— предоставляет

Сам является

 

 

доступ к объекту

.

 

 

 

 

 

 

Имя сервлета

 

— возвращает имя, данное

Не предоставляет

 

этому сервлету.

 

метода для получ

 

 

 

 

конкретного сервл

 

 

 

 

 

Доступ к

Косвенно, через

 

Напрямую:

 

ресурсам

 

 

,

 

 

приложения

и т.д.

 

 

 

, и

 

 

 

 

 

Логирование

Косвенно, через

.

Напрямую:

 

 

 

 

 

.

 

 

 

 

 

Получение

Передается в метод

 

Можно получить и

 

сервлета. Можно получить через

 

 

 

 

и его

(

 

 

подклассах).

 

 

из

 

 

 

 

 

(

 

 

 

 

 

из

 

 

 

 

 

(

 

 

 

 

 

из

,

 

 

 

 

слушателях.

 

 

 

 

 

 

 

Аналогия:

— это как "город" или "университет". Он один для всех жителей/ студентов. В нем есть общие ресурсы (библиотека, стадион), общие правила и объявления для всех.

— это как "личный кабинет" или "студенческий билет" для конкретного сервлета (жителя/студента). Он содержит информацию, специфичную только для этого сервлета (например, его имя, его личные настройки), а также "ключ" для доступа к общим ресурсам города/университета ().

Кратко:

: Один на веб-приложение. Глобальный контекст, общие ресурсы, параметры приложения.

: Один на сервлет. Конфигурация конкретного сервлета, доступ к его параметрам инициализации, способ получить .

Пример, показывающий разницу:

Предположим, у нас есть (или эквивалентные аннотации):

В :

В :

Оба сервлета получают доступ к одному и тому же значению через , но каждый имеет свой уникальный параметр через свой

.

103. Для чего нужен интерфейс ServletResponse?

— это интерфейс в Java Servlet API, который

определяет объект для формирования и отправки ответа клиенту в ответ на его запрос. Контейнер сервлетов создает объект, реализующий (или его подтип для HTTP-протокола), и передает его в метод сервлета.

Основные цели и функции :

1. Формирование тела ответа (Response Body):

Предоставляет механизмы для записи данных, которые будут составлять тело ответа, отправляемого клиенту.

Методы:

: Возвращает объект

, который используется для отправки символьных (текстовых) данных клиенту (например, HTML, XML, JSON, обычный текст). Перед использованием этого метода обычно нужно установить тип контента и кодировку символов.

:

Возвращает объект , который используется для отправки бинарных данных клиенту (например, изображения, PDFфайлы, аудио/видео потоки).

Важно: Для одного ответа можно использовать только один из этих методов ( или ). Попытка вызвать оба приведет к . Выбор зависит от типа данных, которые вы отправляете.

2. Установка метаданных ответа:

Позволяет сервлету устанавливать различную метаинформацию об ответе, которая будет включена в HTTP-заголовки (в случае ).

Методы:

: Устанавливает MIME-тип контента ответа (например, , , ). Это важно, чтобы клиент (браузер) знал, как интерпретировать полученные данные.

: Устанавливает кодировку символов для тела ответа (например, ). Рекомендуется устанавливать до вызова . Часто объединяет обе настройки.

или

: Устанавливает длину тела ответа в байтах. Это может помочь клиенту и промежуточным прокси-серверам оптимизировать получение данных.

: Устанавливает предпочтительный размер буфера для тела ответа.

: Принудительно отправляет содержимое буфера клиенту.

: Возвращает , если часть ответа (заголовки или тело) уже была отправлена клиенту. После того как ответ "скоммичен", нельзя изменять заголовки или вызывать некоторые методы (например, ).

: Очищает любые данные из буфера ответа, а также заголовки и код состояния. Может быть вызван, только если ответ еще не скоммичен.

: Очищает только содержимое буфера, не затрагивая заголовки и код состояния.

3. Управление локалью:

Метод: : Устанавливает локаль ответа, что может влиять на кодировку символов или другие аспекты, если контейнер или клиент учитывают это.

Метод: .

Подтип :

Для HTTP-запросов контейнер передает сервлету объект, реализующий , который расширяет и добавляет методы, специфичные для HTTP-протокола:

Установка кода состояния HTTP:

(например, , , )

Работа с HTTP-заголовками:

Работа с Cookies:

Перенаправление (Redirect):

Кодирование URL:

(для перезаписи URL, если cookies отключены, для отслеживания сессии)

Пример использования :

В итоге, (и его HTTP-специфичный подтип ) является ключевым объектом, который сервлет использует для конструирования и отправки ответа обратно клиенту. Он предоставляет методы для установки типа контента, кодировки, заголовков, кода состояния и, самое

главное, для записи самого тела ответа.

104. Для чего нужен интерфейс ServletRequest?

— это интерфейс в Java Servlet API, который

определяет объект, предоставляющий клиентскую информацию сервлету.

Контейнер сервлетов создает объект, реализующий (или его подтип для HTTP-протокола), для каждого входящего запроса и передает

его в метод сервлета.

Основные цели и функции :

1. Получение информации о запросе:

Предоставляет доступ к данным, отправленным клиентом, и к информации о самом запросе.

Методы:

: Возвращает значение параметра запроса по его имени. Параметры могут быть переданы в строке запроса URL (для GET) или в теле запроса (для POST, обычно с ). Возвращает , если параметр не найден.

: Возвращает массив строк, если параметр может иметь несколько значений (например, из нескольких чекбоксов с одинаковым именем).

: Возвращает перечисление всех имен параметров в запросе.

: Возвращает , где ключи — это имена параметров, а значения — массивы строк их значений.

: Возвращает имя и версию протокола, используемого в запросе (например, ).

: Возвращает схему URL (например, , ).

: Возвращает имя хоста сервера, получившего запрос.

: Возвращает номер порта, на котором сервер получил запрос.

: Возвращает IP-адрес клиента, отправившего запрос.

: Возвращает полное имя хоста клиента.

или : Возвращает длину тела запроса в байтах, или -1, если длина неизвестна. : Возвращает MIME-тип тела запроса (например, , , ).

: Возвращает имя кодировки символов, используемой в теле запроса.

: Устанавливает кодировку символов, которая будет использоваться для чтения параметров запроса. Должна вызываться до чтения параметров или тела запроса.

2. Чтение тела запроса (Request Body):

Предоставляет доступ к потокам для чтения бинарных или символьных данных из тела запроса.

Методы:

: Возвращает

для чтения бинарных данных из тела запроса.

: Возвращает

для чтения символьных данных из тела запроса, используя кодировку, указанную в .

Важно: Тело запроса можно прочитать только один раз. Попытка вызвать

после (или наоборот), или вызвать один из них несколько раз, приведет к .

3. Управление атрибутами запроса (Request Attributes):

предоставляет хранилище (в виде пар ключ-значение), где компоненты веб-приложения (например, фильтры, сервлеты, JSP) могут

хранить и передавать объекты (атрибуты) в рамках одного цикла обработки запроса. Атрибуты запроса существуют только на время жизни одного запроса.

Методы:

: Устанавливает атрибут.

: Получает атрибут. : Удаляет атрибут.

: Возвращает имена всех атрибутов.

Это часто используется для передачи данных от сервлета к JSP при использовании паттерна MVC (например,

).

4. Диспетчеризация запросов:

Метод: : Возвращает

для передачи управления другому ресурсу (сервлету, JSP, HTML) внутри того же приложения.

5. Доступ к :

Метод: : Возвращает для данного веб-приложения.

Подтип :

Для HTTP-запросов контейнер передает сервлету объект, реализующий , который расширяет и добавляет методы, специфичные для HTTP-протокола:

Информация о HTTP-методе:

(например, "GET", "POST").

Информация о пути и URL:

(часть URL от имени хоста до строки запроса).

(полный URL запроса, без строки запроса).

(контекстный путь приложения).

(часть URL, которая сопоставлена с сервлетом).

(дополнительная информация о пути после пути сервлета).

(часть URL после ).

Работа с HTTP-заголовками:

(если заголовок может иметь несколько значений)

Работа с Cookies:

Работа с сессиями:

Информация о пользователе (для аутентификации):

Поддержка (для загрузки файлов, с Servlet 3.0+):

Пример использования :