logo
Хабибуллин

Цикл работы сервлета

Результаты своей работы метод service() заносит в объект типа ServletResponse, ссылка на который предоставлена вторым аргументом метода service().

Методы setContentType(String) и setLocale(Locale) устанавливают в заголовок ответа

MIME-тип и локаль тела ответа, а метод setContentLength(int) записывает длину тела ответа. Если надо установить только кодировку символов в ответе, то можно восполь-

зоваться методом setCharacterEncoding(String).

Тело ответа передается контейнеру через байтовый или символьный выходной поток. Байтовый поток специально разработанного класса ServletOutputStream возвращает метод

public ServletOutputStream getOutputStream();

Абстрактный класс ServletOutputStream расширяет класс OutputStream, добавляя к нему

методы print(xxx) для вывода типов boolean, char, int, long, float, double, String и методы

println(xxx) для тех же типов, добавляющие к выводимым данным символы "\r\n". Еще один метод println() без аргументов просто заносит в выходной поток символы "\r\n".

Символьный поток можно получить методом

public PrintWriter getWriter();

Именно он использован в листинге 26.2.

В пакете javax.servlet есть прямая реализация интерфейса ServletResponse — класс ServletResponseWrapper. Объект этого класса создается конструктором

public ServletResponseWrapper(ServletResponse resp);

и обладает всеми методами интерфейса ServletResponse. Разработчики, желающие расширить возможности объекта, содержащего ответ, например для создания фильтра, мо-

гут расширить класс ServletResponseWrapper.