Главная » Java, Web » API для работы с сервлетами

0

Программный интерфейс для работы с сервлетами представлен в пакете javax.servlet. Все сервлеты прямо или опосредованно должны имплемен- тировать интерфейс javax.servlet.servlet. Наиболее часто используемые классы и интерфейсы отражены в табл. 4.1.

Таблица 4.1. Наиболее часто используемые классы и интерфейсы

при работе с сервлетами

Название

Класс или

Описание

 

интерфейс

 

GenericServlet

Класс

Независимый от протокола сервлет

Таблица 4.1 (окончание)

Название

Класс или интерфейс

Описание

RequestDispatcher

Интерфейс

Объект, получающий клиентские запросы и посылающий их ресурсам, например, сервлету, HTML-файлу, JSP-файлу на сервере

Servlet

Интерфейс

Методы, которые может имплементиро- вать сервлет

ServletConfig

Интерфейс

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

ServletContext

Интерфейс

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

ServletException

Класс

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

ServletInputStream

Класс

Поток ввода для чтения двоичных данных запроса клиента, в том числе метод readLine для чтения данных построчно

ServletOutputStream

Класс

Поток вывода для отправки двоичных данных клиенту

ServletRequest

Интерфейс

Задает объект для работы с запросами клиента

ServletResponse

Интерфейс

Создание объекта для отправки ответа клиенту

SingleThreadModel

Интерфейс

Для того чтобы сервлет мог обрабатывать только один запрос

UnavailableException

Класс

Определяет класс ошибки для того, чтобы сообщить, что сервлет временно или постоянно недоступен

Пакет servlet.HTTP

Для того чтобы иметь возможность работать с некоторыми элементами, поддерживаемыми в протоколе HTTP, сервлет создается на основе пакета javax.serviet.http. Такой сервлет может получать HTTP-запросы с использованием стандартных методов, обрабатывать и посылать ответ. Методы запросов следующие:

?       GET

?       POST

?       PUT

?       DELETE

?       HEAD

?       TRACE

?       CONNECT

?       OPTIONS

В классе HttpServlet эти методы имплементированы. Первое, что мы должны сделать, — это создать сервлет на основе класса HttpServlet и переопределить метод doGeto и/или метод doPost(). Затем нужно будет переопределить методы doPuto и doDeiete (). При использовании мастера создания сервлетов в J Builder (среда программирования на языке Java от компании Borland) можно просто выбрать переопределяемые методы, а мастер сам предложит заготовки кода.

В табл. 4.2 приведены наиболее часто используемые классы и интерфейсы пакета javax.servlet.http.

Таблица 4.2. Часто используемые классы и интерфейсы пакета j avax. servlet. http


Имя

Класс или интерфейс

Описание

Cookie

Класс

Создает cookies (информация, посылаемая браузеру, хранимая браузером и затем вновь отправляемая браузером серверу)

HttpServlet

Класс

Абстрактный класс для создания сервлетов

HttpServletRequest

Интерфейс

Создан на основе интерфейса

ServletRequest для работы с информацией от клиентских запросов

HttpServletResponse

Интерфейс

Создан на основе интерфейса

Servlet Response для отправки ответов клиенту

HttpSession

Интерфейс

Интерфейс для работы с сессиями. Идентификация пользователя, которая сохраняется в процессе перехода с одной Web-страницы на другую

Таблица 4.2 (окончание)

Имя

Класс или интерфейс

Описание

HttpSessionBindingEvent

Класс

Посылается объекту, имплементи- рующему интерфейс

HttpSessionBindingListener при связывании или освобождении объекта от сессии

HttpSessionBindingListener

Интерфейс

Приводит к тому, что объекту сообщается о том, связывается ли он с сессией или освобождается от сессии

Жизненный цикл сервлета

Интерфейс javax. servlet. Servlet содержит методы, которые используются сервлетом в процессе организации его жизненного цикла. Основные этапы жизни сервлета следующие:

?       создание сервлета и вызов метода init (), при помощи которого инициализируется сервлет;

?       обращение к методу service ();

?       вывод сервлета из обращения, обращение к методу destroy о, сбор мусора.

Создание и инициализация сервлета

При старте контейнера сервлета или тогда, когда сервлет должен отвечать на запрос, контейнер вызывает метод init (). Этим он сообщает сервлету о том, что тот начинает работать (вступает в активную фазу). Метод init () вызывается только один раз. Выполнение метода inito должно быть завершено прежде, чем сервлет получит запрос. Параметр servietconfig в методе inito — это объект, который содержит информацию о конфигурации и инициализации сервлета. После инициализации сервлета эта информация доступна и может быть получена при помощи метода getServletConfig().

Обработка клиентских запросов

Контейнер сервлета вызывает метод service () с помощью которого организуется отправка ответов на клиентские запросы. Объекты запроса и ответа передаются в качестве параметров методу service () после получения клиентского запроса. Сервлет может также имплементироватъ интерфейсы ServietRequest И ServletResponse, которые ПОЗВОЛЯТ ему обращаться К параметрам запроса и посылаемым в ответ данным. Параметры запроса содержат данные и методы, определенные в протоколе. Данные ответа состоят из заголовка ответа и статус-кода.

