Места, где используются JavaBeans?
Что такое JavaBean и зачем он мне нужен? Так как я могу создать все приложения с классом и структурой интерфейса? Зачем мне нужны бобы? И можете ли вы дать мне несколько примеров, где бобы необходимы вместо классов и интерфейсов?
пожалуйста, объясните сущность Боба в приведенном ниже контексте:
- Wep apps
- автономные приложения
4 ответа:
они часто просто представляют данные реального мира. Вот простой пример Javabean:
public class User implements java.io.Serializable { // Properties. private Long id; private String name; private Date birthdate; // Getters. public Long getId() { return id; } public String getName() { return name; } public Date getBirthdate() { return birthdate; } // Setters. public void setId(Long id) { this.id = id; } public void setName(String name) { this.name = name; } public void setBirthdate(Date birthdate) { this.birthdate = birthdate; } // Important java.lang.Object overrides. public boolean equals(Object other) { return (other instanceof User) && (id != null) ? id.equals(((User) other).id) : (other == this); } public int hashCode() { return (id != null) ? (getClass().hashCode() + id.hashCode()) : super.hashCode(); } public String toString() { return String.format("User[id=%d,name=%s,birthdate=%d]", id, name, birthdate); } }
реализация
Serializable
не является обязательным, но очень полезно, если вы хотите иметь возможность сохранять или передавать Javabeans вне памяти Java, например, на жестком диске или по сети.например, в классе DAO вы можете использовать его для создания списка пользователей, в котором вы магазине данные
user
таблицы в базе данных:List<User> users = new ArrayList<User>(); while (resultSet.next()) { User user = new User(); user.setId(resultSet.getLong("id")); user.setName(resultSet.getString("name")); user.setBirthdate(resultSet.getDate("birthdate")); users.add(user); } return users;
In например, класс сервлета можно использовать для передачи данные из базы данных в пользовательский интерфейс:
protected void doGet(HttpServletRequest request, HttpServletResponse response) { List<User> users = userDAO.list(); request.setAttribute("users", users); request.getRequestDispatcher("users.jsp").forward(request, response); }
например, на странице JSP вы можете открыть это EL, который следует за соглашениями Javabean, чтобы отобразить данные:
<table> <tr> <th>ID</th> <th>Name</th> <th>Birthdate</th> </tr> <c:forEach items="${users}" var="user"> <tr> <td>${user.id}</td> <td><c:out value="${user.name}" /></td> <td><fmt:formatDate value="${user.birthdate}" pattern="yyyy-MM-dd" /></td> </tr> </c:forEach> </table>
имеет ли это смысл? Видите ли, это своего рода который вы можете использовать везде, чтобы магазине,передачи и открыть данные.
Читайте также:
фасоль
JavaBeans везде, они являются соглашением, и почти каждая немного большая библиотека использует эти соглашения для автоматизации вещей. Всего несколько причин, почему JavaBeans должны быть использованы:
- они сериализуются красиво.
- может быть создан с помощью отражения.
- в противном случае можно управлять с помощью отражения очень легко.
- хорошо для инкапсуляции фактических данных из бизнес-код.
- общие соглашения означают, что каждый может использовать ваши бобы, и вы можете использовать все остальные бобы без какой-либо документации/руководства легко и последовательно.
- очень близко к POJOs, что на самом деле означает еще большую совместимость между различными частями системы.
есть конечно Enterprise JavaBeans которые совсем другое дело и не должны смешиваться с простыми JavaBeans. Я просто хотел упомянуть EJB: s, потому что имена похожи, и легко запутать эти два.
бобы в веб-приложениях
Если вы рассматриваете" нормальные " JavaBeans в контексте веб-приложения, они имеют больше смысла, чем носить обувь на ногах. Поскольку спецификация сервлета требует, чтобы сеансы были сериализуемыми, это означает, что вы должны хранить свои данные в сеансе как что - то сериализуемое-почему бы не сделать его Бобом тогда! Просто бросьте свой SomeBusinessDataBean в сессия, и вы хорошо идти, смехотворно легко, спецификации-совместимый и удобный.
также передача этих данных вокруг приложения также легко, так как JavaBeans поможет вам полностью отделить части вашего приложения. Подумайте JavaBeans как письмо и различные подсистемы приложения как отделы в очень большой корпорации: Dept.A отправляет кучу данных в отдел.Б, Отдел.Б не знает -или равно - откуда пришли данные так же, как и он должно быть и может просто открыть письмо, прочитать материал из него и сделать свое дело на основе этих данных.
бобы в автономных приложениях
на самом деле, что вышесказанное относится и к автономные приложения тоже, разница только в том, что вы можете испортить с интерфейсом немного больше с автономных приложений с отслеживанием состояния пользовательского интерфейса:с в то время как веб-приложения statelss интерфейса:S, которая в некоторых случаях только имитировать состояния пользовательского интерфейса:С. Из-за этой разницы, проще напутать с автономным приложение, но это стоит совсем другой темы и не имеет прямого отношения к JavaBeans вообще.
Боб ничего особенного. Для того, чтобы класс был "Бобом", все, что требуется, это:
- чтобы иметь публичный конструктор аргументов
- быть сериализуемым (реализовать сериализуемый интерфейс, либо напрямую, либо через один из его суперклассов).
к этому можно добавить геттеры и сеттеры для свойств класса, которые соответствуют определенному соглашению об именовании, если вы хотите, чтобы поля были обнаружены в определенных обстоятельствах (например, сделав этот класс каким-то объектом, вы можете перетащить его из визуального редактора в своей среде IDE).
вы можете найти более непосредственно от Солнца здесь.
Java Bean-это программный компонент, предназначенный для многократного использования в различных средах. Нет никаких ограничений на возможности Боба. Он может выполнять простую функцию, такую как проверка орфографии документа, или сложную функцию, такую как прогнозирование производительности портфеля акций. Боб может быть виден конечному пользователю. Одним из примеров этого является кнопка на графическом интерфейсе пользователя. Боб также может быть невидимым для пользователя. Программное обеспечение для декодирования поток мультимедийной информации в режиме реального времени является примером такого типа строительного блока. Наконец, Бин может быть сконструирован для автономной работы на рабочей станции пользователя или для работы в сотрудничестве с набором других распределенных компонентов. Программное обеспечение для создания круговой диаграммы из набора точек данных является примером компонента, который может выполняться локально. Тем не менее, Боб, который предоставляет информацию о ценах в реальном времени с фондовой или товарной биржи, должен работать в сотрудничестве с другими распределенное программное обеспечение для получения данных.
мы скоро увидим, какие конкретные изменения разработчик программного обеспечения должен внести в класс, чтобы он мог использоваться в качестве Java-компонента. Тем не менее, одной из целей разработчиков Java было упростить использование этой технологии. Поэтому изменения кода минимальны.
преимущества Java Beans
архитектура программных компонентов предоставляет стандартные механизмы для работы с программными строительными блоками. Этот в следующем списке перечислены некоторые из конкретных преимуществ, которые технология Java предоставляет разработчику компонентов:
- Боб получает все преимущества парадигмы Java "write-once, run-anywhere".
- свойства, события и методы компонента, которые предоставляются приложению инструмент builder можно контролировать.
- фасоль может быть конструирована для того чтобы работать правильно в различных локалях, который делает его полезно в глобальном рынки.
- вспомогательное программное обеспечение может быть предоставлено, чтобы помочь человеку настроить Боб. Это программное обеспечение требуется только при установке параметров времени разработки для этого компонента. Оно не нужно быть включенным в среду выполнения.
- параметры конфигурации компонента могут быть сохранены в постоянном хранилище и восстановлены в более позднее время.
- Боб может регистрироваться для получения событий от других объектов и может генерировать события, которые отправляются в другие объекты.
вот простой пример Javabean:
public class MyBean implements java.io.Serializable { protected int theValue; public MyBean() { } public void setMyValue(int newValue) { theValue = newValue; } public int getMyValue() { return theValue; } }
это реальный боб с именем MyBean, который имеет состояние (переменная theValue), которое будет автоматически сохранено и восстановлено механизмом сохранения JavaBeans, и он имеет свойство с именем MyValue, которое можно использовать в среде визуального программирования. Этот компонент не имеет никакого визуального представления, но это не является требованием для компонента JavaBean.