日期:2014-05-18  浏览次数:20731 次

java web 里 session 问题 高手来看`~~~绝对有挑战性
现在有个问题 
有一个arrlylist 然后放到session 里 
在另一个 action 里我掉用 这个 session 把 arrliylist 取出来 放到 两个变量 A和B里 
然后我需要把A和B再次放到 sessionA 和sessionB 中,然后迁移到另一个画面修改sessionA 
但是,在修改后 
我如果不想保存就返回原来画面 
我想直接调用SessionB ,这样就可以显示最初的值了 
我是这么想的 
但是实现起来有问题,就是修改了sessionA后sessionB的值也变了,变的和A一样 
有没有办法能把SessionB的值保存起来 
然后无论怎么修改sessionA ,SessionB里的arrliylist内容都不改变? 
我试着用static 方法声明变量,然后赋值,但是也还是不好用~~~ 
我用setter &getter 也是不好用~~~ 
谁能帮我 
小弟分少~~~ 
在此全部奉上~~~ 
不尽感激~~~

------解决方案--------------------
Java code

import java.io.ObjectInputStream;
import java.io.ByteArrayInputStream;
import java.io.ObjectOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class Test {


    public static Object deepClone(Object target) {
        Object retValue = null;
        try {
            ByteArrayOutputStream bo = new ByteArrayOutputStream();
            ObjectOutputStream os = new ObjectOutputStream(bo);
            os.writeObject(target);
            
            ObjectInputStream is = new ObjectInputStream(new ByteArrayInputStream(bo.toByteArray()));
            retValue = is.readObject();
            
            
        } catch(IOException e){
            e.printStackTrace();
        } catch(ClassNotFoundException e){
            e.printStackTrace();
        }
        return retValue;
    }
    
    public static void main(String[] args) throws Exception {
        java.util.ArrayList list = new java.util.ArrayList();
        list.add(1);
        System.out.println(deepClone(list));
        list.add(2);
        System.out.println(list);
    }

}