English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В отличие от элементов директив JSP, элементы действий JSP действуют на этапе обработки запроса. Элементы действий JSP написаны на XML-синтаксисе.
С помощью действий JSP можно динамически вставлять файлы, повторно использовать компоненты JavaBean, перенаправлять пользователей на другие страницы, генерировать HTML-код для Java-плагинов.
Элементы действий имеют только один синтаксис, который соответствует стандартам XML:
<jsp:action_name attribute="value" />
Элементы действий в основном являются предварительно определенными функциями, спецификация JSP определяет ряд стандартных действий, которые начинаются с префикса JSP, доступные стандартные элементы действий:
Грамматика | Описание |
---|---|
jsp:include | Включает файл при запросе страницы. |
jsp:useBean | Ищет или создает JavaBean. |
jsp:setProperty | Устанавливает свойства JavaBean. |
jsp:getProperty | Вывод свойств JavaBean. |
jsp:forward | Перенаправляет запрос на новую страницу. |
jsp:plugin | Генерирует OBJECT или EMBED тег в зависимости от типа браузера для Java-плагина. |
jsp:element | Определяет динамический XML-элемент |
jsp:attribute | Устанавливает атрибуты динамически определенного XML-элемента. |
jsp:body | Устанавливает содержимое динамически определенного XML-элемента. |
jsp:text | Шаблон записи текста в JSP-странице и документе |
Все элементы действий имеют два атрибута: атрибут id и атрибут scope.
Атрибут id:
Атрибут id является уникальным идентификатором элемента действия и может быть использован для ссылки на JSP-странице. Значение id, созданного элементом действия, можно вызвать через PageContext.
Атрибут scope:
Этот атрибут используется для идентификации жизненного цикла элемента действия. Атрибут id и атрибут scope связаны между собой, атрибут scope определяет продолжительность жизни связанного с id объекта. Атрибут scope имеет четыре возможных значения: (a) page, (b) request, (c) session и (d) application.
Элемент действия <jsp:include> используется для включения статических и динамических файлов. Это действие вставляет указанный файл в генерируемую страницу. Грамматический формат следующий:
<jsp:include page="относительный URL-адрес" flush="true" />
Ранее уже было рассказано о директиве include, которая добавляет файл в процессе преобразования JSP-файла в Servlet, whereas jsp:include действие добавляет файл в момент запроса страницы.
Ниже приведен список свойств, связанных с действием include.
Атрибут | Описание |
---|---|
page | относительный URL-адрес, включаемый в страницу. |
flush | булево свойство, определяющее, следует ли обновлять буфер перед включением ресурса. |
Ниже мы определяем два файла date.jsp и main.jspКод如下所示:
Код файла date.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" %> pageEncoding="UTF-8"%> <p> Сегодняшняя дата: <%= (new java.util.Date()).toLocaleString() %> </p>
Код файла main.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" %> pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Сайт базового руководства (oldtoolbag.com)</title> </head> <body> <h2>include пример действия</h2> <jsp:include page="date.jsp" flush="true" /> </body> </html>
Теперь поместите эти два файла в корневую директорию сервера и откройте файл main.jsp. Результат будет следующим:
include пример действия Сегодняшняя дата: 2016-6-25 14:08:17
jsp:useBean Действие используется для загрузки JavaBean, который будет использоваться на странице JSP.
Эта функция очень полезна, так как позволяет нам использовать преимущества повторного использования Java-компонентов.
Самый простой синтаксис действия jsp:useBean:
<jsp:useBean id="name" />
После загрузки класса мы можем изменять и извлекать свойства bean с помощью действий jsp:setProperty и jsp:getProperty.
Ниже приведен список атрибутов, связанных с действием useBean.
Атрибут | Описание |
---|---|
class | Указывается полный пакет Bean. |
type | Указывается тип, к которому будет относиться переменная объекта. |
beanName | С помощью метода instantiate() класса java.beans.Beans указывается имя Bean. |
До того, как предоставить конкретные примеры, давайте сначала рассмотрим элементы действий jsp:setProperty и jsp:getProperty:
jsp:setProperty используется для установки свойств уже примеренного объекта Bean, и имеет два способа использования. Сначала вы можете использовать jsp:setProperty снаружи (за) элемента jsp:useBean, как показано ниже:
<jsp:useBean id="myName" ... /> ... <jsp:setProperty name="myName" property="someProperty" .../>
В этом случае, независимо от того, нашел ли jsp:useBean существующий Bean или создал новый экземпляр Bean, jsp:setProperty будет выполняться. Второй способ - поместить jsp:setProperty внутрь элемента jsp:useBean, как показано ниже:
<jsp:useBean id="myName" ... > ... <jsp:setProperty name="myName" property="someProperty" .../> </jsp:useBean>
В этом случае, jsp:setProperty выполняется только при создании нового экземпляра Bean, если используется существующий экземпляр, jsp:setProperty не выполняется.
Действие jsp:setProperty имеет следующие четыре атрибута, как показано в таблице:
Атрибут | Описание |
---|---|
name | Атрибут name обязателен. Он указывает, какой Bean нужно установить. |
property | Атрибут property обязателен. Он указывает,哪个 атрибут нужно установить. Есть особое использование: если значение property равно "*", это означает, что все параметры запроса, имена и имена свойств Bean, соответствующие именам, будут переданы соответствующему методу set свойств. |
value | Атрибут value является опциональным. Этот атрибут используется для указания значения свойства Bean. Строковые данные автоматически преобразуются в числа, boolean, Boolean, byte, Byte, char, Character через стандартный метод valueOf в целевом классе. Например, значения свойств типа boolean и Boolean (например, "true") преобразуются с помощью Boolean.valueOf, значения свойств типа int и Integer (например, "42") преобразуются с помощью Integer.valueOf. value и param не могут использоваться одновременно, но можно использовать один из них. |
param | param является опциональным. Он указывает,哪个 параметр запроса используется в качестве значения свойства Bean. Если в текущем запросе нет параметров, ничего не происходит, система не передает null методу set свойства Bean. Таким образом, вы можете позволить Bean предоставлять значение по умолчанию, которое будет изменено только в том случае, если в запросе явно указано новое значение. |
Действие jsp:getProperty извлекает значение свойства указанного Bean, преобразует его в строку и выводит. Формат синтаксиса следующий:
<jsp:useBean id="myName" ... /> ... <jsp:getProperty name="myName" property="someProperty" .../>
В таблице ниже приведены свойства, связанные с getProperty:
Атрибут | Описание |
---|---|
name | Название Bean属性, которую нужно извлечь. Bean должен быть уже определен. |
property | 表示要提取Bean属性的值 |
В следующем примере мы используем Bean:
package com.w3codebox.main; public class TestBean { private String message = "基础教程网"; public String getMessage() { return(message); } public void setMessage(String message) { this.message = message; } }
Компилируйте пример файла TestBean.java:
$javac TestBean.java
После компиляции в текущей директории будет создан один TestBean.class файл Копируйте этот файл в текущий проект JSP WebContent/WEB-INF/classes/com/w3codebox/mainВнизу (папка com/w3codebox/main, не нужно создавать вручную).
Ниже приведена структура каталогов в Eclipse:
Ниже приведен очень простой пример, который загружает Bean и устанавливает/читает его атрибут message.
Теперь давайте вызовем этот Bean в файле main.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" %> pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Сайт базового руководства (oldtoolbag.com)</title> </head> <body> <h2>Пример использования JavaBean в JSP</h2> <jsp:useBean id="test" /> <jsp:setProperty name="test" property="message" value="Основной учебник..." /> <p>Отображаемая информация....</p> <jsp:getProperty name="test" property="message" /> </body> </html>
При посещении браузером, выполнении этих файлов, результат будет следующим:
Действие jsp:forward перенаправляет запрос на другую страницу. Единственный атрибут тега jsp:forward - это page. Грамматический формат приведен ниже:
<jsp:forward page="относительный URL адрес" />
Ниже приведены атрибуты, связанные с forward:
Атрибут | Описание |
---|---|
page | Атрибут page содержит относительный URL. Значение page может быть указано напрямую или вычислено динамически в момент запроса, это может быть страница JSP или Java Servlet. |
В данном примере мы используем два файла: date.jsp и main.jsp.
Код файла date.jsp следующий:
<%@ page language="java" contentType="text/html; charset=UTF-8" %> pageEncoding="UTF-8"%> <p> Сегодняшняя дата: <%= (new java.util.Date()).toLocaleString() %> </p>
Код файла main.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" %> pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Сайт базового руководства (oldtoolbag.com)</title> </head> <body> <h2>Пример действия forward</h2> <jsp:forward page="date.jsp" /> </body> </html>
Теперь поместите эти два файла в корневую директорию сервера и откройте файл main.jsp. Результат будет следующим:
Сегодняшняя дата: 2016-6-25 14:37:25
Действие jsp:plugin предназначено для вставки в зависимости от типа браузера необходимых элементов OBJECT или EMBED для выполнения Java Applet через Java-плагин.
Если необходимый плагин отсутствует, он загрузит плагин, а затем выполнит компонент Java. Компонент Java может быть applet или JavaBean.
У элемента действия <plugin> есть несколько свойств, соответствующих HTML-элементам, которые используются для форматирования Java-компонентов. Элемент <param> можно использовать для передачи параметров Applet или Bean.
Ниже приведен пример использования элемента действия <plugin>:
<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class" width="60" height="80"> <jsp:param name="fontcolor" value="red" /> <jsp:param name="background" value="black" /> <jsp:fallback> Unable to initialize Java Plugin </jsp:fallback> </jsp:plugin>
Если вы хотите попробовать использовать applet для тестирования элемента действия <jsp:plugin>, элемент <fallback> является новым элементом, который отправляет пользователю ошибочную информацию при возникновении ошибки в компоненте.
<jsp:element> 、 <jsp:attribute> 、 Элемент действия <jsp:body> динамически определяет XML-элемент. Динамичность очень важна, что означает, что XML-элемент генерируется динамически, а не статически.
Ниже приведен пример динамического определения XML-элемента:
<%@ page language="java" contentType="text/html; charset=UTF-8" %> pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Сайт базового руководства (oldtoolbag.com)</title> </head> <body> <jsp:element name="xmlElement"> <jsp:attribute name="xmlElementAttr"> Значение атрибута </jsp:attribute> <jsp:body> Содержимое элемента XML </jsp:body> </jsp:element> </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> и сравнить результаты без использования этого действия.