Javabeans что это
Перейти к содержимому

Javabeans что это

  • автор:

Javabeans что это

Класс Java Bean должен соответствовать ряду ограничений:

  • иметь конструктор, который не принимает никаких параметров
  • определять для всех свойств, которые используются в jsp, методы геттеры и сеттеры
  • названия геттеров и сеттеров должны соответствовать условностям: перед именем переменной добавляется get (для геттера) и set (для сеттера), а название переменной включается с большой буквы. Например, если переменная называется firstName, то функции геттера и сеттера должны называться соответственно getFirstName и setFirstName. Однако для переменных типа boolean для функции геттера используется вместо get приставка is. Например, переменная enabled и геттер isEnabled.
  • реализовать интерфейс Serializable или Externalizable

Рассмотрим, как использовать классы JavaBean. Допустим, у нас есть следующая структура:

Java Beans in JavaEE

В папке Java Resources/src расположен класс User со следующим кодом:

import java.io.Serializable; public class User implements Serializable < private static final long serialVersionUID = 2041275512219239990L; private String name; private int age; public User() < this.name = ""; this.age = 0; >public User(String name, int age) < this.name = name; this.age = age; >public String getName() < return name; >public void setName(String name) < this.name = name; >public int getAge() < return age; >public void setAge(int age) < this.age = age; >>

Данный класс представляет пользователя и является классом Java Bean: он реализует интерфейс Serializable, имеет конструктор без параметров, а его методы — геттеры и сеттеры, которые предоставляют доступ к переменным name и age, соответствуют условностям.

В папке WebContent определена страница user.jsp . Определим в ней следующий код:

    User Java Bean Page   

Name: $

Age: $

Данная страница jsp получает извне объект user и с помощью синтаксиса EL выводит значения его свойств. Стоит обратить внимание, что здесь идет обращение к переменным name и age, хотя они являются приватными.

В папке Java Resources/src в файле HelloServlet.java определен сервлет HelloServlet:

import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/hello") public class HelloServlet extends HttpServlet < protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException < User tom = new User("Tom", 25); request.setAttribute("user", tom); getServletContext() .getRequestDispatcher("/user.jsp") .forward(request, response); >>

Сервлет создает объект User. Для передачи его на страницу user.jsp устанавливается атрибут «user» через вызов request.setAttribute(«user», tom) . Далее происходит перенаправление на страницу user.jsp. И, таким образом, страница получит данные из сервлета.

Javabeans что это

Объекты JavaBean определяют простую и мощную модель компонентов для Java. Цель объектов JavaBean — предоставить отдельные и многоразовые единицы, которыми разработчики могут управлять как программно, так и визуально с помощью инструментов компоновки.

Объекты JavaBean могут быть управляющими элементами GUI, но могут быть и не представленными визуально. Управляющие элементы GUI в Java обычно являются объектами JavaBean, чтобы ими можно было управлять инструментами компоновки. В J2EE простые объекты JavaBean обычно берутся из JSP, где они обеспечивают разделение презентации на языке HTML и кода на языке Java, содержащегося в объектах JavaBean.

Объект JavaBean — это класс Java с тремя различными составляющими:

Свойства JavaBean

Свойства JavaBean доступны другим компонентам. Обычно свойство — это частное значение, которое можно получить с помощью методов set и get, но оно может быть и вычисляемым значением. Обновление свойств может вызывать различные побочные эффекты.

Методы доступа к свойствам иногда называют аксессорами. Аксессоры могут быть методами get и set и подчиняются соглашениям об именах:

void setимя_свойства(тип_свойства value); // метод set
тип_свойства getимя_свойства() // метод get

Для булевского свойства метод get может быть следующим:

boolean isимя_свойства() // метод get для булевского свойства

Пример: пользовательский объект JavaBean

Ниже приведен пример простого объекта JavaBean (Customer) с двумя простыми свойствами: name и email. Обратите внимание, что свойства определяются парами методов set/get.

public class Customer private String name;
private String email;

public String getName() return name;
>

public void setName(String aName) name = aName;
>

public String getEmail() return email;
>