Многопоточность и сервлеты

Как правило, сервлеты обладают свойством многопоточности, что позволяет одному и тому же сервлету обрабатывать несколько запросов одновременно. Разработчик должен специально позаботиться о том, чтобы ресурсы, используемые при работе потоков (файлы, сетевые соединения, переменные) использовались безопасным способом. Существует возможность создания сервлета, который может работать только с одним потоком. Для этого следует использовать интерфейс singieThreadModei. При этом сервлет будет способен обрабатывать только один запрос в каждый конкретный момент. Однако на практике эта возможность используется довольно редко.

Сервлеты и HTML

С помощью сервлетов легко создавать HTML-текст. HTML-код создается динамически в процессе работы сервлета. При этом нет необходимости использовать языки сценариев, скрипты. Если, например, Web-cepeep располагает средствами SSI (Server-Side Include — вставка программных элементов на стороне сервера), то для обработки HTML-текста можно использовать фрагмент, обозначенный ярлыком <serviet>. При этом соответствующий файл, содержащий этот фрагмент, будет иметь расширение .shtmi. Ярлык <serviet> сообщает серверу, что следует загрузить и выполнить сервлет, инициализировав его соответствующими параметрами конфигурации. Результат работы сервлета будет получен в виде отформатированного при помощи HTML-ответа. Как и в ярлыке <appiet>, мы имеем возможность указать местоположение класса сервлета, задав значения атрибутов class и codebase в ярлыке <servlet>. Параметр codebase указывает каталог, в котором располагается файл Java-iaiacca, параметр code задает имя Java-iaiacca.

Пример использования ярлыка <serviet>: <servlet> codebase=""

code="dbServlet.Servletl.class" paraml=in param2=out </servlet>

Сервлеты и HTTP

Сервлеты могут быть использованы для обработки запросов, которые передаются по протоколу HTTP. Они могут поддерживать любые методы, указанные в протоколе. Они могут осуществлять переадресацию запросов, посылать сообщения об ошибках. Сервлеты могут работать с параметрами, посылаемыми в составе форм, при этом сервлет может получать методы и адреса наряду с именами и значениями параметров:

String method = request.getMethod(); String uri = request.getRequestURI(); String name = request.getParameter("name"); String phone = request.getParameter("phone") ; String address = request.getParameter("address") ; String city = request.getParameter("city");

Сервлет может работать с mime-типами, что позволяет ему получать в качестве параметров соответствующую запросу информацию, и посылать в качестве ответа такой тип информации, который необходим.

Как пользоваться сервлетами

Сервлет можно использовать различными способами.

?       Как часть системы обработки клиентской информации (например, заказов) при работе с базами данных для получения данных из форм (ярлык <form> HTML).

?       В сочетании с апплетами как составная часть сети интранет.

?       Как часть многопользовательской системы, например, системы сообщений.

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

?       Как HTML-ориентированный сервлет для форматирования динамической информации, отправляемой в ответ на запрос браузера, в том числе, для работы с рекламными баннерами.

Размещение сервлетов

Сервлет может работать самостоятельно на сервере, а также может быть размещен в качестве модуля J2EE. Такой модуль состоит из самого сервлета или нескольких компонентов одного типа (например, Web-компонентов, компонентов EJB, клиентов и т. п.), которые описываются одним дескриптором размещения.

 Использование утилиты создания сервлетов на основе интернет-компонентов InternetBeans Express

Технология интернет-компонентов (это не то же самое, что серверные компоненты EJB) объединяет сервлеты и серверные страницы Java, облегчая процесс создания приложений. Интернет-компоненты InternetBeans Express представляют собой набор компонентов и библиотеку ярлыков JSP, которые позволяют быстро и легко создавать Web-приложения, уделяя значительное внимание уровню представления приложения пользователю. Они используют статические страницы-шаблоны и вносят в них динамическое содержание, а затем представляют их клиенту и получают данные от клиента. Например, можно использовать InternetBeans Express для работы с компонентами, которые созданы для легкой работы при создании приложений, позволяющих зарегистрировать пользователя на сайте, или для создания JSP, отображающей результат поиска. InternetBeans Express содержит встроенную поддержку для работы с данными с помощью таких инструментов, как DataExpress, в частности с DataSets и DataModules. Интернет- компоненты могут быть использованы при работе с другими источниками данных, а также при работе с серверными компонентами EJB. Классы и интерфейсы Интернет-компонентов InternetBeans Express можно подразделить на три категории:

?      интернет-компоненты InternetBeans, которые являются компонентами, динамически создающими ответы на запросы HTTP;

?      обработчики ярлыков JSP, которые вызывают интернет-компоненты внутри себя;

?      поддержка работы с данными.

Источник: Будилов В. А. Интернет-программирование на Java. — СПб.: БХВ-Петербург, 2003. — 704 е.: ил.

По теме:

  • Комментарии