Servlet - Класс HttpServlet

Пакеты сервлетов определяют два абстрактных класса, которые реализуют интерфейс Servlet: класс GenericServlet (из пакета javax.servlet) и класс HttpServlet (из пакета javax.servlet.http). Эти классы предоставляют реализацию по умолчанию для всех методов интерфейса Servlet. Большинство разработчиков используют либо класс GenericServlet, либо класс HttpServlet, и замещают некоторые или все методы.

Сервлеты, работающие с клиентами через Web, обычно расширяют класс HttpServlet. Метод service, как правило, переопределяется, чтобы иметь возможность различать стандартные методы запросов, получаемые от Web-браузера клиента. Двумя наиболее распространенными типами запросов HTTP (их также называют методами запросов) являются get и post. Запрос get получает (или извлекает) информацию. Запрос post помещает (или отправляет) данные на сервер. Типичное применение метода post - отправка на сервер информации для аутентификации, или данных из формы, в которую пользователь ввел информацию.

В классе HttpServlet определены методы doGet и doPost для реакции на запросы типа get и post клиента. Эти методы вызываются методом service класса HttpServlet, который, в свою очередь, вызывается при поступлении запроса на сервер. Метод service сначала определяет тип запроса, а затем вызывает соответствующий метод. Имеются и другие, менее употребительные типы запросов, но в данной статье они не рассматриваются.

Методы doGet и doPost принимают в качестве параметров объекты HttpServletRequest и HttpServletResponse, которые дают возможность осуществлять взаимодействие между клиентом и сервером. Методы интерфейса HttpServletRequest облегчают доступ к данным запроса. Методы интерфейса HttpServletResponse облегчают возврат результатов Web-клиенту в виде HTML.

Интерфейс HttpServletRequest

При каждом вызове методы doGet и doPost класса HttpServlet принимают в качестве параметра объект, который реализует интерфейс HttpServletRequest. Web-сервер, который исполняет сервлет, создает объект HttpServletRequest и передает его методу service сервлета (который в свою очередь передает его методу doGet или doPost). Данный объект содержит запрос, поступивший от клиента.

Имеется множество методов, дающих возможность сервлету обрабатывать клиентский запрос. Некоторые из этих методов принадлежат интерфейсу ServletRequest - интерфейсу, который расширяется интерфейсом HttpServletRequest.
Ряд ключевых методов, использованных в примерах, представлены в таблице. Полный список методов интерфейса HttpServletRequest можно найти в документации компании Sun.

МетодОписание
String getParameter(String name) Получение из запроса значения параметра. Наименование параметра определено значением name.
Enumeration getParameterNames() Получение из запроса имен всех параметров.
String[ ] getParameterValues(String name) Для параметра с несколькими значениями данный метод возвращает строковый массив.
Cookie[ ] getCookies () Получение массива объектов Cookie, сохраненных на компьютере клиента. Cookie могут быть использованы для уникальной идентификации клиента сервером.
HttpSession getSession(boolean create) Возвращает объект HttpSession текущего сеанса клиента. Если параметр create равен true и объект HttpSession не существует, то создается новый объект HttpSession.

Интерфейс HttpServletResponse

При каждом обращении к сервлету методы doGet и doPost класса HttpServlet принимают объект, который реализует интерфейс HttpServletResponse. Web-сервер, который исполняет сервлет, создает объект HttpServletResponse и передает его методу service сервлета (который в свою очередь передает его методу doGet или doPost). Объект HttpServletResponse описывает ответ клиенту.

Имеется множество методов, дающих возможность сервлету сформировать ответ клиенту. Некоторые из этих методов принадлежат интерфейсу ServletResponse - интерфейсу, который расширяется интерфейсом HttpServletResponse. Ряд ключевых методов, использованных в примерах, представлены в таблице. Полный список методов интерфейса HttpServletResponse можно найти в документации компании Sun.

МетодОписание
void addCookie (Cookie cookie) Метод используется для добавления Cookie в заголовок ответа клинту. Установленный максимальный возвраст Cookie, а также разрешение клиентом хранения Cookie определяют, будут ли Cookies сохранены на клиенте и время их хранения.
ServletOutputStream getOutputStream() Получение бинарного потока вывода для отправления бинарных данных клиенту.
PrintWriter getWriter Получение символьного потока вывода для отправления текстовых данных клиенту.
void setContentType(String type) Определение MIME-типа ответа браузеру. MIME-тип помогает браузеру определить, как отображать данные. Например, MIME-тип "text/html" указывает, что ответ является HTML-документом, поэтому браузер отображает HTML-страницу.