public void setEmail(String aEmail) email = aEmail;
>

Такие простые объекты JavaBean часто используются в JSP, где они позволяют передавать значения из форм Web-страниц.

Индексированные свойства

Помимо простых свойств, которые могут принимать только одно значение, существуют и свойства — массивы значений.

Индексированные свойства могут возвращать значение по указанному индексу или целый массив значений.

У индексированных свойств следующие сигнатуры:

void setимя_свойства(int index, тип_свойства value); // индексированный set
тип_свойства getter(int index); // индексированный get
void setимя_свойства(тип_свойства values[]); // массив set
тип_свойства[]getимя_свойства(); // массив get

Привязанные свойства

Механизм привязанных свойств обеспечивает рассылку уведомлений при изменении свойства. Объекты, заинтересованные в получении уведомлений об изменениях, регистрируют себя заранее, и когда свойство изменяется, зарегистрированным объектам отправляется соответствующее уведомление. Обычно это уведомление рассылается посредством события, выдаваемого компонентом с привязанным свойством после задания свойства.

Объект JavaBean с привязанным свойством предлагает методы регистрации и отмены регистрации заинтересованных объектов, называемых получателями. Разработчики могут определить свой собственный механизм уведомлений, но библиотеки Java предоставляют несколько распространенных классов поддержки в составе пакета java.beans.

Ограниченные свойства

Ограниченные свойства схожи с привязанными свойствами, но уведомление отправляется до фактического задания свойства. Это позволяет заинтересованным сторонам запретить изменение свойства, выдав исключительную ситуацию PropertyVetoException.

События и уведомление

События — это опция объектов JavaBean, позволяющая независимо разработанным компонентам обмениваться информацией друг с другом путем рассылки уведомлений об изменении состояния. В этой модели некоторые компоненты выдают события, а другие компоненты, находящиеся в роли получателей событий, их обрабатывают.

Для поддержки этой модели связи модель компонентов JavaBean предоставляет:

  • свойства, которые могут выдавать события (привязанные и ограниченные)
  • методы регистрации, чтобы получатели могли регистрироваться
  • события, содержащие информацию об изменении
  • получатели, которые могут реагировать на доставленное событие

Следующая диаграмма классов иллюстрирует эти концепции для объекта JavaBean EventSource с простым свойством int.

Во время настройки конкретные получатели регистрируются с объектом JavaBean. В один из последующих моментов другой объект вызывает метод setProperty, который запустит процесс уведомления путем создания объекта событий. Объект JavaBean EventSource вызовет метод propertyChange во всех зарегистрированных получателях. Получатели событий получат событие, прочтут его значения и отреагируют на него.

На следующей последовательной диаграмме иллюстрируется порядок вызовов:

Уведомление получателей выполняется синхронно по отношению к экземпляру JavaBean, который является источником события, однако получатель событий может обрабатывать их в другой нити.

Внутренний анализ

Внутренний анализ — это механизм среды выполнения, позволяющий обнаруживать свойства, события и методы JavaBean. Внутренний анализ применяется инструментами разработки и программами, не использующими закодированные зависимости в других компонентах. Работа механизма внутреннего анализа основана на анализе существующей информации с учетом соглашений об именах методов и интерфейсов. Класс BeanInfo поддерживает дополнительные функции внутреннего анализа. Соглашения об именах JavaBean, применяемые для внутреннего анализа, иногда называют «шаблонами проектирования», но их не следует смешивать с понятием «шаблон проектирования», существующим в объектно-ориентированном проектировании.

Постоянные данные

Объект JavaBean может постоянно храниться в памяти. Это достигается посредством механизма сериализации. Сериализация может быть автоматической или пользовательской, в зависимости от того, какие интерфейсы реализует JavaBean — сериализуемые или импортируемые. В JDK 1.4 появились новые классы XMLEncoder и XMLDecoder, позволяющие хранить экземпляры JavaBean в формате XML.

Настройка

