1. ホーム
  2. java

[解決済み] JavaBeansが使われている場所?

2022-04-13 05:18:21

質問

JavaBeanとは何ですか、なぜ必要なのですか?私はクラスとインタフェース構造ですべてのアプリケーションを作成することができますので?なぜBeanが必要なのですか?また、クラスやインターフェースの代わりにBeanが不可欠な例をいくつか教えてください。

ビーンの必要性について、以下の文脈で説明してください。

  • Wepアプリ
  • スタンドアロンアプリ

解決するには?

実世界のデータを表現しているだけであることが多い。以下は、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の規約に則って表示するようにしました。

<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>

意味があるのでしょうか?ほら、なんというか 規約 に至るまで、あらゆる場所で使用することができます。 ストア , 転送 アクセス のデータを使用します。

こちらもご覧ください。