Введение в J2EE. Что такое платформа Java 2 Enterprise Edition. Краткая история J2EE. Зачем нужна J2EE, страница 4

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

В зависимости от типа контейнера он может также предоставлять доступ к некоторым или ко всем интерфейсам API J2EE.

Все компоненты J2EE развертываются и выполняются в контейнерах какого-либо рода. Например, компоненты EJB выполняются в контейнере EJB, а сервлеты работают в Web-контейнере. Всего в J2EE имеется четыре разных вида контейнеров.

·  Контейнер приложения. Может содержать автономные приложения Java.

·    Контейнер пплета. Создает среду выполнения для аплетов.

·Web-контейнер. Может содержать Web-компоненты, такие как сервлеты и JavaServer Pages (JSP).

·    Контейнер предприятия. Может содержать компоненты EJB.

Сервлеты

Сервлеты — это Web-компоненты, которые могут генерировать динамическое содержимое для Web-страниц. это одни из наиболее часто используемых в Internet в настоящее время компонентов J2EE. Они обеспечивают эффективный механизм взаимодействия между серверной логикой приложения и клиентом, который обращается к ней через Web; по сравнению с широко распространенными скриптами CGI сервлеты решают проблемы такого взаимодействия гораздо быстрее и эффективнее.

Поскольку сервлеты вообще более просты и требуют меньшего количества ресурсов, некоторые разработчики отдают предпочтение в своих реализациях почти исключительно этим компонентам, а также JSP, а не более сложным компонентам EJB. Этот подход может быть целесообразным для очень простых программных систем предприятия, но сразу становится неэффективным, если в приложении требуется поддержка транзакций.

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

Сервлеты, работающие в контейнере сервлета (также называемом процессором серв-лета), размещаются на Web-сервере. Контейнер сервлета управляет жизненным циклом сервлета и переводит запросы Web-клиента, сделанные через такие протоколы, как HTTP, в объектные запросы. Подобным же образом контейнер переводит ответ, полученный от сервлета, и отображает объект ответа в соответствующий Web-протокол.

Компоненты JSP

JSP — это еще один тип Web-компонентов J2EE, развившийся из технологии сервлетов. По сути, отдельные части JSP компилируются в сервлеты, которые затем выполняются в среде контейнера сервлета.

Компоненты JSP были созданы с целью упростить для Web-разработчиков процесс обслуживания частей системы, которые поддерживают представление Web-страниц, избавив их от необходимости изучать традиционные методы программирования. Web-разработчики, не являющиеся программистами, обычно работают с кодом представления Web-страницы на языке HTML. Эта задача становится труднее, если код HTML генерируется операторами языка Java, содержащимися в сервлетах.

Компоненты JSP позволяют внедрять код Java в структурированный документ HTML или XML. В результате код представления можно легко обрабатывать как обычный код HTML, что позволяет отделить обязанности непрограммного обслуживания страницы от редактирования кода и т.д.

Поскольку компоненты JSP позволяют внедрять в документы HTML или XML очень сложный код Java, некоторые разработчики пробовали применять этот метод на ранних этапах развития технологии JSP. Однако в общем случае целесообразно, чтобы код Java в JSP был относительно простым.

Некоторые другие технологии Java, распространившиеся в последнее время, например JavaBeans, также подразумевают использование JSP. Они позволяют облегчить задачу представления больших объемов данных для таблиц или Web-страниц.