zoukankan      html  css  js  c++  java
  • 操作Session存储对象时的一些问题

    前段时间在操作Session存储的对象时,遇到了类似以下的这种情况:

    User user=new User("张三");  //创建一个姓名为“张三”的User对象
    
    Session["user"]=user;   //存入session 
    
    User user1=Session["user"] as User;  //获取session中的user对象 
    
    user.name="";  //设置user的name属性为空 
    
    User user2=Session["user"] as User;  //再次获取user 
    
    context.Response.Write(user2.name);  
    
     

    本以为得到的结果是“张三”,但实际的结果却是“”。

    为什么会出现这种情况呢?

    原因是Session中的存储对象,只保存对象值和内部引用对象的地址,如果对象发生变化,则Session也发生变化。

    遇到这种情况如何解决呢?

    如果我们想让Session中的对象不受影响,可以使对象序列化,实现深拷贝。

    什么是深拷贝以及如何实现深拷贝呢?

    点下链接,你就知道:http://www.cnblogs.com/xinyueBlog/p/6179096.html

  • 相关阅读:
    86. 分隔链表
    85. 最大矩形
    84. 柱状图中最大的矩形
    82. 删除排序链表中的重复元素 II
    80. 删除排序数组中的重复项 II
    77. 组合
    java-xml
    java-反射
    springboot解决跨域问题(CorsConfig )
    解决oracle锁表
  • 原文地址:https://www.cnblogs.com/xinyueBlog/p/6179182.html
Copyright © 2011-2022 走看看