В отличие от элементов директив JSP, элементы действий JSP работают на этапе обработки запроса. Элементы действий JSP записываются в синтаксисе XML.
Используйте действия JSP для динамической вставки файлов, повторного использования компонентов JavaBean, перенаправления пользователей на другие страницы и создания HTML-кода для подключаемых модулей Java.
Для элементов действия существует только один синтаксис, соответствующий стандарту XML:
<jsp:action_name атрибут="значение" />
Элементы действий — это, по сути, предопределенные функции. Спецификация JSP определяет ряд стандартных действий, которые используют JSP в качестве префикса. Доступны следующие стандартные элементы действий:
грамматика | описывать |
---|---|
jsp: включить | Импортируйте файл при запросе страницы. |
jsp:useBean | Найдите или создайте экземпляр JavaBean. |
jsp:setProperty | Установите свойства JavaBean. |
jsp:getProperty | Выведите свойства JavaBean. |
jsp: вперед | Отправьте запрос на новую страницу. |
jsp: плагин | Генерирует теги OBJECT или EMBED для плагинов Java в зависимости от типа браузера. |
jsp: элемент | Определите динамические элементы XML |
jsp: атрибут | Установите динамически определенные атрибуты элемента XML. |
jsp:тело | Устанавливает содержимое динамически определенного XML-элемента. |
jsp:текст | Использование шаблонов, которые записывают текст на страницах и документах JSP. |
Все элементы действия имеют два атрибута: атрибут id и атрибут области действия.
идентификатор атрибута:
Атрибут id — это уникальный идентификатор элемента действия, на который можно ссылаться на странице JSP. Значение id, созданное элементом действия, можно вызвать через PageContext.
атрибут области:
Этот атрибут используется для определения жизненного цикла элемента действия. Атрибут id напрямую связан с атрибутом области, а атрибут области определяет срок жизни связанного объекта id. Атрибут области имеет четыре возможных значения: (a) страница, (b) запрос, (c) сеанс и (d) приложение.
Элемент действия <jsp:include> используется для включения статических и динамических файлов. Это действие вставляет указанный файл в генерируемую страницу. Формат синтаксиса следующий:
<jsp:include page="относительный URL"lush="true" />
Директива include была представлена ранее. Она вводит файлы, когда файл JSP преобразуется в сервлет. Действие jsp:include здесь другое. Время вставки файла — это момент запроса страницы.
Ниже приведен список свойств, связанных с действием включения.
свойство | описывать |
---|---|
страница | Относительный URL-адрес, содержащийся на странице. |
румянец | Логическое свойство, определяющее, следует ли очищать кеш перед включением ресурса. |
Ниже мы определяем два файла date.jsp и main.jsp, код следующий:
Код файла date.jsp:
<p> Сегодняшняя дата: <%= (new java.util.Date()).toLocaleString()%></p>
Код файла main.jsp:
<html><head><title>Пример действия включения</title></head><body><center><h2>Пример действия включения</h2><jsp:include page="date.jsp"lush ="true" /></center></body></html>
Теперь поместите два вышеуказанных файла в корневой каталог сервера и получите доступ к файлу main.jsp. Отображаемые результаты следующие:
Действие включения. Пример. Сегодняшняя дата: 12 сентября 2013 г., 14:54:22.
Действие jsp:useBean используется для загрузки JavaBean, который будет использоваться на странице JSP.
Эта функция очень полезна, поскольку позволяет нам воспользоваться преимуществами повторного использования компонентов Java, избегая при этом потери удобства, которое отличает JSP от сервлетов.
Самый простой синтаксис действия jsp:useBean:
<jsp:useBean id="имя" />
После загрузки класса мы можем изменить и получить свойства компонента с помощью действий jsp:setProperty и jsp:getProperty.
Ниже приведен список свойств, связанных с действием useBean.
свойство | описывать |
---|---|
сорт | Укажите полное имя пакета компонента. |
тип | Указывает тип, который будет ссылаться на объектную переменную. |
имя компонента | Укажите имя компонента с помощью метода Instantiate() класса java.beans.Beans. |
Прежде чем приводить конкретные примеры, давайте сначала посмотрим на элементы действий jsp:setProperty и jsp:getProperty:
jsp:setProperty используется для установки свойств созданного объекта Bean. Его можно использовать двумя способами. Во-первых, вы можете использовать jsp:setProperty снаружи (позади) элемента jsp:useBean, например:
<jsp:useBean id="myName" ... />...<jsp:setProperty name="myName" property="someProperty" .../>
В это время, независимо от того, найдет ли jsp:useBean существующий компонент или создаст новый экземпляр компонента, будет выполнен jsp:setProperty. Второй вариант использования — поместить jsp:setProperty внутри элемента jsp:useBean, как показано ниже:
<jsp:useBean id="myName" ... >... <jsp:setProperty name="myName" property="someProperty" .../></jsp:useBean>
В настоящее время jsp:setProperty будет выполняться только при создании нового экземпляра Bean. Если используется существующий экземпляр, jsp:setProperty не будет выполнен.
свойство | описывать |
---|---|
имя | Атрибут name является обязательным. Он указывает, для какого компонента должно быть установлено свойство. |
свойство | Атрибут свойства является обязательным. Он указывает, какое свойство установить. Существует особый вариант использования: если значение свойства равно «*», это означает, что все параметры запроса, имена которых совпадают с именами свойств компонента, будут переданы соответствующему методу набора свойств. |
ценить | Атрибут value является необязательным. Это свойство используется для указания значения свойства Bean. Строковые данные будут автоматически преобразованы в числа, логические значения, логические значения, байты, байты, символы и символы с помощью стандартного метода valueOf в целевом классе. Например, значения атрибутов типа boolean и Boolean (например, «true») преобразуются с помощью Boolean.valueOf, а значения атрибутов типа int и Integer (например, «42») преобразуются с помощью Integer.valueOf. Значение и параметр нельзя использовать одновременно, но можно использовать любой из них. |
параметр | параметр не является обязательным. Он определяет, какой параметр запроса используется в качестве значения свойства Bean. Если текущий запрос не имеет параметров, ничего не будет сделано, и система не передаст значение null в метод set свойства Bean. Таким образом, вы можете позволить bean-компоненту самому предоставлять значение свойства по умолчанию и изменять значение свойства по умолчанию только тогда, когда параметр запроса явно указывает новое значение. |
Действие jsp:getProperty извлекает значение указанного свойства Bean, преобразует его в строку и затем выводит. Формат синтаксиса следующий:
<jsp:useBean id="myName" ... />...<jsp:getProperty name="myName" property="someProperty" .../>
В следующей таблице представлены свойства, связанные с getProperty:
свойство | описывать |
---|---|
имя | Имя свойства Bean, которое требуется получить. Бин должен быть определен. |
свойство | Указывает, что значение свойства Bean должно быть извлечено. |
В следующих примерах мы используем Beans:
/* Файл: TestBean.java */package action; public class TestBean { Private String message = "Сообщение не указано"; public String getMessage() { return(message); } public void setMessage(String message) { this.message = сообщение; }}
Скомпилируйте приведенный выше пример и создайте файл TestBean.class. Скопируйте файл в каталог, в котором сервер официально хранит классы Java, а не в каталог, зарезервированный для классов, которые могут автоматически загружаться после изменения (например: C:apache-tomcat). -7.0.2 webappsWEB-INFclassesaction, переменная CLASSPATH должна содержать этот путь). Например, для веб-сервера Java bean-компоненты и все классы, используемые bean-компонентами, должны быть помещены в каталог классов или инкапсулированы в jar-файлы и помещены в каталог lib, но их не следует размещать в сервлетах. Ниже приведен очень простой пример. Его функция — загрузить компонент, а затем установить/прочитать его свойство сообщения.
Теперь давайте вызовем компонент в файле main.jsp:
<html><head><title>Использование JavaBeans в JSP</title></head><body><center><h2>Использование JavaBeans в JSP</h2> <jsp:useBean id="test" /> < jsp:setProperty name="test" property="message" value="Hello JSP..." /> <p>Получил сообщение....</p> <jsp:getProperty name="test" property="message" " /> </center></body></html>
Запустите вышеуказанный файл, и результат будет следующим:
Использование JavaBeans в сообщении JSPGot.... Привет, JSP...
Действие jsp:forward перенаправляет запрос на другую страницу. Тег jsp:forward имеет только один атрибут — страницу. Формат синтаксиса следующий:
<jsp:forward page="Относительный URL" />
Ниже приведены атрибуты, связанные с пересылкой:
свойство | описывать |
---|---|
страница | Атрибут страницы содержит относительный URL-адрес. Значение страницы может быть задано напрямую или динамически рассчитано во время запроса. Это может быть страница JSP или сервлет Java. |
В следующих примерах мы используем два файла: date.jsp и main.jsp.
Код файла date.jsp выглядит следующим образом:
<p> Сегодняшняя дата: <%= (new java.util.Date()).toLocaleString()%></p>
Код файла main.jsp:
<html><head><title>Пример действия вперед</title></head><body><center><h2>Пример действия вперед</h2><jsp:forward page="date.jsp" / </center></body>
Теперь поместите два вышеуказанных файла в корневой каталог сервера и получите доступ к файлу main.jsp. Отображаемые результаты следующие:
Сегодняшняя дата: 12.09.2010 14:54:22
Действие jsp:plugin используется для вставки элементов OBJECT или EMBED, необходимых для запуска Java-апплета через подключаемый модуль Java, в зависимости от типа браузера.
Если требуемый плагин не существует, он загружает плагин, а затем запускает компонент Java. Компонент Java может быть апплетом или JavaBean.
Действие плагина имеет несколько атрибутов, соответствующих элементам HTML, используемым для форматирования компонентов Java. Элемент param можно использовать для передачи параметров в Applet или Bean.
Ниже приведен типичный пример использования элемента действия плагина:
<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class" > <jsp:param name="fontcolor" value="red" /> <jsp:param name="background" value=" black" /> <jsp:fallback> Невозможно инициализировать плагин Java </jsp:fallback> </jsp:plugin>
Если вам интересно, вы можете попробовать использовать апплет для проверки элемента действия jsp:plugin. Элемент <fallback> — это новый элемент. При сбое компонента пользователю отправляется сообщение об ошибке.
Элементы действий <jsp:element>, <jsp:attribute>, <jsp:body> динамически определяют элементы XML. Динамический очень важен. Это означает, что элементы XML генерируются динамически во время компиляции, а не статически.
В следующем примере динамически определяются элементы XML:
<%@page Language="java" contentType="text/html"%><html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun. com/JSP/Page"><head><title>Создать XML-элемент</title></head><body><jsp:element name="xmlElement"><jsp:attribute name="xmlElementAttr"> Значение для атрибут</jsp:attribute><jsp:body> Тело элемента XML</jsp:body></jsp:element></body></html>
HTML-код, сгенерированный во время выполнения, выглядит следующим образом:
<html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun.com/JSP/Page"> <head><title>Создать элемент XML</ title></head><body><xmlElement xmlElementAttr="Значение атрибута"> Тело элемента XML</xmlElement></body></html>
Элемент действия <jsp:text> позволяет использовать шаблоны для написания текста на страницах и документах JSP. Формат синтаксиса следующий:
<jsp:text>Данные шаблона</jsp:text>
Приведенный выше текстовый шаблон не может содержать другие элементы, а может содержать только текст и выражения EL (Примечание: выражения EL будут представлены в последующих главах). Обратите внимание, что в XML-файлах нельзя использовать такие выражения, как ${whatever > 0}, поскольку символ > недопустим. Вы можете использовать выражение ${whatever gt 0} или значение, встроенное в раздел CDATA.
<jsp:text><![CDATA[<br>]]></jsp:text>
Если вам нужно объявить DOCTYPE в XHTML, вы должны использовать элемент действия <jsp:text>. Пример следующий:
<jsp:text><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">]]></jsp:text>< head><title>jsp:text action</title></head><body><books><book><jsp:text> Добро пожаловать в JSP Программирование</jsp:text></book></books></body></html>
Вы можете попробовать приведенный выше пример, чтобы увидеть разницу между использованием <jsp:text> и отсутствием этого элемента действия.