前端视角 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;
    }
}
相关推荐
大G哥14 分钟前
Kotlin Lambda语法错误修复
android·java·开发语言·kotlin
RunsenLIu36 分钟前
基于Django实现的篮球论坛管理系统
后端·python·django
行走__Wz40 分钟前
计算机学习路线与编程语言选择(信息差)
java·开发语言·javascript·学习·编程语言选择·计算机学习路线
Micro麦可乐2 小时前
最新Spring Security实战教程(十四)OAuth2.0精讲 - 四种授权模式与资源服务器搭建
java·服务器·spring boot·spring·spring security·oauth2·oauth2授权
进击的小白菜2 小时前
如何高效实现「LeetCode25. K 个一组翻转链表」?Java 详细解决方案
java·数据结构·leetcode·链表
HelloZheQ2 小时前
Go:简洁高效,构建现代应用的利器
开发语言·后端·golang
悟能不能悟2 小时前
java实现一个操作日志模块功能,怎么设计
java·开发语言
caihuayuan52 小时前
[数据库之十四] 数据库索引之位图索引
java·大数据·spring boot·后端·课程设计
blammmp3 小时前
算法专题四:前缀和
java·开发语言·算法
饕餮争锋3 小时前
Spring普通配置类 vs 自动配置类-笔记
java·笔记·spring