使用JavaBeans的地方?
什么是JavaBean,为什么我需要它? 因为我可以用类和接口结构创建所有应用程序? 为什么我需要豆子? 你能给我一些例子,说明bean是必不可少的,而不是类和接口?
请在下面的上下文中解释一下bean的本质:
它们通常只代表真实世界的数据。 这里是一个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
本身并不是强制性的,但如果您希望能够在Java内存之外持久存储或传输Javabeans,例如在硬盘或网络中,则非常有用。
例如,在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;
在例如一个Servlet类中,您可以使用它来将数据从数据库传输到UI:
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
List<User> users = userDAO.list();
request.setAttribute("users", users);
request.getRequestDispatcher("users.jsp").forward(request, response);
}
在例如JSP页面中,您可以通过遵循Javabean约定的EL来访问它,以显示数据:
<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应该被使用的几个原因:
当然,Enterprise JavaBeans也是另外一个问题,不应该与纯JavaBeans混合使用。 我只是想提到EJB:因为名称很相似,很容易让这两者混淆。
豆类在Web应用程序中
如果您在Web应用上下文中考虑“普通”的JavaBeans,那么它们比在您的腿上穿鞋更有意义。 由于Servlet规范要求会话是可序列化的,这意味着您应该将会话中的数据存储为可序列化的数据 - 为什么不把它变成一个bean呢? 只需将您的SomeBusinessDataBean放入会话中,您就可以轻松实现,符合规范且方便。
同时在应用程序中传输数据也很容易,因为JavaBeans可以帮助您完全分离应用程序的各个部分。 将JavaBeans视为一封信,并将应用程序的各种子系统视为一个非常大的公司内的部门:Dept.A将大量数据寄给Dept.B,Dept.B不知道 - 甚至是Care-数据来自哪里因为它应该是,并且可以打开信件,从中读取信息并基于该信息做它的事情。
豆在独立的应用程序
实际上,以上内容也适用于独立应用程序,唯一的区别是您可以更多地混淆UI,因为独立应用程序具有有状态UI:s Web应用程序具有statelss UI:在某些情况下,它仅模拟有状态UI:s 。 由于这种差异,与独立应用程序混淆更容易,但这值得整个另一个话题,并且与JavaBeans根本没有直接关系。
一个bean没什么,真的。 对于一个类是“bean”,它只需要:
为此,如果您希望字段在某些情况下可被发现(例如,让您的某个对象可以从您的可视化编辑器中拖放),则可以为符合特定命名约定的类的属性添加getter和setter IDE)。
你可以在这里直接找到Sun。
链接地址: http://www.djcxy.com/p/76563.html上一篇: Places where JavaBeans are used?
下一篇: How do servlets work? Instantiation, sessions, shared variables and multithreading