1,关于javabean实现Serializable接口的问题。如果把对象序列化到硬盘,就必须实现这个接口。实现了这个接口的javabean类会有一个默认的类标识(SerialversionUID序列版本标识),也可以成为类主键。当反序列化的时候,就是通过这个类标识来辨别这个被序列化的对象到底是哪一个类。然后会利用反射调用javabean的空参构造方法来重新创建一个对象,并且初始化这个对象的状态为被序列化的那个对象序列化前的状态,这样就反序列化成功。
2,改变一个错误的观念:session在容器关闭时会销毁----这是不对的。
(1)关闭了服务器,session对象以及存储到session中的对象并不会销毁,而是会序列化到服务器的“work\Catalina\服务器地址(本地为localhost)\项目名”目录下。当服务器重启时,容器会反序列化这个session对象以及存储到session中对象。
(2)必须注意:存储到session中的对象必须是实现了Serializable接口,才会被序列化出去和反序列化回来。
(3)还有,如果在重启服务器时,改变了实现了Serializable这个接口的例如javabean的类标识时,重启服务器会报关于io序列化方面的异常。原因就是序列化中出去的对象中的类标识和程序中的类标识不相同了导致了反序列化时出错。
----------------------------------------------------------------------------------------
以上问题在做ssh购物车尤为重要,也是在做这个项目时得知。