zoukankan      html  css  js  c++  java
  • Session如何存储对象?

    经常使用 Session 直接储存一些字符串和值类型,但很少储存对象,在取 Session 值时将指定 Session 进行强制类型转换以获取储存在 Session 中的值,于是想当然的认为 Session 储存对象类似于 ViewState,是将对象串行化以后放入到 Session 中的。 日前在做一个流程处理的时候,将流程处理的过程封装成了一个独立的类,与页面分离开来,因为要跨页面保存该对象的状态信息,所以将对象存储到 Session 中,却发现 Session 储存对象时似乎不是串行化以后再保存,而是直接储存对象的一个引用,为证实这个结论,做了一个小测试:

    1. //自定义对象
    2. public class SessionTest
    3. {
    4.     public int a = 1;
    5.     
    6.     public SessionTest()
    7.     {
    8.         //
    9.         // TODO: Add constructor logic here
    10.         //      
    11.     }
    12. }

    页面代码:

    1. public partial class SessionTestPage : System.Web.UI.Page
    2. {
    3.     protected void Page_Load(object sender, EventArgs e)
    4.     {
    5.         if (!IsPostBack)
    6.         {
    7.             SessionTest st = new SessionTest();
    8.             lt1.Text = st.a.ToString();
    9.             Session["Ss"] = st;
    10.             //储存到 Session 后更改对象值
    11.             st.a = 2;
    12.         }
    13.     }
    14.     protected void btnSubmit_Click(object sender, EventArgs e)
    15.     {
    16.         SessionTest st2 = Session["Ss"as SessionTest;
    17.         //从 Session 中取出对象并显示
    18.         lt2.Text = st2.a.ToString();
    19.     }
    20. }

    在页面上显示 lt2.Text  的值为 2,这个值是在对象储存到 Session 后才改变的,这表明 Session 储存的是对象的引用。这帮了我一个很大的忙,只要在创建对象后将对象储存到 Session,然后对象的更改会在 Session 中实时反应出来,而不用担心 Session 和 对象的同步。

    注意:仅测试了状态管理为 Inproc 时的情形。

  • 相关阅读:
    天眼查接口的调用
    EditPlus5.0注册码
    图片转化成base64字符串
    java根据图片的url地址下载图片到本地
    将字符串中的数字转化为文字
    String类型转json 转JSONObject 转 JSONArray 以及 遍历
    三个日期类型比较大小 20181123
    字符与字节的区别
    面向对象五大原则
    Struts/Servlet,action转到jsp后,CSS失效,路径问题(struts2,jsp路径,action路径,action跳转,相对路径,绝对路径)
  • 原文地址:https://www.cnblogs.com/Kung/p/Session.html
Copyright © 2011-2022 走看看