前端视角 Java Web 入门手册 4.4:Web 开发基础—— Java Bean

在 Java Web 开发中经常会听到 Java Bean,Java Bean 是指满足特定规则的 Java 类,用于封装数据,提供标准的访问方法,它是一种设计模式,旨在提高组件的可重用性和可维护性。JavaBeans 通过标准化的属性访问方法、事件机制和序列化支持,使得这些组件能够在不同的开发环境和工具中被轻松集成和使用。

约定

Java Bean 语法上无任何特殊之处,但遵守几个约定

  • 提供无参构造函数:如果没有定义任何构造函数,编译器会自动提供一个默认的无参构造方法。如果自定义了带参构造方法,必须显式地定义一个无参构造方法
  • 所有属性都是 private 的,并提供 getter/setter
  • 类可序列化,用于持久化传输、保存

Java 有一个不成文的规定,如果要访问一个类的 private 字段,需要写 getter/setter 方法。如果属性名为 xxx,name getter 名为 getXXX,setter 名为 setXXX

基础语法

java 复制代码
public class Person implements Serializable {
    private String name = null;
    private boolean deceased = false;

    public Person() {

    }

    public String getName() {
        return name;
    }

    public void setName(final String value) {
        name = value;
    }

    public boolean isDeceased() {
        return deceased;
    }

    public void setDeceased(final boolean value) {
        deceased = value;
    }
}

Java Bean 的用途

Java Bean 被广泛应用于各种 Java 技术和框架中,主要用于封装数据、管理资源、支持表单处理等

1. 数据传输对象 (DTO)

在不同层(如表示层和业务逻辑层)之间传输数据时,Java Bean 可以作为 数据传输对象,封装数据并提供标准化的访问方法。

java 复制代码
public class UserDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    
    private String username;
    private String email;
    
    public UserDTO() {
    }
    
    // Getter and Setter methods...
}

2. 表单处理

在 Web 应用中,Java Bean 可以用于接收和验证用户提交的表单数据。Servlet 或 JSP 可以将表单数据映射到 Java Bean 实例,简化数据处理流程。

java 复制代码
// UserForm.java
public class UserForm implements Serializable {
    private static final long serialVersionUID = 1L;

    private String username;
    private String password;

    public UserForm() {
    }

    // Getter and Setter methods...
}

// 在 Servlet 中使用
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    UserForm form = new UserForm();
    form.setUsername(request.getParameter("username"));
    form.setPassword(request.getParameter("password"));

    // 进一步处理表单数据
}

3. 组件开发

Java Bean 作为可重用的组件,可在多种应用程序中集成和使用。Java EE 中的 Enterprise Java Bean (EJB) 扩展了 Java Bean 的概念,支持分布式应用和事务管理等高级功能。

java 复制代码
// Simple Component Bean
public class CalculatorBean implements Serializable {
    private static final long serialVersionUID = 1L;

    private int operand1;
    private int operand2;

    public CalculatorBean() {
    }

    // Getter and Setter methods...

    public int add() {
        return operand1 + operand2;
    }

    public int subtract() {
        return operand1 - operand2;
    }
}

4. 配置管理

Java Bean 可用于封装应用程序的配置参数,通过标准化的访问方法,简化配置管理和动态更新。

java 复制代码
public class AppConfig implements Serializable {
    private static final long serialVersionUID = 1L;

    private String dbUrl;
    private String dbUser;
    private String dbPassword;

    public AppConfig() {
    }

    // Getter and Setter methods...
}

Java Bean 与 POJO 的区别

POJO(Plain Old Java Object) 是一个简单的 Java 对象,不受任何特殊框架或规范的限制。它通常没有业务逻辑,仅用于数据存储和传输。两者有以下区别

  1. 规范要求
    • Java Bean:需遵循特定的编程规范(如无参构造方法、Getter 和 Setter 方法、实现 Serializable 接口)。
    • POJO:不需要遵循任何特定的规范,更加灵活。
  2. 用途
    • Java Bean:通常用于组件开发、数据传输对象 (DTO)、表单处理等场景,需要与各种框架和工具集成。
    • POJO:用于简单的数据存储,无需与框架或工具集成。

POJO 示例:

java 复制代码
public class Product {
    public String name;
    public double price;
}

JavaBean 示例

java 复制代码
import java.io.Serializable;

public class Product implements Serializable {
    private static final long serialVersionUID = 1L;

    private String name;
    private double price;

    public Product() {
    }

    // Getter and Setter for name
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    // Getter and Setter for price
    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}
相关推荐
fusugongzi2 分钟前
spring boot连接clickhouse集群,实现故障节点自动切换
java·spring boot·clickhouse
GOTXX8 分钟前
C++11多线程,锁与条件变量
java·c++·c·多线程·条件变量·互斥锁
dapeng-大鹏12 分钟前
什么是云原生?
后端·云原生
TDengine (老段)30 分钟前
TDengine 使用最佳实践
java·大数据·数据库·物联网·时序数据库·iot·tdengine
怦然心动~43 分钟前
springboot 3 集成Redisson
java·spring boot·redisson
Imagine Miracle1 小时前
【Rust】枚举和模式匹配——Rust语言基础14
开发语言·后端·rust
无名之逆1 小时前
探索 Rust 高效 Web 开发:Hyperlane 框架深度解析
开发语言·后端·算法·面试·rust
小Mie不吃饭1 小时前
Maven | 站在初学者的角度配置
java·spring boot·maven
林犀居士1 小时前
JVM系统变量的妙用
java·jvm系统变量
Asthenia04121 小时前
从零聊起:RocketMQ Producer 的预绑定主题列表和事务消息
后端