JavaBean的冷藏与解冻
即javaBean的串行化(Serializable)与并行化(DeSerializable)
串行处理 功能真正强大之处在于一个Java程序不需要直接处理存储在硬盘上面的原始数据,就可以
很容易地将一个java对象和一个二进制流之间相互转换.
将一个对象串行化只需要实现两个接口中的一个即可:要么实现java.io.Serializable接口,或
Externalizable接口.Serializable接口是一个标识接口,它没有任何方法,Externalizable接口是Serializable的
子类,有两个方法要实现.一般采用Serializable接口.
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/**
* 说明:
* 这是一个将TextField 的对象进行串行化和并行化处理的例子
* 串行化时将执行这个(即打开,将下面的注释)
* TextField textField = makeTextField(text, size);
* serialzeTextField(textField, "myTextField.ser");
*
*并行化时执行下面这个(即打开,将上面的注释)
* TextField textField = dserialzeTextField("myTextField.ser");
*/
public class PickleMaker extends Frame {
private static final long serialVersionUID = -7908334509971379077L;
public PickleMaker(String text, int size) {
super("Pickle Maker");
addWindowListener(new WinLis());
setLayout(new FlowLayout());
// 冷藏
TextField textField = makeTextField(text, size);
serialzeTextField(textField, "myTextField.ser");
// 解冻
//TextField textField = deserialzeTextField("myTextField.ser");
add(textField);
}
// 将textField对象串行化
private void serialzeTextField(TextField textField, String fileName) {
try {
FileOutputStream outStream = new FileOutputStream(fileName);
ObjectOutputStream oos = new ObjectOutputStream(outStream);
oos.writeObject(textField);
oos.flush();
oos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//并行化处理 即将保存在硬盘的数据 转为实例对象
private TextField deserialzeTextField(String fileName) {
TextField tf = null;
try {
FileInputStream fis = new FileInputStream(fileName);
ObjectInputStream ois = new ObjectInputStream(fis);
tf = (TextField) ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
return tf;
}
// 创建TextField对象
private TextField makeTextField(String text, int size) {
TextField tf = new TextField(text, size);
return tf;
}
public static void main(String[] args) {
Frame f = new PickleMaker("No Matter where you go.", 25);
f.setBounds(0, 0, 300, 200);
f.setVisible(true);
}
}
//事件处理
class WinLis extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
Frame f = (Frame) e.getSource();
f.setVisible(false);
f.dispose();
System.exit(0);
super.windowClosing(e);
}
}
而在JSP中也有应用
JSP中使用串行化
* 如:<jsp:useBean id="UserBean" type="com.bean.UserBean" beanName="serUserBean"/>
* <jsp:getProperty name="UserBean" property="userName"/>
* 若中beanName所对应的值就是冷藏的文件名称,
jsp引擎实际上是调用Beans.instantiate()方法进行并行化的.
/**
* 不应当串行化的条件:
*1.一个类与本地代码(native code)有紧密的关系.如java.util.zip.Deflater则是一个例子
*2.对象的内部状态依赖于java虚拟机或运行环境,从而在每一次运行时这个状态都有可能不同.
* 如:java.lang.Thread, java.io.InputStream, java.io.FileDescriptor
* java.awt.PrintJob等
*3.串行化可能带来潜在的安全隐患.如:java.lang.SecurityManager以及java.security.MesssageDigest等
*4.一个类仅仅是一些静态方法的存放地,并没有任何的内部状态.如java.beans.Bean和java.lang.Math等
*/
分享到:
相关推荐
javabean表现与实现分离 在JSP中使用JavaBean JavaBean的Scope属性 在Web服务器上部署JavaBean
标签"JAVA javabean"进一步强调了这个项目与Java语言和JavaBean规范的紧密关系。这意味着开发者可能使用了标准的Java技术栈,包括Servlet、JDBC、JSP等,来配合JavaBean构建BBS系统。JavaBean可以作为模型层(Model...
JavaBean是Java编程中的一种重要概念,主要用于封装数据和业务逻辑,它遵循一定的规范,使得Java对象能够被方便地在Web应用中使用,特别是在Servlet和JSP之间传递数据。在这个项目"JavaBean_Javabean增删改查_...
5. **标准命名**:属性、方法和事件的命名应遵循一定的标准,以确保与其他JavaBean的兼容性。 6. **可读性**:代码应该清晰易懂,注释充分,以利于其他开发者理解其用途和功能。 在这个"JavaBean示例"中,我们可以...
本设计使用 JavaBean 来封装用户名和学号的验证逻辑,使用 jsp+html 来实现显示设计,实现了简单的 J2EE 系统对学生姓名和学号进行验证,身份确任代码与身份验证代码分别在两个 JavaBean 中。这种设计使得系统更健壮...
总结一下,JavaBean与XML之间的转换主要依赖于Java的`JAXB`框架。通过创建和解析绑定文件,我们可以轻松地将Java对象序列化为XML,或将XML反序列化为Java对象。这种转换在数据交换、配置文件存储或持久化场景中非常...
JavaBean遵循一定的规范,使得它们易于创建、配置、可视化编辑以及与Java应用程序框架集成。 1. **JavaBean的基本概念** - **命名规范**:JavaBean的类名通常采用驼峰式命名,例如`UserBean`,以表明它是一个...
"JavaBean技术应用实现购物车" JavaBean是一种特殊的Java类,它遵循JavaBean的命名约定和设计模式,主要用于封装和 Exposure 数据。JavaBean技术广泛应用于Web应用开发,特别是在购物车系统中,JavaBean技术可以...
"SqlToJavaBean_javabean_根据表结构生成javabean_生成javabean_"这个标题暗示了一个工具或库,它能够自动化地根据数据库中的表结构生成对应的JavaBean类,从而减少开发者的手动编码工作。 描述中提到"根据数据表...
3. **属性类型与数量**:JavaBean 的属性可以是任意Java类型,一个JavaBean可以有多个属性。例如,`User` 类可能包含 `username`、`password` 和 `hobby` 等属性。 4. **setter/getter 方法**:setter 方法(如 `...
这个“JavaBean课件.rar”压缩包文件显然包含了与JavaBean相关的教学材料,可能是PDF文档、PPT演示文稿、源代码示例或其他教育资源,用于帮助学习者理解和掌握JavaBean的概念和技术。 JavaBean是一种Java类,符合...
- **封装性**:JavaBean通过私有变量和公共的getter与setter方法封装数据,确保数据安全。 - **可重用性**:由于其模块化设计,JavaBean可以在多个项目中重复使用,降低了代码冗余。 - **可扩展性**:JavaBean...
**JavaServer Pages (JSP) 与 JavaBean:基础与应用** JavaServer Pages(JSP)是Java平台上的一个标准视图技术,用于创建动态网页。JSP与JavaBean结合使用,可以实现业务逻辑和视图层的分离,提高代码的可重用性和...
**JSP与JavaBean使用教程** 本教程是针对初学者设计的,主要讲解了如何在JSP(JavaServer Pages)中有效地使用JavaBean。JavaBean是Java编程中的一个核心概念,它是一种符合特定规范的Java类,常用于封装数据和业务...
- **属性**:属性是JavaBean的核心,用于存储数据,通常与数据库中的字段对应。 - **序列化**:为了持久化JavaBean对象,通常需要实现`Serializable`接口。 - **命名约定**:属性名、getter和setter方法应遵循...
JavaBean 详细介绍 JavaBean 是一种特殊的 Java 类,它具有统一的接口格式,主要组成部分包括属性(Properties)、方法(Method)和事件(Events)。下面将详细介绍 JavaBean 的概念、组成部分、属性的介绍、JSP 中...
JavaBean简介 什么是JavaBean? JavaBean的三个组成部分 JavaBean的基本特征 BeanInfo接口 JavaBean的开发模式 使用JavaBean开发应用程序 EJB简介
本篇将深入探讨JavaBean与JsonString之间的相互转换方法。 1. **什么是JavaBean** JavaBean是一种遵循特定规则的Java类,它主要用于封装数据,便于数据的存储和传递。JavaBean通常具有以下特点: - 是公共类...
- **集成测试**:验证JavaBean与其他组件的交互,如通过Mockito模拟依赖。 综上所述,JavaBean组件程序设计是Java开发中的核心概念,它促进了代码的重用,简化了复杂应用的构建,并且与各种Java企业级框架紧密集成...