编辑: QQ215851406 | 2019-07-08 |
在Java 模型中,通过 JavaBean 可以无限 扩充 Java 程序的功能,通过 JavaBean 的组合可以快速生成新的应用程序.JavaBean 的 产生使 JSP 页面中的业务逻辑变得更加清晰,程序之中的实体对象及业务逻辑可以单独 封装到 Java 类之中.这样不仅提高了程序的可读性和易维护性,而且还提高了代码的重 用性. 本章将主要介绍 JavaBean 的构成,以及不同类型属性的使用和 JavaBean 的应用, 并详细介绍了不同作用域中 JavaBean 的生命周期. 本章学习要点: 熟练掌握 JavaBean 的构成 掌握 JavaBean 中不同类型属性的使用 掌握 JavaBean 的编写和部署 熟练掌握 JavaBean 在JSP 页面中的应用 熟练掌握 JavaBean 不同作用域的应用 5.1 JavaBean 概述 JavaBean 实质上是一个 Java 类,一个遵循特定规则的类.当用在 Web 程序中时, 会以组件的形式出现,并完成特定的逻辑处理功能. 5.1.1 JavaBean 技术介绍 使用 JavaBean 的最大优点就在于它可以提高代码的重用性.编写一个成功的 JavaBean,宗旨为 一次性编写,任何地方执行,任何地方重用 . 1.一次性编写 一个成功的 JavaBean 组件重用时不需要重新编写, 开发者只需要根据需求修改和升 级代码即可. 2.任何地方执行 一个成功的 JavaBean 组件可以在任何平台上运行,JavaBean 是基于 Java 语言编写 的,所以它可以轻易移植到各种运行平台上. 第5章109 JavaBean 技术 3.任何地方重用 一个成功的 JavaBean 组件能够被在多种方案中使用,包括应用程序、其他组件、 Web 应用等. 5.1.2 JavaBean 的分类 JavaBean 按功能可分为可视化 JavaBean 和不可视 JavaBean 两类.可视化 JavaBean 就是具有 GUI 图形用户界面的 JavaBean;
不可视 JavaBean 就是没有 GUI 图形用户界面 的JavaBean,最终对用户是不可见的,它更多地是被应用到 JSP 中. 不可视 JavaBean 又分为值 JavaBean 和工具 JavaBean. (1)值JavaBean:严格遵循了 JavaBean 的命名规范,通常用来封装表单数据,作为 信息的容器,如下面的 JavaBean 类. public class User { private String username;
//用户名 private String password;
//密码 public String getUsername() { return username;
} public void setUsername(String username) { this.username = username;
} public String getPassword() { return password;
} public void setPassword(String password) { this.password = password;
} } (2)工具 JavaBean:可以不遵循 JavaBean 规范,通常用于封装业务逻辑、数据操作 等, 例如, 连接数据库, 对数据库进行增、 删、 改、 查和解决中文乱码等操作. 工具 JavaBean 可以实现业务逻辑与页面显示的分离, 提高了代码的可读性与易维护性, 如下面的代码. public class MyTools { public String change(String source) { source=source.replace( , >
);
return source;
} }
110 Java Web 开发实践教程 5.1.3 JavaBean 规范 通常一个标准的 JavaBean 类需要遵循以下规范. 1.实现可序列接口 JavaBean 应该直接或间接实现 java.io.Serializable 接口,以支持序列化机制. 2.公共的无参构造方法 一个 JavaBean 对象必须拥有一个公共类型、默认的无参构造方法,从而可以通过 new 关键字直接对其进行实例化. 3.类的声明是非 final 类型的 当一个类声明为 final 类型时,它是不可以更改的,所以 JavaBean 对象的声明应该 是非 final 类型的. 4.为属性声明访问器 JavaBean 中的属性应该设置为私有类型(private) ,可以防止外部直接访问,它需要 提供对应的 set***()和get***()方法来存取类中的属性,方法中的 *** 为属 性名称,属性的第一个字母应大写.若属性为布尔类型,则可使用 is***()方法代替 get***()方法. JavaBean 的属性是内部核心的重要信息,当JavaBean 被实例化为一个对象时,改变 它的属性值也就等于改变了这个 Bean 的状态. 这种状态的改变常常也伴随着许多数据处 理动作,使得其他相关的属性值也跟着发生变化. 实现 java.io.Serializable 接口的类实例化的对象被 JVM(Java 虚拟机) 转化为一个字 节序列,并且能够将这个字节序列完全恢复为原来的对象,序列化机制可以弥补网络传 输中不同操作系统的差异问题.作为 JavaBean,对象的序列化也是必需的.使用一个 JavaBean 时,一般情况下是在设计阶段对它的状态信息进行配置,并在程序启动后期恢 复,这种具体工作是由序列化完成的. 【练习 1】 创建一个简单的 JavaBean 类Student,该类中包含属性 name、age、sex,分别表示 学生的姓名、年龄和性别.具体的 Student 类的实现如下. import java.io.Serializable;