JavaBean的冷藏与解冻
来源:互联网 发布:安德罗妮的淘宝店 编辑:程序博客网 时间:2024/04/27 23:31
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);
- }
- }
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 {@Overridepublic 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中使用串行化 * 如:<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的冷藏与解冻
- 《Java与模式》: 21 专题:javaBean的“冷藏”和“解冻”
- 冷藏 解冻 深拷贝deepclone
- Java里关于克隆与“冷藏”和“解冻”方法[00原创]
- JavaScript屏幕的冻结与解冻
- Java 模式2(创建模式) - 建造模式,原始模型,JavaBean 的冷藏和解冻
- VC++实现进程冻结与解冻
- VC++实现进程冻结与解冻
- 线程操作:冻结与解冻线程
- servlet与javabean的区别&有两种javabean
- javabean与ejb的区别
- 与Sql连接的javabean
- JavaBean与EJB的区别
- javabean与ejb的区别
- javabean与EJB的使用方法
- javabean的继承与反射
- EJB与JavaBean的区别
- EJB与JavaBean的区别
- linux中远程连接(如SSH)出现someone could be eavesdropping on you right now的解决办法
- c跨函数访问内存问题
- C++中P.J. Plauger STL和SGI STL中map的区别
- 自适应按钮在IE6、IE7下的左右padding值
- 修改MFC中菜单显示的文字
- JavaBean的冷藏与解冻
- linux学习笔记-读《Linux设备驱动开发详解》~第一章 设备驱动概述
- [learning opencv]第十章 跟踪与运动:金字塔Lucas-kanade(cvCalcOpticalFlowPyrLK)检测光流
- 将Datatable转换为泛型列表对象
- Linux中的 su 与 sudo
- eclipse导入静态类,自动代码提示静态方法
- ODM
- android ,点击title的ImageView弹出PopupWindow【安卓进化七】
- ftp 脚本 超时设置