В этой главе мы обсудим действия в JSP. Эти действия используют конструкции в синтаксисе XML для управления поведением механизма сервлета. Вы можете динамически вставлять файл, повторно использовать компоненты JavaBeans, перенаправлять пользователя на другую страницу или генерировать HTML для плагина Java.
Для элемента Action существует только один синтаксис, так как он соответствует стандарту XML —
<jsp:action_name attribute = "value" />
Элементы действия — это в основном предопределенные функции. В следующей таблице перечислены доступные действия JSP.
S.No. | Синтаксис и цель |
---|---|
1 |
JSP: включить Включает файл во время запроса страницы. |
2 |
JSP: useBean Находит или создает экземпляр JavaBean. |
3 |
JSP: SetProperty Устанавливает свойство JavaBean. |
4 |
JSP: GetProperty Вставляет свойство JavaBean в вывод. |
5 |
JSP: вперед Переадресует запрос на новую страницу. |
6 |
JSP: плагин Генерирует специфичный для браузера код, который создает тег OBJECT или EMBED для плагина Java. |
7 |
JSP: элемент Определяет элементы XML динамически. |
8 |
JSP: атрибут Определяет динамически определенный атрибут элемента XML. |
9 |
JSP: тело Определяет динамически определяемое тело XML-элемента. |
10 |
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.
Общие атрибуты
Есть два атрибута, общих для всех элементов Action: атрибут id и атрибут scope .
Атрибут Id
Атрибут id однозначно идентифицирует элемент Action и позволяет ссылаться на действие внутри страницы JSP. Если Action создает экземпляр объекта, значение id можно использовать для ссылки на него через неявный объект PageContext.
Атрибут области
Этот атрибут идентифицирует жизненный цикл элемента Action. Атрибут id и атрибут scope напрямую связаны, так как атрибут scope определяет срок службы объекта, связанного с id. Атрибут области имеет четыре возможных значения: (a) страница, (b) запрос, (c) сеанс и (d) приложение .
Действие <jsp: include>
Это действие позволяет вставлять файлы на создаваемую страницу. Синтаксис выглядит так —
<jsp:include page = "relative URL" flush = "true" />
В отличие от директивы include , которая вставляет файл во время преобразования страницы JSP в сервлет, это действие вставляет файл во время запроса страницы.
В следующей таблице перечислены атрибуты, связанные с действием включения —
S.No. | Атрибут и описание |
---|---|
1 |
страница Относительный URL-адрес страницы, которая будет включена. |
2 |
промывать Логический атрибут определяет, очищен ли буфер включенного ресурса перед его включением. |
страница
Относительный URL-адрес страницы, которая будет включена.
промывать
Логический атрибут определяет, очищен ли буфер включенного ресурса перед его включением.
пример
Давайте определим следующие два файла (a) date.jsp и (b) main.jsp следующим образом:
Ниже приводится содержание файла date.jsp —
<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>
Ниже приводится содержание файла main.jsp —
<html> <head> <title>The include Action Example</title> </head> <body> <center> <h2>The include action Example</h2> <jsp:include page = "date.jsp" flush = "true" /> </center> </body> </html>
Давайте теперь сохраним все эти файлы в корневом каталоге и попытаемся получить доступ к main.jsp . Вы получите следующий вывод —
The include action Example
Today's date: 12-Sep-2010 14:54:22
Действие <jsp: useBean>
Действие useBean довольно универсально. Сначала он ищет существующий объект, используя переменные id и области видимости. Если объект не найден, он пытается создать указанный объект.
Самый простой способ загрузить бин следующим образом:
<jsp:useBean id = "name" class = "package.class" />
После загрузки класса компонента вы можете использовать действия jsp: setProperty и jsp: getProperty для изменения и получения свойств компонента.
В следующей таблице перечислены атрибуты, связанные с действием useBean —
S.No. | Атрибут и описание |
---|---|
1 |
учебный класс Обозначает полное имя пакета компонента. |
2 |
тип Определяет тип переменной, которая будет ссылаться на объект. |
3 |
beanName Предоставляет имя компонента, как указано методом instantiate () класса java.beans.Beans. |
учебный класс
Обозначает полное имя пакета компонента.
тип
Определяет тип переменной, которая будет ссылаться на объект.
beanName
Предоставляет имя компонента, как указано методом instantiate () класса java.beans.Beans.
Давайте теперь обсудим действия jsp: setProperty и jsp: getProperty, прежде чем приводить действительный пример, связанный с этими действиями.
Действие <jsp: setProperty>
Действие setProperty устанавливает свойства Бина. Бин должен быть предварительно определен до этого действия. Существует два основных способа использования действия setProperty:
Вы можете использовать jsp: setProperty после, но вне элемента jsp: useBean , как показано ниже —
<jsp:useBean id = "myName" ... /> ... <jsp:setProperty name = "myName" property = "someProperty" .../>
В этом случае jsp: setProperty выполняется независимо от того, был ли создан новый компонент или был найден существующий компонент.
Второй контекст, в котором может появиться jsp: setProperty , находится внутри тела элемента jsp: useBean , как показано ниже —
<jsp:useBean id = "myName" ... > ... <jsp:setProperty name = "myName" property = "someProperty" .../> </jsp:useBean>
Здесь jsp: setProperty выполняется, только если был создан новый объект, а не был найден существующий.
В следующей таблице перечислены атрибуты, связанные с действием setProperty —
S.No. | Атрибут и описание |
---|---|
1 |
название Обозначает компонент, свойство которого будет установлено. Бин должен быть предварительно определен. |
2 |
имущество Указывает свойство, которое вы хотите установить. Значение «*» означает, что все параметры запроса, чьи имена соответствуют именам свойств бина, будут переданы соответствующим методам установки. |
3 |
значение Значение, которое должно быть присвоено данному свойству. Значение параметра равно нулю или параметр не существует, действие setProperty игнорируется. |
4 |
пары Атрибут param — это имя параметра запроса, значение которого должно получить свойство. Вы не можете использовать и значение, и параметр, но допустимо использовать ни то, ни другое. |
название
Обозначает компонент, свойство которого будет установлено. Бин должен быть предварительно определен.
имущество
Указывает свойство, которое вы хотите установить. Значение «*» означает, что все параметры запроса, чьи имена соответствуют именам свойств бина, будут переданы соответствующим методам установки.
значение
Значение, которое должно быть присвоено данному свойству. Значение параметра равно нулю или параметр не существует, действие setProperty игнорируется.
пары
Атрибут param — это имя параметра запроса, значение которого должно получить свойство. Вы не можете использовать и значение, и параметр, но допустимо использовать ни то, ни другое.
Действие <jsp: getProperty>
Действие getProperty используется для получения значения заданного свойства, преобразования его в строку и, наконец, вставки его в вывод.
Действие getProperty имеет только два атрибута, оба из которых являются обязательными. Синтаксис действия getProperty следующий:
<jsp:useBean id = "myName" ... /> ... <jsp:getProperty name = "myName" property = "someProperty" .../>
В следующей таблице перечислены обязательные атрибуты, связанные с действием getProperty.
S.No. | Атрибут и описание |
---|---|
1 |
название Имя Бина, у которого есть свойство для извлечения. Бин должен быть предварительно определен. |
2 |
имущество Атрибут свойства — это имя свойства Bean, которое нужно получить. |
название
Имя Бина, у которого есть свойство для извлечения. Бин должен быть предварительно определен.
имущество
Атрибут свойства — это имя свойства Bean, которое нужно получить.
пример
Давайте определим тестовый компонент, который в дальнейшем будет использоваться в нашем примере —
/* File: TestBean.java */ package action; public class TestBean { private String message = "No message specified"; public String getMessage() { return(message); } public void setMessage(String message) { this.message = message; } }
Скомпилируйте приведенный выше код в сгенерированный файл TestBean.class и убедитесь, что вы скопировали TestBean.class в папку C: \ apache-tomcat-7.0.2 \ webapps \ WEB-INF \ classes \ action, а переменная CLASSPATH также должна быть установить в эту папку —
Теперь используйте следующий код в файле main.jsp . Это загружает бин и устанавливает / получает простой параметр String —
<html> <head> <title>Using JavaBeans in JSP</title> </head> <body> <center> <h2>Using JavaBeans in JSP</h2> <jsp:useBean id = "test" class = "action.TestBean" /> <jsp:setProperty name = "test" property = "message" value = "Hello JSP..." /> <p>Got message....</p> <jsp:getProperty name = "test" property = "message" /> </center> </body> </html>
Давайте теперь попробуем получить доступ к main.jsp , он будет отображать следующий результат —
Using JavaBeans in JSP
Got message.... Hello JSP...
Действие <jsp: forward>
Действие пересылки завершает действие текущей страницы и перенаправляет запрос другому ресурсу, такому как статическая страница, другая страница JSP или сервлет Java.
Ниже приводится синтаксис прямого действия —
<jsp:forward page = "Relative URL" />
В следующей таблице перечислены обязательные атрибуты, связанные с действием вперед —
S.No. | Атрибут и описание |
---|---|
1 |
страница Должен состоять из относительного URL другого ресурса, такого как статическая страница, другая страница JSP или сервлет Java. |
страница
Должен состоять из относительного URL другого ресурса, такого как статическая страница, другая страница JSP или сервлет Java.
пример
Давайте повторно используем следующие два файла (a) date.jsp и (b) main.jsp следующим образом:
Ниже приводится содержание файла date.jsp —
<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>
Ниже приводится содержание файла main.jsp —
<html> <head> <title>The include Action Example</title> </head> <body> <center> <h2>The include action Example</h2> <jsp:forward page = "date.jsp" /> </center> </body> </html>
Давайте теперь сохраним все эти файлы в корневом каталоге и попытаемся получить доступ к main.jsp . Это будет отображать результат примерно так, как показано ниже.
Здесь он отбрасывал контент с главной страницы и отображал контент только с переадресованной страницы.
Today's date: 12-Sep-2010 14:54:22
Действие <jsp: plugin>
Действие плагина используется для вставки компонентов Java на страницу JSP. Он определяет тип браузера и вставляет теги <object> или <embed> по мере необходимости.
Если требуемый плагин отсутствует, он загружает плагин и затем выполняет компонент Java. Компонент Java может быть либо апплетом, либо JavaBean.
Действие плагина имеет несколько атрибутов, которые соответствуют общим тегам HTML, используемым для форматирования компонентов Java. Элемент <param> также можно использовать для отправки параметров в апплет или бин.
Ниже приведен типичный синтаксис использования действия плагина —
<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>
Вы можете попробовать это действие с помощью некоторого апплета, если вам интересно. Новый элемент, элемент <fallback> , можно использовать для указания строки ошибки, которая будет отправлена пользователю в случае сбоя компонента.
The <jsp:element> Action
The <jsp:attribute> Action
The <jsp:body> Action
Действия <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>Generate XML Element</title></head> <body> <jsp:element name = "xmlElement"> <jsp:attribute name = "xmlElementAttr"> Value for the attribute </jsp:attribute> <jsp:body> Body for XML element </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>Generate XML Element</title></head> <body> <xmlElement xmlElementAttr = "Value for the attribute"> Body for XML element </xmlElement> </body> </html>
Действие <jsp: text>
Действие <jsp: text> можно использовать для написания текста шаблона на страницах и документах JSP. Ниже приведен простой синтаксис этого действия:
<jsp:text>Template data</jsp:text>
Тело шаблона не может содержать другие элементы; он может содержать только текст и выражения EL (Примечание. Выражения EL объясняются в следующей главе). Обратите внимание, что в файлах XML вы не можете использовать такие выражения, как $ {любой> 0} , потому что знаки больше чем недопустимы. Вместо этого используйте форму gt , например, $ {независимо от 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> Welcome to JSP Programming </jsp:text></book></books> </body> </html>
Попробуйте приведенный выше пример с действием <jsp: text> и без него.