Внешний вид и характеристики объекта JavaBean можно настраивать во время проектирования. Это особенно важно для визуальных объектов JavaBean, применяемых в графических пользовательских интерфейсах. Настройка выполняется с помощью редактора свойств или программ настройки. Программы настройки предоставляют пользовательский интерфейс для настройки экземпляра JavaBean во время проектирования.

BeanContext

BeanContext определяет логическую иерархию включений, позволяющую объектам JavaBean выяснять, какие функции и службы доступны в их среде. Механизмы BeanContext предоставляют поддержку логической иерархии включений объектов JavaBean и поиска служб, предлагаемых входящими в иерархию объектами JavaBean.

Среда активации объектов JavaBean™

Среда активации Java — это стандартное расширение Java, позволяющее определять тип фрагмента данных, инкапсулировать его, выяснять набор его доступных операций и создавать экземпляр компонента программного обеспечения, отвечающего требуемой операции над этим фрагментом.

Дополнительная информация

Дополнительная информация об объектах JavaBean приведена в документе JavaBeans API Specification, Version 1.01 на Web-сайте http://java.sun.com/. Выберите ссылку Docs & Training > Java 2 Platform, Standard Edition > Java 2 SDK, SE v1.3 documentation > JavaBeans > JavaBeans Specification.

Данная информация полностью или частично разработана компанией Inferdata Corporation.

© Copyright IBM Corp. 1987, 2006. Все права защищены.

Javabeans что это

[an error occurred while processing this directive]

Конспект лекций по Java. Занятие 25

[an error occurred while processing this directive](none) [an error occurred while processing this directive](none)[an error occurred while processing this directive] ::
[an error occurred while processing this directive] (none)
[an error occurred while processing this directive] ([an error occurred while processing this directive] В.Фесюнов [an error occurred while processing this directive])

