Компоненты Java Server Pages. Введение в JSP. Типичные области использования JSP. Архитектуры модели 1 и модели 2, страница 3

Сравнение преимуществ сервлетов и JSP в контексте определенной программной системы не всегда приводит к однозначному выбору. Целесообразно использовать сочетание обеих технологий для сбалансированности системы. Например, перед сервлетом можно поставить обязанности обработки запросов. Когда сервлет обработает запрос (самостоятельно или вместе с другими программными элементами, такими как компоненты EJB), он может передать результаты компонентуJSP, который выведет их для пользователя.

В литературе можно также встретить упоминания модели 1.5. Она напоминает модель 1-е той разницей, что большая часть логики выносится в компоненты JavaBeans, а не eJSP. Дополнительные источники информации можно найти в разделе "Литература " в конце книги.

Анатомия JSP

Компонент JSPсодержит две основные составляющие: данные шаблона и элементы JSP. Данные шаблона обслуживают статические аспекты, а элементы JSP используются для динамических аспектовJSP.

Данные шаблона

Данные шаблона включают статическое содержимое JSP в форме HTML или XML. Хотя они важны для представления JSP, но не представляют интереса с точки зрения программирования.

Данные шаблона выводятся как в результате обычных операций подстановки, так и "дословно", как часть ответа JSP.

Элементы JSP

Элементы JSP представляют часть компонента JSP, которая компилируется компилятором JSP в форму сервлета. По синтаксису элементы JSP похожи на элементы HTML: они имеют начальный и конечный теги (например, <В>полужирный текст</В>).

Вспецификации JSP определены элементы трех типов: элементы-директивы, элементы-действия и элементы сценария.

Элементы-директивы

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

<%   @имя_директивы атрибут_директивы =  "значение_атрибута"  другие пары_атрибутов_и_значений   ...   %>

Пример элемента-директивы

<% include file = "Header.jsp"   %>

Директива page и ее атрибуты предоставляют удобный механизм передачи в окружение различных сведений о конфигурации, например, об импортируемых библиотеках, типе содержимого страницы, размере буфера и т.д. За исключением атрибута import, другие атрибуты page могут быть определены в JSP только один раз.

Элементы-действия

В отличие от элементов-директив, элементы-действия выполняют свою функцию на этапе обработки запроса. Элементы-действия JSP записываются с использованием синтаксиса XML в одном из следующих форматов:

<префикс:тег  атрибут=значение  список_значений_атрибутов   .../>

или

<префикс:тег  aтpибут=значение список_значений_атрибутов>  тело

</префикс:тег>

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

<jsp:forward page="/errorPage"/>

Действия с префиксом j sp являются стандартными. Некоторые стандартные действия перечислены ниже.

·  Включение ответов, переданных другими компонентами JSP.

·  Передача ответов другим компонентам.

·  Определение и установка свойств компонента JavaBeans, находящегося на сервере.

Действия могут создавать объекты, доступные для элементов сценария через особые переменные.

Элементы сценария

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

Объявления

Объявления определяют переменные и методы. Они имеют синтаксис <% ! объявление %>, где объявление— переменная или функция, например:

<%!   private  static MyLoginCount=0;   %>

Выражения

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