Places where JavaBeans are used?
什么是JavaBean?为什么我需要它?因为我可以用类和接口结构创建所有应用程序?为什么我需要豆子?你能给我举几个例子,哪些bean是必需的而不是类和接口?
请在下面的上下文中解释bean的重要性:
- WEP应用程序
- 独立应用程序
他们往往只是代表真实世界的数据。这里的一个简单的实例:一个JavaBean
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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); } } |
实施
例如,在街道一级,你可以使用它创建一个列表的用户wherein你大的数据报
1 2 3 4 5 6 7 8 9 | 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; |
例如,在一个servlet类,你可以使用它的两个传输数据从数据库的界面:
1 2 3 4 5 | protected void doGet(HttpServletRequest request, HttpServletResponse response) { List<User> users = userDAO.list(); request.setAttribute("users", users); request.getRequestDispatcher("users.jsp").forward(request, response); } |
例如,在一个JSP页面,你可以访问它follows市电力,这两个公约的JavaBean,显示的数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <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是所有的,他们都是我们的会议和单是卷曲的larger图书馆辨别出那些有两个automate公约的事情。只是几个原因为什么应该使用JavaBeans。
- 他们serialize nicely。
- 可以使用instantiated反射。
- 可以使用反射的,否则极易控。
- 好encapsulating从企业实际数据的代码。
- 普通公约均可以使用您的任何人,你可以使用豆和其他人的"没有任何一种文件/手册在易洽的人。
- 非常近,我甚至POJO均值之间的互动娱乐方成不同的系统。
也有企业JavaBeans的大学课程,这是一个整体和另一物不应该被混合与平原的JavaBeans。我只是想说:因为EJB是相似的名字和它的两个这两个容易混淆的。
比恩的Web应用程序
如果你认为"正常"的JavaBeans的网络应用程序的上下文,他们使更多的意义比穿的鞋在你的腿。由于《Servlet规范requires会话是可序列化的,它的意思是你应该在你的数据的大的东西,如会话的序列化-为什么不让它有一个豆!我把你的somebusinessdatabean为会议和你的好去,laughably e和convenient规范兼容。
数据转移,也在《应用冰太容易从两个decouple JavaBeans帮助你方完全你的应用。我认为作为一个方便的JavaBeans和各种子系统的应用为部门内的一个非常大的公司的一个部门。一堆邮件数据的两个系(B系B不知道或甚至在数据服务的研究只是作为它应该是开放的和只是从起飞,读的东西。它和我的东西,它基于数据。
豆在独立的应用
我的是什么applies以上两个独立的应用程序。唯一不同的是,你可以与IP界面混乱,一位从独立应用程序有更多的有状态的Web界面:当有statelss应用的界面:在一些用例,simulate只读状态的界面:。因为这种差异,它使美国更容易吗?一个独立的应用程序,但与混乱。帽子和一个整体的另一个话题和不直接相关的所有组件。
A豆冰淇淋没有太多,真的。一类是一个"全豆",它requires冰淇淋:
- 两个有一个公共的,无参数constructor
- 两个可序列化(Serializable接口两个实施的,无论是直接或通过一个它的超类。
那,你可以添加的getters和制定对置业的两级,符合一个特定的命名(如果你想要的田野被发现在某些情况下(如制作这类的一些对象,你可以拖动和下降从一个视觉编辑你的主意,例如)。
你可以找到更多的太阳直接从这里。
Java bean是一种软件组件,它被设计成在各种不同的环境中可重用。对bean的能力没有限制。它可以执行简单的功能,例如检查文档的拼写,或者执行复杂的功能,例如预测股票组合的性能。be an可能对最终用户可见。其中一个例子是图形用户界面上的按钮。bean对用户也可能是不可见的。实时解码多媒体信息流的软件就是这种构建块的一个例子。最后,bean可以设计为在用户的工作站上自主工作,或者与一组其他分布式组件协作。从一组数据点生成饼图的软件就是一个可以在本地执行的bean示例。但是,从股票或商品交易所提供实时价格信息的bean需要与其他分布式软件合作以获取其数据。
我们很快就会看到软件开发人员必须对一个类做什么特定的更改,以便它可以作为Java bean使用。然而,Java设计者的目标之一是使它易于使用这种技术。因此,代码更改是最小的。
爪哇豆的优势
软件组件体系结构提供了处理软件构建块的标准机制。下面的列表列举了Java技术为组件开发人员提供的一些特定好处:
- bean获得Java的"一次写入,运行任何地方"范例的所有好处。
- 向应用程序公开的bean的属性、事件和方法可以控制生成器工具。
- bean可以设计为在不同的地方正确地运行,这使得它在全球市场有用。
- 可以提供辅助软件来帮助用户配置bean。这个软件是仅当正在设置该组件的设计时参数时才需要。它不需要包括在运行时环境中。
- bean的配置设置可以保存在持久存储中并还原。稍后。
- bean可以注册以接收来自其他对象的事件,并可以生成发送到其他对象。
下面是一个JavaBean的简单示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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的真实bean,它有一个状态(变量thevalue),该状态将由JavaBeans持久性机制自动保存和还原,并且它有一个名为myvalue的属性,可由可视化编程环境使用。这个bean没有任何可视化表示,但这不是JavaBean组件的要求。