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

Синтаксис выражений: <%  =  выражение  %>.

В языке XML выражение имеет форму <jsp:expression> выражение

</jsp: expression>.

Пример выражения:

Посещений:   <%   =  results   %>

Скриптлеты

Скриптлет (scriptlet) представляет собой "мини-сценарий", помещенный на страницу JSP. Он может содержать, в частности, объявления переменных и методов, выражения и операторы. Как и выражения, скриптлеты выполняются на этапе обработки запроса, а их результат помещается в объект ответа.

Синтаксис объявления скриптлета: <%   код  Java  %>.

Эквивалентный синтаксис XML: <jsp: scriptlet>  код Java  </ jsp: scriptletx

Пример скриптлета.

:

<%   int  guessNum =  request.getParameter   ("GUESS");

if   (guessNum == WinningNum)    {   %/>

Поздравляем -  Вы  выиграли!!!

<%   }

else

{   %/>

Очень жаль - попробуйте еще раз.

<% } %/>

Объекты, неявно доступные для JSP

Каждый компонент JSP имеет доступ к некоторым объектам без необходимости явно объявлять их в компоненте. Эти объекты создаются контейнером для использования в пределах JSP. Разработчикам не мешает знать об их существовании. Следующие объекты могут быть вызваны в JSP.

·  requestпредставляет поступивший запрос, который инициализировал обработку.

·  responseпредставляет ответ на текущий запрос.

·  pageContextпредоставляет доступ к атрибутам страницы и методам-полуфабрикатам.

·  session— объект сеанса для текущего клиента.

·  application— указывает контекст данного компонента.

·  out— объект для записи в поток вывода.

·  configидентифицирует конфигурацию сервлета для данного JSP.

·  pageуказывает на сам текущий JSP.

·  exceptionидентифицирует исключительную ситуацию, которая привела к выводу страницы ошибки.

Библиотеки тегов

Одна из проблем при достижении целей технологии JSP состоит в уменьшении сложности программной логики, с которой должны иметь дело разработчики содержимого.

В спецификации JSP 1.1 появилась возможность создания специализированных библиотек тегов JSP, что позволяет уменьшить сложность. Эти библиотеки предназначены для того, чтобы разработчик Web-представления имел в своем распоряжении простые и удобные специализированные теги, через которые можно вызывать сложную логику.

Класс обработчика тега

Специализированный тег имеет связанный с ним класс обработчика тега. Этот класс должен сообщать системе, что следует делать при появлении данного тега в документе. Файл класса содержит код Java, который выполняется при запросе.

Теги могут иметь любое количество атрибутов и тело тега, но это не обязательно. Наиболее простой тег не содержит ни атрибутов, ни тела.

В следующем списке приведены примеры тега без тела; тега без тела, но с атрибутами и тега с атрибутами и телом.

  • Тег без тела.

<mytaglib:MyTag/>

  • Тег без тела, но с атрибутом.

<mytaglib:MyTag  count="ll"/>

  • Тег с телом и атрибутом.

<mytaglib:ltfyTag count="10">

Это тело тега. Оно может  содержать действия, директивы и т.д.

</mytaglib:MyTag>

Для тегов без тела в классе обработчика должен быть реализован метод doStartTag. Теги без тела полезно применять, когда разработчик представления должен иметь доступ лишь к относительно стабильному содержимому (т.е. не особенно меняющемуся от одного вхождения тега к другому).

Теги без тела, но с атрибутами можно применять для настройки результатов обработки. В таких случаях в классе обработчика тега должен быть также реализован метод установки значения атрибута с именем этого атрибута и префиксом set. В результате можно задавать подходящие значения атрибута (атрибутов) перед тем, как вызывать метод doStartTag, и получать в зависимости от этих значений разные результаты.

Для тегов с телом класс обработчика должен также реализовать метод doEndTag. Единственная задача этого метода — указывать системе, что надо продолжить работу после обработки тега, однако в нем можно реализовать и другие действия, например аварийное прекращение выполнения JSP.