Java-online.ru - все о Java


Java Server Page. Действие jsp:useBean

Тег jsp:useBean позволяет ассоциировать экземпляр Java-класса, определенный в данной области видимости scope, с заданным внутренним идентификатором этого класса id в данной странице JSP. Прежде, чем использовать свойства компонента JavaBean (setProperty и getProperty), необходимо объявить тег jsp:useBean. При выполнении тега jsp:useBean сервер приложений обеспечивает поиск (lookup) экземпляра данного Java-класса, пользуясь значениями, определенными в атрибутах:

  • id - идентификатор экземпляра класса внутри страницы JSP;
  • scope - область видимости (page, request, session, application).

Если объект с данными атрибутами id, scope не найден, предпринимается попытка создать объект, используя значения, определенные в его атрибутах. Синтаксис действия jsp:useBean может включать тело :
Синтаксис действия jsp:useBean
<jsp:useBean id="идентификатор" scope = "page | request | session | application" class = "имяКласса" type = "имяТипа" | type = "имяТипа" | class = "имяКласса" | beanName = "имяКомпонентаJavaBean" | type = "имяТипа" | type = "имяТипа" | beanName = "имяКомпонентаJavaBean" | type = "имяТипа"> <!-- Тело --> </jsp:useBean>

При наличии в объявление тела, оно будет вызвано на выполнение, если компонент JavaBean, к которому обращено действие, уже существует. Содержимое тела действия строго не ограничено, однако, как правило, тело действия содержит скриптлеты или теги jsp:setProperty, модифицирующие свойства созданного объекта.

Действие jsp:useBean очень гибкое. Правила, по которым оно выполняется, зависят от текущих значений его атрибутов. С помощью действия jsp:useBean можно:

  • найти существующий компонент JavaBean. Если объект найден, то он доступен, например, из объекта ServletRequest, определенного для страницы с помощью метода getAttribute(name);
  • создать новый экземпляр класса JavaBean - создается новая переменная на языке скрипта с именем, определяемым параметром id, и в области видимости, заданной параметром scope;
  • используя атрибут type, задать локальное имя объекту, определенном в другой странице JSP или сервлете (атрибуты class или beanName при этом не используются).

Тег jsp:useBean имеет параметры, представленные в таблице.

АтрибутОписание атрибута
id Параметр, идентифицирующий экземпляр объекта в пространстве имен, специфицированном в атрибуте scope. Это имя используется для ссылки на компонент JavaBean из страницы JSP.
scope Атрибут, определяющий область видимости ссылки на экземпляр объекта JavaBean. Допустимыми значениями являются page, request, session, application. Данный атрибут фактически описывает пространство имен и цикл жизни ссылки на объект. По умолчанию значение объекта равно page.

page (страница). Объект, определенный с областью видимости page, доступен до тех пор, пока не будет отправлен ответ клиенту или пока запрос к текущей странице JSP не будет перенаправлен куда-нибудь еще. Ссылки на объект возможны только в пределах страницы, в которой этот объект определен. Объекты, объявленные с атрибутом page, сохраняются в объекте pageContext.
request (запрос). Объект, имеющий область видимости request, существует и доступен в течение текущего запроса, и остается видимым, даже если запрос перенаправляется другому ресурсу в том же самом цикле выполнения. Объекты, декларированные с атрибутом области видимости request, сохраняются в объекте request.
session (сессия). Объект, имеющий область видимости session доступен в течение текущего сеанса, если страница JSP "знает" о сеансе.
application (приложение). Объект, имеющий область видимости application доступен страницам, обрабатывающим запросы в одном и том же приложении Web, и cуществует до тех пор, пока сервер приложений поддерживает объект ServletContext. Объекты, объявленные с атрибутом области видимости application, сохраняются в объекте application.
class Параметр, определяющий полное имя класса реализации объекта. Данный атрибут используется при инициализации экземпляра компонента JavaBean, если он еще не существует в данной области видимости scope.
beanName Наименование класса реализации объекта. Данный параметр используется, если компонент JavaBean еще не существует. Параметр beanName должен удовлетворять правилам наименования переменных, предусмотренным спецификацией языка скриптлетов. Формат параметра : "строка1.строка2.строка3" - для классов и "строка1/строка2/строка3" - для ресурсов. Параметр beanName предполагает использование метода instantiate () класса java.beans.Beans.
type Атрибут type, определяющий тип специфицированного объекта, дает возможность определить тип переменных скрипта как класс, суперкласс или интерфейс, реализуемый классом. С помощью атрибута type можно избежать автоматической инициализации компонента JavaBean, если он еще не существует в данной области видимости. По умолчанию атрибут type имеет значение, определенное в атрибуте class. Если объект не соответствует даваемому атрибутом type типу, может быть возбуждено исключение java.lang.ClassCastException.

Если имя класса (class) и имя объекта (beanName) не определены, объект должен быть представлен в заданной области видимости. Значение идентификатора id должно быть уникально в текущем модуле трансляции (JSP-странице), иначе возникает ошибка трансляции.




Copyright © 2009-2015