本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告

戒除浮躁,读好书,交益友


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:邢红瑞的blog
日志总数:523
评论数量:1142
留言数量:0
访问次数:9693949
建立时间:2004年12月20日




[java语言]java Serializable的使用
原创空间,  软件技术,  电脑与网络

邢红瑞 发表于 2005/1/8 10:27:48

Java Serializable的功能很强大,ejb的实现使用了Serializable,以前做过这样的一个程序,就是把用户最后一次登陆的信息直接保存到数据库,后来发现保存一条记录确实麻烦,不如采取类似ejb的机制,直接保存类,接着发现一个新问题,把用户的密码保存,一是用户修改密码,保存毫无意思,二是容易泄露,看了看文档transient可以使序列化的类不保存数据。下面给出大致的流程,问了简单存储文件,而不是数据库。package test; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.Date; /** * * @author hongrui xing */public class UserInfo implements java.io.Serializable{        private Date loggingDate = new Date();    private String uid;    private transient String pwd;        UserInfo(String user, String password) {        uid = user;        pwd = password;    }    public String toString() {        String password=null;        if(pwd == null) {            password = "is null";        } else {            password = pwd;        }        return "user info: \n   " + "user: " + uid +                "\n   logging date : " + loggingDate.toString() +                "\n   password: " + password;    }    public static void main(String args[]) {      save();      load();    }    public static void save(){                UserInfo userInfo = new UserInfo("邢红瑞", "蛋白质");        System.out.println(userInfo.toString());        try {            ObjectOutputStream o = new ObjectOutputStream(                    new FileOutputStream("userInfo.out"));            o.writeObject(userInfo);            o.close();        } catch(Exception e) {             e.printStackTrace();        }    }    public static void load(){        try {            ObjectInputStream in =new ObjectInputStream(                    new FileInputStream("userInfo.out"));            UserInfo userInfo = (UserInfo)in.readObject();            System.out.println(userInfo.toString());        } catch(Exception e) {            e.printStackTrace();        }    }}需要注意的是反序列生成对象时,没有调用构造函数。


阅读全文(4601) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144761517 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号