[an error occurred while processing this directive](none)

  • Технология JavaBeans
    • Что такое JavaBeans
    • Что такое Bean
    • Свойства бинов (Bean properties)
    • Bean-методы
    • Интроспекция бинов при помощи reflection API
    • Связанные свойства (bound properties) и события

    Технология JavaBeans

    Что такое JavaBeans

    В исходной документации по JavaBeans от Sun определено: «Целью технологии JavaBeans является определение модели программных компонент такой, что фирмы-разработчики ( third party firms ) могут создавать и устанавливать Java-компоненты, которые могут быть скомпонованы конечными пользователями в законченные приложения».

    Т.е. здесь речь идет о компонентном программировании и JavaBean — это технология создания и использования программных компонент (обычно визуальных, хотя не обязательно). В JavaBean программные компоненты, которые являются как бы кирпичиками программы, называются Beans (в переводе — бобы). Мы будем далее их именовать бинами .

    В компонентном программировании подразумевается наличие не только самих компонент, но и некоторой визуальной среды разработки, позволяющей в диалоге строить программу из этих компонент. Причем, результат процесса сразу виден на экране. Технология JavaBean также неявно подразумевает наличие такой среды, но никоим образом не определяет ее. Соответствующие диалоговые среды разработки есть и, наверное, еще будут созданы новые. Эти среды отличаются друг от друга, иногда значительно, но все опираются на JavaBean, который является в этом смысле некоторым стандартом.

    По адресу http://jsp2.java.sun.com/products/javabeans/software/bdk_download.html можно загрузить Bean Development Kit ( BDK ), основу которого составляет BeanBox , но это скорее демонстрационное средство, а не инструмент для программирования.

    В процессе компонентного программирования можно выделить три группы действующих лиц, или три роли. Во-первых, это конечный пользователь, т.е. прикладной программист, который в визуальной среде собирает программу из отдельных компонент. Во-вторых, это разработчик готовых компонент. И, в-третьих, это разработчик визуальных сред компоновки программ.

    Соответственно, тут возможны варианты. Можно, например, создать среду и технологию построения компонент под эту среду. Именно так поступила MicroSoft, создав Visual Basic и технологии OLE и ActiveX. А можно сделать универсальную технологию, которая позволяла бы не только создавать компоненты, но и визуальные среды, использующие эти компоненты. JavaBean создана в расчете именно на этот вариант.

    Кроме того, нужно учитывать, что универсальная технология, претендующая на стандарт, должна учитывать интересы всех указанных групп действующих лиц. Она должна иметь средства, позволяющие разработчикам визуальных сред подключать различные компоненты в палитру доступных компонент, что вызывает необходимость наличия средств анализа готовых компонент. Она должна иметь правила разработки компонент, с тем, чтобы разработанная компонента могла быть интегрирована в визуальную среду. И, наконец, она должна определять средства связи компонент, которые прикладной программист использует для объединения готовых компонент в законченное приложение.

    Три указанные роли являются, конечно, некоторым идеалом и в реальности эти роли зачастую пересекаются. Так, фирмы разработчики визуальных сред (таких как, JBuilder, Semantec Cafe, VisualJ и др.) включают в состав своих продуктов разработанные ими библиотеки, содержащие бины; разработчики прикладного ПО в процессе разработки не только используют существующие бины, но и создают свои.

    Что такое Bean

    В документации от Sun бин определяется так: «A Java Bean is a reusable software component that can be manipulated visually in a builder tool.» («Java Bean это многократно используемый программный компонент, которым можно манипулировать визуально в (визуальных) средах разработки»).

    В простейшем случае бин — это отдельный класс, представляющий определенную компоненту. В более сложных случаях — это набор взаимосвязанных классов, каждый из которых играет определенную роль. Так многие классы стандартной библиотеки Java являются бинами, например, JLabel, JTextField и др.

    Основной класс бина должен удовлетворять одному требованию — он должен иметь конструктор по умолчанию (default constructor). Это требование естественно. Предполагается, что визуальная среда будет создавать экземпляры бинов и использовать для этого конструкторы по умолчанию. Есть и другие требования к бинам. Мы их рассмотрим далее.

    Бины могут быть совершенно разными как по размерам, сложности, так и по области применения. Каждый конкретный бин может поддерживать ту или иную степень функциональности, но типичные универсальные возможности, которые обеспечивает бин следующие.

    • Поддерживает «интроспекцию» (introspection), что позволяет средам разработки анализировать из чего состоит и как работает данный бин.
    • Обеспечивает настраиваемость (customization), т.е. возможность изменять внешний вид (положение, размеры и т.п.) и поведение данного бина.
    • Обеспечивает поддержку «событий» (events) как средства связи данного бина с программой и другими бинами.
    • Обеспечивает поддержку свойств или атрибутов (properties), которые используются, в частности, для настройки (например, ширина, высота, количество каких-либо составных подкомпонент и т.п.).
    • Поддерживает «сохраняемость» (persistence). Это необходимо для того, чтобы после настройки конкретного бина в некоторой визуальной среде разработки была возможность сохранить параметры настройки, а потом их восстановить.

    Рассмотрим эти возможности подробнее. И начнем с конца, с persistence («сохраняемости»), как с самого простого.

    Это свойство обеспечивается выполнением следующего требования. Каждый бин в заголовке описания класса должен содержать » implements java.io.Serializable «, т.е. бины должны быть сериализуемыми. Предполагается, что визуальная среда при сохранении скомпонованного приложения дополнительно сохраняет настройки компонент, сделанные пользователем в процессе разработки приложения и делает она это путем сериализации бина, например, в некоторый файл. При повторном входе в среду разработки и загрузке приложения эти настройки восстанавливаются. Для этого среда разработки просто десериализует бины из файла.

    Свойства бинов (Bean properties)

    Обычно каждый бин имеет свойства, которые определяют, как он будет работать и/или как он будет выглядеть. Эти свойства являются private или protected полями класса бина, которые доступны для выборки и/или модификации через специальные public методы. Другими словами бин обеспечивает доступ к своим свойствам через public методы ‘get. ‘ и ‘set. ‘. Эти методы называют аксессорами (accessor) или, жаргонно, getters и setters и имеют определенные правила построения. Так утверждение «данный бин имеет свойство name типа String » означает, что у этого бина

    private String name;

    public String getName()
    public void setString(String name)

    Такой подход соответствует общим принципам объектно-ориентированного программирования, когда внутренние поля класса недоступны непосредственно и могут быть извлечены/изменены только посредством вызова методов класса.

    Рассмотрим, к примеру, JLabel по документации. Во-первых, JLabel удовлетворяет интерфейсу Serializable, во-вторых, имеет конструктор по умолчанию

    и, в-третьих, имеет ряд методов аксессоров, например,

    public String getText()

    public void setText(String text)

    Исходя из этого, можно сделать вывод, что JLabel является бином, имеющим атрибут (свойство) text . Кроме того, JLabel имеет и другие пары get-/set-методов, т.е. имеет и другие атрибуты.

    Атрибуты бинов могут быть как элементарных типов ( int, long и т.п.), так и стандартных типов Java (например, String ), а также пользовательских типов (например, MyType , где MyType — класс, определенный пользователем).

      Для свойств типа boolean вместо get-метода используется is-метод. Например, JLabel имеет boolean-свойство enabled, унаследованное от класса Component . Для доступа к этому свойству имеются методы

    public boolean isEnabled()
    public void setEnabled(boolean b)
    Правила построение методов доступа к атрибутам (аксессоров)

    Аксессоры строятся по следующим правилам

    Эти правила относятся к простым свойствам. Кроме того, свойства могут быть индексированными или, другими словами, атрибут бина может быть массивом.

    Для индексированных свойств выработаны следующие правила.

    Они должны быть описаны как поля-массивы, например,

    private String[] messages;

    и должны быть такие методы

    Так, для приведенного выше примера должны быть методы

    public String getMessages(int index);

    public void setMessages(int index, String message);

    public String[] getMessages();

    public void setMessages(String[] messages);

    Bean-методы

    Кроме аксессоров, бин может иметь любое количество других методов, как обычный класс Java.

    Интроспекция бинов при помощи reflection API

    Описанных выше правил достаточно для осуществления простейшей интроспекции бинов с использованием reflection API. Вспомним возможности интроспекции, рассмотренные нами ранее.

    Для использования бина визуальная среда должна знать полное имя класса бина. По полному имени класса можно статическим методом forName класса Class получить объект класса Class для данного бина. И далее, используя возможности класса Class , получить всю необходимую информацию по данному методу.

    В частности, можно получить список всех public -методов данного класса. Исследуя их имена можно выделить из них аксессоры и определить какие атрибуты (свойства) есть у данного бина и какого они типа. Все остальные методы, не распознанные как аксессоры являются bean-методами.

    В результате соответствующая визуальнае среда разработки может построить диалог, в котором будет предоставлена возможность задавать значения этих атрибутов. Наличие конструктора по умолчанию позволяет построить объект bean-класса, set-методы позволят установить в этом объекте значения атрибутов, введенные пользователем, а благодаря сериализации объект с заданными атрибутами можно сохранить в файле и восстановить значение объекта при следующем сеансе работы с данной визуальной средой. Более того, можно изобразить на экране внешний вид бина (если это визуализируемый бин) в процессе разработки и менять этот вид в соответствии с задаваемыми пользователем значениями атрибутов.

    Связанные свойства (bound properties) и события

    Еще одним важным аспектом технологии JavaBeans является возможность бинов взаимодействовать с другими объектами, в частности, с другими бинами. JavaBeans реализует такое взаимодействие путем генерации (firing) событий и прослушивания (listening) событий.

    События и событийную модель Java мы рассматривали на 20-м занятии. В приложении к бинам взаимодействие объектов с бином через событийную модель выглядит так. Объект, который интересуется тем, что может произойти во внешнем, по отношению к нему, бине, может зарегистрировать себя как слушателя (listener) этого бина. В результате, при возникновении соответствующего события в бине будет вызван определенный метод данного объекта, которому в качестве параметра будет передан объект-событие (event). Причем, если зарегистрировалось несколько слушателей, то эти методы будут последовательно вызваны для каждого слушателя.

    Такой механизм взаимодействия является очень гибким, поскольку два объекта — бин и его слушатель, связаны только посредством данного метода и параметра-события. Модификации в структуре и алгоритмах работы двух этих объектов очень редко влияют на эту связь.

    Одним из способов экспорта событий является использование связанных свойств. Когда значение связанного свойства меняется, генерируется событие и передается всем зарегистрированным слушателям посредством вызова метода propertyChange .

    Приведем реальный пример. Рассмотрим текстовый редактор, позволяющий редактировать один файл. Такой пример мы уже рассматривали (Dlg5.java, занятие 17) и реализовали текущий редактируемый файл просто как поле типа File с именем currentFile . Изначально переменная currentFile не установлена. Она устанавливается при сохранении или чтении файла.

    Теперь, если мы захотим добавить в наше приложение вывод какой-то информации по данному файлу, например, вывод имени файла где-нибудь внизу или вверху экрана, нам придется внимательно отследить, где в программе может изменятся это поле и вставить в этих точках обновление имени файла на экране. В данном приложении это вполне приемлемо, так как оно является небольшим и обозримым, но в более сложных случаях это может вызвать проблемы.

    Альтернативный вариант состоит в построении бина со связанным свойством currentFile . Тогда при любой модификации этого свойства будет генерироваться событие. После этого мы можем создавать любое количество объектов, интересующихся значением свойства currentFile . Нам не придется при этом вносить какие-либо изменения в разработанный уже бин. Просто каждый новый такой объект должен зарегистрировать себя как слушателя данного бина. Для этого он должен иметь метод propertyChange , а в нем должен быть код, реагирующий на изменение свойства currentFile .

    Создание и использование связанного свойства

    Разберемся практически, как создавать и использовать связанные свойства.

    Начнем с события, которое должно быть сгенерировано при изменении связанного свойства. Это событие класса java.beans.PropertyChangeEvent (см. документацию).

    Далее можно действовать по следующей инструкции.

      1. Для регистрации/дерегистрации слушателя необходимо в бине реализовать два метода:

    public void addPropertyChangeListener(PropertyChangeListener pcl)
    public void removePropertyChangeListener(PropertyChangeListener pcl)
    public void propertyChange(PropertyChangeEvent evt)
    MyLitener obj = new MyListener(); myBean.addPropertyChangeListener(obj);

    Пункт 4-й должен быть реализован для каждого класса-слушателя, а п.5 — для каждого порожденного объекта-слушателя.

    [an error occurred while processing this directive]
    [an error occurred while processing this directive] (none)

    • Конспект лекций по Java
      • Оглавление
      • Занятие 1. Вступление.
      • Занятие 2. JAVA — объектно-ориентированный язык программирования.
      • Занятие 3. Реализация принципов объектно-ориентированного подхода в Java. Знакомство с документацией.
      • Занятие 4. Операции. Литералы. Операторы.
      • Занятие 5. Массивы. Конструкторы классов. Работа со строками.
      • Занятие 6. Знакомство с библиотеками и пакетами. Первая диалоговая программа.
      • Занятие 7. Наследование классов.
      • Занятие 8. Наследование классов (продолжение). Полиморфизм. Абстрактные классы. Интерфейсы.
      • Занятие 9. Вложенные классы.
      • Занятие 10. Статические вложенные классы. Коллекции объектов.
      • Занятие 11. Коллекции объектов (продолжение). Задание порядка на множестве.
      • Занятие 12. Коллекции — ассоциативные массивы (Map). Сортировка и поиск.
      • Занятия 13. Обработка исключительных ситуаций (Exceptions).
      • Занятие 14. Исключительные ситуации (продолжение). Ввод/вывод.
      • Занятие 15. Ввод/вывод (продолжение).
      • Занятие 16. Интерфейс FileFilter. Класс JFileChooser.
      • Занятие 17. Сериализация объектов.
      • Занятие 18. События и их реализация. Класс JList библиотеки Swing.
      • Занятие 19. Аплеты.
      • Занятие 20. Продолжение знакомства с библиотекой Swing. Класс JTabbedPane.
      • Занятие 21. Идентификация типа во время выполнения.
      • Занятие 22. Идентификация типа во время выполнения (продолжение). Множественные нити выполнения (Multiple threads).
      • Занятие 23. Множественные нити выполнения (продолжение).
      • Занятие 24. Множественные нити выполнения (продолжение).
      • Занятие 25. Технология JavaBeans.
      • Занятие 26. Технология JavaBeans (продолжение).
      < Вернуться на caйт:: Copyright © 1999 — 2010, IT • archiv.

      Компонент JavaBean

      Компоненты JavaBean – это многократно используемые классы Java, позволяющие разработчикам существенно ускорять процесс разработкии WEB-приложений путем их сборки из программных компонентов. JavaBeans и другие компонентные технологии привели к появлению нового типа программирования – сборки приложений из компонентов, при котором разработчик должен знать только сервисы компонентов; детали реализации компонентов не играют никакой роли.

      JavaBean – это одноуровневые объекты, использующиеся для того, чтобы инкапсулировать в одном объекте код, данные или и то и другое. Компонент JavaBean может иметь свойства, методы и события, открытые для удаленного доступа.

      Методы getters setters

      Компонент JavaBean должен удовлетворять определенным соглашениям о наименовании методов и экспортируемых событий. Одним из важных понятий технологии JavaBeans является внешний интерфейс properties (свойства). Property JavaBean – это методы getters setters, обеспечивающие доступ к информации о внутреннем состоянии компонента JavaBean.

      Для обращения к компонентам JavaBeans на странице JSP необходимо использовать следующее описание тега в разделе head :

      Идентификатор BeanID определяет имя компонента JavaBean, являющееся уникальным в области видимости, определенной атрибутом scope. По умолчанию принимается область видимости scope=»page», т.е. текущая страница JSP.

      Обязательный атрибут класса компонента «class» может быть описан следующим способом:

      класса" [type="полное имя суперкласса"]

      Свойства JavaBean — jsp:setProperty jsp:getProperty

      Свойство JavaBean компонента устанавливается тегом jsp:setProperty. Пример :

      Для чтения свойства компонента JavaBean с именем myBean используется тег jsp:getProperty :

      В следующем листинге приведен пример компонента JavaBean, содержащего строку mystr, используемую в качестве свойств компонента. В компоненте определены методы getter setter.

      package beans; public class myBean < private String mystr; //---------------------------------------------- public String getMystr() < return mystr; >//---------------------------------------------- public void setMystr(String mystr) < this.mystr = mystr; >//---------------------------------------------- >

      Синтаксис описания компонента JavaBean на странице JSP приведен на странице Действия actions JSP

      Пример использования JavaBean на странице JSP

      Рассмотрим простой пример, в котором на странице JSP будет выведено приветствие из JavaBean компонента. Для разработки будет использована IDE Eclipse. На следующем скриншоте представлена структура проекта JavabeanExample, включающего компонент JavaBeanHello.java, страницу index.jsp и дескриптор приложения.

      Листинг JavaBean компонента JavaBeanHello.java

      Компонент включает свойстве message и методы get/set.

      package example; public class JavabeanHello < private String message = "JavaBean компонент приветствует Вас!"; public JavabeanHello() <>public String getMessage() < return message; >public void setMessage(final String message) < this.message = message; >>
      Листинг дескриптора приложения web.xml
         index.jsp   

      Дескриптор приложения не включает никакой информации о JavaBean компоненте, используемый на страницах WEB-приложения.

      Листинг JSP страницы index.jsp
           %>   JavaBean с JSP!  $ Сегодня  

      На странице определена кодировка UTF-8 и выполняется импорт утилит и классов для работы с датой. Тег определяет JavaBean компонент — класс, область видимости (page) и alias использования на странице. Для вывода на страницу сообщения компонента указывается его alias и свойство «$».

      Интерфейс страницы представлен на следующем скриншоте.

      Курсивом на страницу выведена строка с текущей датой и временем.

      Скачать примеры

      Исходные коды проекта JavaBeanExample, рассмотренного в тексте страницы, можно скачать здесь (7 Кб).

      Добавить комментарий

      Ваш адрес email не будет опубликован. Обязательные поля помечены *