410013796724260
• Webmoney
R335386147728
Z369087728698
Синтаксис страницы JSPСтраницы JSP имеют комбинированный синтаксис : объединение стандартного синтаксиса, соответствующего спецификации HTML, и синтаксиса JSP, определенного спецификацией Java Server Pages. Синтаксис JSP определяет правила записи страниц JSP, состоящих из стандартных тегов HTML и тегов JSP. Страницы JSP, кроме HTML-тегов, содержат теги JSP следующих категорий:
JSP директивыJSP директивы обеспечивают глобальную информацию, касающихся конкретных запросов, направляемых в сервер, и предоставляют информацию, необходимую на стадии трансляции. Директивы всегда помещаются в начале JSP-страницы до всех остальных тегов, чтобы parser (анализатор) JSP при разборе текста в самом начале выделил глобальные инструкции. Таким, образом, JSP Engine (среда исполнения JSP), анализируя код, создает из JSP сервлет. Директивы представляют собой сообщения контейнеру JSP. Синтаксис JSP директив выглядит следующим образом: <%@ директива имяАтрибута="значение" %> Синтаксис задания директив на XML: <jsp:directive.директива имяАтрибута="значение" /> JSP директива может иметь несколько атрибутов. В этом случае директива может быть повторена для каждого из атрибутов. В то же время пары "имяАтрибута=значение" могут располагаться под одной директивой с пробелом в качестве разделителя. Существует три типа директив :
JSP директива pageJSP директива page определяет свойства страницы JSP, которые воздействуют на транслятор. Порядок следования атрибутов в директиве page не имеет значения. Нарушение синтаксиса или наличие нераспознанных атрибутов приводит к ошибке трансляции. Примером директивы page может служить следующий код: <%@ page buffer="none" isThreadSafe="yes" errorPage="/error.jsp" %> Директива page объявляет, что данная страница JSP не использует буферизацию, что возможно одновременное обращение к данной странице JSP многих пользователей, и что поддерживается страница ошибок с именем error.jsp. JSP директива page может содержать информацию о странице: <%@ page info = "JSP Sample 1" %> Список возможных атрибутов директивы page представлен в таблице.
JSP директива taglibJSP директива taglib объявляет, что данная страница JSP использует библиотеку тегов, уникальным образом идентифицируя ее с помощью URI, и ставит в соответствие префикс тега, с помощью которого возможны действия в библиотеке. Если контейнер не может найти библиотеку тегов, возникает фатальная ошибка трансляции. Директива taglib имеет следующий синтаксис: <%@ taglib uri="URI включаемой библиотеки тегов" prefix="имяПрефикса" %> Префикс "имяПрефикса" используется при обращении к библиотеке. Пример использования библиотеки тегов mytags: <%@ taglib uri="http://www.taglib/mytags" prefix="customs" %> . . . <customs:myTag> В данном примере библиотека тегов имеет URI-адрес "http://www.taglib/mytags", в качестве префикса назначена строка customs, которая используется в странице JSP при обращении к элементам библиотеки тегов. JSP директива includeJSP Директива include позволяет вставлять текст или код в процессе трансляции страницы JSP в сервлет. Синтаксис директивы include имеет следующий вид: <%@ include file="Относительный URI включаемой страницы" %> Директива include имеет один атрибут - file. Она включает текст специфицированного ресурса в файл JSP. Эту директиву можно использовать для размещения стандартного заголовка об авторских правах на каждой странице JSP: <%@ include file="copyright.html" %> Контейнер JSP получает доступ к включаемому файлу. Если включаемый файл изменился, контейнер может перекомпилировать страницу JSP. Директива include рассматривает ресурс, например, страницу JSP, как статический объект. Заданный URI обычно интерпретируется относительно JSP страницы, на которой расположена ссылка, но, как и при использовании любых других относительных URI, можно задать системе положение интересующего ресурса относительно домашнего каталога WEB-сервера добавлением в начало URI символа "/". Содержимое подключаемого файла обрабатывается как обычный текст JSP и поэтому может включать такие элементы, как статический HTML, элементы скриптов, директивы и действия. Многие сайты используют небольшую панель навигации на каждой странице. В связи с проблемами использования фреймов HTML часто эта задача решается размещением небольшой таблицы сверху или в левой половине страницы, HTML код которой многократно повторяется для каждой страницы сайта. Директива include - это наиболее естественный способ решения данной задачи, избавляющий разработчика от кошмара рутины копирования HTML в каждый отдельный файл. Поскольку директива include подключает файлы в ходе трансляции страницы, то после внесения изменений в панель навигации требуется повторная трансляция всех использующих ее JSP страниц. Если же подключенные файлы меняются довольно часто, можно использовать действие jsp:include, которое подключает файл в процессе обращения к JSP странице. JSP директива declarationsJSP директива declarations предназначены для определения переменных и методов на языке скриптов, которые в дальнейшем используются на странице JSP. Синтаксис declarations имеет следующий вид : <%! код Java %> declarations располагаются в блоке объявлений, а вызываются в блоке выражений страницы JSP. Код в блоке объявлений обычно пишется на языке Java, однако серверы приложений могут использовать синтаксис и других скриптов. Объявления иногда используются для того, чтобы добавить дополнительную функциональность при работе с динамическими данными, получаемыми из свойств компонентов JavaBeans. Примеры объявлений представлены в таблице.
Declarations может содержать несколько строк, как например, в приведенном ниже коде вычисления значения функции fact (int n), которая должна быть равна 1 при n меньше 2 и n! при положительном значении n; <%! public static int fact (int n) { if (n <= 1) return 1; else return n * fact (n - 1); } %> declarations не производят никакого вывода в стандартный выходной поток out. Переменные и методы, декларированные в объявлениях, инициализируются и становятся доступными для скриптлетов и других объявлений в момент инициализации страницы JSP. Скриптлеты scriptletsscriptlets включают различные фрагменты кода, написанного на языке скрипта, определенного в директиве language. Фрагменты кода должны соответствовать синтаксическим конструкциям языка скриптлетов, т.е., как правило, синтаксису языка Java. scriptlets имеют следующий синтаксис: <% текст скриптлета %> Эквивалентом синтаксиса скриптлета для XML является: <jsp:scriptlet> текст скриптлета </jsp:scriptlet> Если в тексте скриптлета необходимо использовать последовательность символов %> именно как сочетание символов, а не как тег - признак окончания скриптлета, вместо последовательности %> следует использовать следующее сочетание символов %\>. В спецификации JSP приводится простой и понятный пример скриптлета, обеспечивающего динамическое изменение содержимого страницы JSP в течение дня. <% if (Calendar.getInstance ().get (Calendar.AM_PM) == Calendar.AM) {%> Good Morning <% } else { %> Good Afternoon <% } %> Необходимо отметить, что код внутри скриплета вставляется в том виде, как он записан, и весь статический HTML-текст (текст шаблона) до или после скриплета конвертируется при помощи оператора print. Это означает что скриплеты не обязательно должны содержать завершенные фрагменты на Java, и что оставленные открытыми блоки могут оказать влияние на статический HTML-текст вне скриплета. Скриплеты имеют доступ к тем же автоматически определенным переменным, что и выражения. Поэтому, например, если есть необходимость вывести какую-либо информацию на страницу, необходимо воспользоваться переменной out. <% String queryData = request.getQueryString (); out.println ("Дополнительные данные запроса: " + queryData); %> Выражения expressionsВыражения expressions в странице JSP - это исполняемое выражение, написанное на языке скрипта, указанного в объявлении language (как правило Java). Результат выражения JSP, имеющий обязательный тип String, направляется в стандартный поток вывода out с помощью текущего объекта JspWriter. Если результат выражения не может быть приведен к типу String, возникает либо ошибка трансляции, если проблема была выявлена на этапе трансляции, либо возбуждается исключение ClassCastException, если несоответствие было выявлено в процессе выполнения запроса. Выражение имеет следующий синтаксис: <%= текст выражения %> альтернативный синтаксис для JSP expressions при использовании XML : <jsp:expression> текст выражения </jsp:expression> Порядок выполнения expressions на странице JSP слева-направо. Если выражение появляется более чем в одном атрибуте времени выполнения, то оно выполняется слева-направо в данном теге. Выражение должно быть полным выражением на определенном скрипте (как правило Java). expressions выполняются во время работы протокола HTTP. Значение выражения преобразуется в строку и включается в соответствующую позицию файла JSP. Выражения обычно используются для того, чтобы вычислить и вывести на экран строковое представление переменных и методов, определенных в блоке объявлений страницы JSP или полученных от компонентов JavaBeans, которые доступны из JSP. Следующий код expressions служит для отображения даты и времени запроса страницы: Текущее время: <%= new java.util.Date () %> Для того чтобы упростить expressions существует несколько заранее определенных переменных, которые можно использовать. Наиболее часто используемые переменные:
Комментарии JSPВ страница JSP можно использовать два типа комментариев:
Выводимый комментарий - это такой стиль комментирования, при котором комментарий выводится в выходной поток и отображается в браузере. Синтаксис комментариев данного типа следующий: <!-- Текст комментария --> Можно также использовать комментарии с динамическим содержимым. Для этого внутрь закомментированного блока должен быть встроен тег скриптлета, например: <!-- Начало комментария <%= expression %> продолжение комментария --> Закомментированный блок - это стиль комментирования, при котором тело закомментированного блока полностью игнорируется, не выводится в выходной поток и, следовательно, не отображается в браузере. Этот стиль обычно используется для поясняющих записей, касающихся фрагментов программного кода страницы JSP.Закомментированный блок имеет следующий синтаксис: <%-- Текст комментария --%> |