`

JavaBean的冷藏与解冻

阅读更多

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表现与实现分离

    javabean表现与实现分离 在JSP中使用JavaBean JavaBean的Scope属性 在Web服务器上部署JavaBean

    JAVABEAN

    标签"JAVA javabean"进一步强调了这个项目与Java语言和JavaBean规范的紧密关系。这意味着开发者可能使用了标准的Java技术栈,包括Servlet、JDBC、JSP等,来配合JavaBean构建BBS系统。JavaBean可以作为模型层(Model...

    JavaBean_Javabean增删改查_audiencevu9_

    JavaBean是Java编程中的一种重要概念,主要用于封装数据和业务逻辑,它遵循一定的规范,使得Java对象能够被方便地在Web应用中使用,特别是在Servlet和JSP之间传递数据。在这个项目"JavaBean_Javabean增删改查_...

    JavaBean示例

    5. **标准命名**:属性、方法和事件的命名应遵循一定的标准,以确保与其他JavaBean的兼容性。 6. **可读性**:代码应该清晰易懂,注释充分,以利于其他开发者理解其用途和功能。 在这个"JavaBean示例"中,我们可以...

    简单身份验证JAVABEAN的设计

    本设计使用 JavaBean 来封装用户名和学号的验证逻辑,使用 jsp+html 来实现显示设计,实现了简单的 J2EE 系统对学生姓名和学号进行验证,身份确任代码与身份验证代码分别在两个 JavaBean 中。这种设计使得系统更健壮...

    javabean 与 xml文件转换

    总结一下,JavaBean与XML之间的转换主要依赖于Java的`JAXB`框架。通过创建和解析绑定文件,我们可以轻松地将Java对象序列化为XML,或将XML反序列化为Java对象。这种转换在数据交换、配置文件存储或持久化场景中非常...

    javabean(DB)

    JavaBean遵循一定的规范,使得它们易于创建、配置、可视化编辑以及与Java应用程序框架集成。 1. **JavaBean的基本概念** - **命名规范**:JavaBean的类名通常采用驼峰式命名,例如`UserBean`,以表明它是一个...

    JavaBean技术应用实现购物车

    "JavaBean技术应用实现购物车" JavaBean是一种特殊的Java类,它遵循JavaBean的命名约定和设计模式,主要用于封装和 Exposure 数据。JavaBean技术广泛应用于Web应用开发,特别是在购物车系统中,JavaBean技术可以...

    SqlToJavaBean_javabean_根据表结构生成javabean_生成javabean_

    "SqlToJavaBean_javabean_根据表结构生成javabean_生成javabean_"这个标题暗示了一个工具或库,它能够自动化地根据数据库中的表结构生成对应的JavaBean类,从而减少开发者的手动编码工作。 描述中提到"根据数据表...

    javaBean简介.doc

    3. **属性类型与数量**:JavaBean 的属性可以是任意Java类型,一个JavaBean可以有多个属性。例如,`User` 类可能包含 `username`、`password` 和 `hobby` 等属性。 4. **setter/getter 方法**:setter 方法(如 `...

    JavaBean课件.rar

    这个“JavaBean课件.rar”压缩包文件显然包含了与JavaBean相关的教学材料,可能是PDF文档、PPT演示文稿、源代码示例或其他教育资源,用于帮助学习者理解和掌握JavaBean的概念和技术。 JavaBean是一种Java类,符合...

    javabean源码

    - **封装性**:JavaBean通过私有变量和公共的getter与setter方法封装数据,确保数据安全。 - **可重用性**:由于其模块化设计,JavaBean可以在多个项目中重复使用,降低了代码冗余。 - **可扩展性**:JavaBean...

    jsp与javabean

    **JavaServer Pages (JSP) 与 JavaBean:基础与应用** JavaServer Pages(JSP)是Java平台上的一个标准视图技术,用于创建动态网页。JSP与JavaBean结合使用,可以实现业务逻辑和视图层的分离,提高代码的可重用性和...

    JSP课件-javabean的使用教程

    **JSP与JavaBean使用教程** 本教程是针对初学者设计的,主要讲解了如何在JSP(JavaServer Pages)中有效地使用JavaBean。JavaBean是Java编程中的一个核心概念,它是一种符合特定规范的Java类,常用于封装数据和业务...

    javabean留言小项目

    - **属性**:属性是JavaBean的核心,用于存储数据,通常与数据库中的字段对应。 - **序列化**:为了持久化JavaBean对象,通常需要实现`Serializable`接口。 - **命名约定**:属性名、getter和setter方法应遵循...

    javaBean的详细介绍

    JavaBean 详细介绍 JavaBean 是一种特殊的 Java 类,它具有统一的接口格式,主要组成部分包括属性(Properties)、方法(Method)和事件(Events)。下面将详细介绍 JavaBean 的概念、组成部分、属性的介绍、JSP 中...

    JavaBean简介

    JavaBean简介 什么是JavaBean? JavaBean的三个组成部分 JavaBean的基本特征 BeanInfo接口 JavaBean的开发模式 使用JavaBean开发应用程序 EJB简介

    JavaBean与JsonString的相互转换

    本篇将深入探讨JavaBean与JsonString之间的相互转换方法。 1. **什么是JavaBean** JavaBean是一种遵循特定规则的Java类,它主要用于封装数据,便于数据的存储和传递。JavaBean通常具有以下特点: - 是公共类...

    JavaBean组件程序设计

    - **集成测试**:验证JavaBean与其他组件的交互,如通过Mockito模拟依赖。 综上所述,JavaBean组件程序设计是Java开发中的核心概念,它促进了代码的重用,简化了复杂应用的构建,并且与各种Java企业级框架紧密集成...

Global site tag (gtag.js) - Google Analytics