类序列化之后保存在COOKIES里
我们知道,在.NET中页面之间传值的方式有很多种,比如SESSION,COOKIES,Response.Redirect,URL等等;
具体用哪种方式要具体问题具体分析了,比如说就一个字段需要传到下一个页面,那么URL和Response.Redirect方式是不二选择;
如果对象较大的话,我们会考虑使用session,cookies,使用Session的话,在数据量大的时候有可能会造成IIS崩溃,导致站点无法访问,
那我们就使用COOKIES,有的朋友又会说,cookies容易丢失,确实是的,不过如果cookies用得好的话也不会丢失哦。
接下来我介绍将类对象序列化之后保存在COOKIES里。
在使用序列化之前,首先想一下,为什么要先将对象序列化然后写入COOKIES呢?不进行序列化就不行吗?序列化以后对象变成什么样子呢?
带着这几个问题我们来看看源代码:
首先创建类:其中[Serializable]标示该类可以被序列化
[Serializable]
public class mbmembers
{
public mbmembers()
{
}
#region "Private Variables"
private string _M_UserName; // 帐号
private string _M_RealName; // 真实姓名
private string _M_IDCard; // 证件号码
private string _M_Email; // 电子邮件信箱
private string _M_Mobile; // 手机号码
#endregion
#region "Public Variables"
/// <summary>
/// 帐号
/// </summary>
public string M_UserName
{
set { this._M_UserName = value; }
get { return this._M_UserName; }
}
/// <summary>
/// 真实姓名
/// </summary>
public string M_RealName
{
set { this._M_RealName = value; }
get { return this._M_RealName; }
}
/// <summary>
/// 证件号码
/// </summary>
public string M_IDCard
{
set { this._M_IDCard = value; }
get { return this._M_IDCard; }
}
/// <summary>
/// 电子邮件信箱
/// </summary>
public string M_Email
{
set { this._M_Email = value; }
get { return this._M_Email; }
}
/// <summary>
/// 手机号码
/// </summary>
public string M_Mobile
{
set { this._M_Mobile = value; }
get { return this._M_Mobile; }
}
#endregion
}
接下来提供序列化和反序列化的方法:
/// <summary>
/// 对类mbmembers进行二进制序列化成一个字符串
/// </summary>
/// <returns>序列化代码</returns>
public string BinarySerialize(mbmembers model)
{
BinaryFormatter ser = new BinaryFormatter();
MemoryStream mStream = new MemoryStream();
ser.Serialize(mStream, model);
byte[] buf = mStream.ToArray();
mStream.Close();
return System.Text.Encoding.Default.GetString(buf);
}
/// <summary>
/// 将从Cookie中取出的字符串反序列化成一个mbmembers类
/// </summary>
/// <param name="binary"></param>
/// <returns></returns>
public mbmembers DeSerialize(string strLoginUserModel)
{
byte[] binary = System.Text.Encoding.Default.GetBytes(strLoginUserModel);
BinaryFormatter ser = new BinaryFormatter();
MemoryStream mStream = new MemoryStream(binary);
mbmembers o = (mbmembers)ser.Deserialize(mStream);
mStream.Close();
return o;
}
将用户个人信息序列化之后 写入COOKIES:
mbmembers bs = new mbmembers();
Response.Cookies["userinfo"].Value = BinarySerialize(bs); //序列化
Response.Cookies["userinfo"].Expires = DateTime.MinValue;
string str= Request.Cookies["userinfo"].Value; //反序列化
mbmembers mb = DeSerialize(str);
以上是所有源代码,可能比较难看懂,首先你应该明白系列化的目的就不难理解他了。系列化的目的就是能在网络上传输对象,否则就无法实现面向对象的分布式计算。比如你的客户端要调用服务器上的一个方法获得一个产品对象,比如方法为:public Product findProduct(int product_id);
注意该方法返回一个Product对象,如果没有系列化技术,客户端就收不到返回的对象Product。而序列化的实现就是把对象变成一个可在网络上传输的字节流。
不过此处,如果您不想序列化,而是直接将对象保存在COOKIES里面也是可以的,这就需要循环遍历对象里面的信息,将里面的信息拼接成字符串,然后存储在COOKIES中。
转载于:https://www.cnblogs.com/woalang/archive/2009/08/19/woalang.html
类序列化之后保存在COOKIES里相关推荐
- SpringDataJpa的使用 – 实体类序列化
SpringDataJpa的使用 – 实体类序列化 前面提到了 JAP 的几个常用注解 @OneToOne.@OneToMany.@ManyToOne.@ManyToMany 的使用,但没有说 序列化 ...
- 模型类序列化器ModelSerializer
如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类. ModelSerializer与常规 ...
- 如何将类序列化并直接存储入数据库
本文将从这两个格式器入手,先向大家介绍分别用它们如何实现序列化和反序列化,然后比较两种格式器的不同点.接着我会向大家介绍实现序列化对对象类型的一些要求,同时还要向大家介绍两种不同的序列化方式:基本序列 ...
- 魔术方法 类 序列化_Java序列化魔术方法及其示例使用
魔术方法 类 序列化 在上一篇文章中, 您需要了解有关Java序列化的所有知识 ,我们讨论了如何通过实现Java序列化来启用类的可序列化性. Serializable接口. 如果我们的类未实现Seri ...
- c#.net实体类序列化方法 为什么要序列化
提到为了传递数据,需要把作为载体的实体类序列化,好好的找了一些序列化方面的介绍.感觉下面的这个介绍比较容易介绍! 1.什么是序列化 序列化是将对象状态转换为可保持或传输的格式的过程,在序列化过程中,对 ...
- C# 实体类序列化与反序列化一 (XmlSerializer)
/// <summary>/// 实体类序列化的反序列化的类/// </summary>/// <typeparam name="T">< ...
- 四、模型类序列化器ModelSerializer
如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类. ModelSerializer与常规 ...
- java-Transient关键字、Volatile关键字介绍和序列化、反序列化机制、单例类序列化
- Transient关键字 Java的serialization提供了一种持久化对象实例的机制.当持久化对象时,可能有一个特殊的对象数据成员,我们不想 用serialization机制来保存它.为 ...
- json 反序列化 父子类型_json类序列化与反序列化参考
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Runtime.Ser ...
- fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...
点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...
最新文章
- [HAOI2018]染色
- 【网络流】Modular Production Line
- Android Http请求框架二:xUtils 框架网络请求
- 机器学习:AdaBoost算法及其实现
- STM32H743+CubeIDE-CanFestival实现两个CANopen Master同时独立运行
- Vue中全局导入和按需导入的区别
- 基于VB6.0的MICAPS风云二号卫星云图转化实例(转载)
- android 可拖拽控件,安卓实现任意控件view可拖拽,并监听拖拽和点击事件,可自动拉回屏幕边缘...
- 今日芯声 | 从“罪犯”到“英镑人物”,图灵比肩英国女王
- Halcon 排线检测|固定颜色检测
- 地理信息科学期末考试重要知识点总结
- 高薪资的优秀平面设计师是怎样的
- 数字电路实验怎么接线视频讲解_【高中物理】电学实验满分知识点总结及例题精讲...
- 焦绪录:大数据如何推动数字中国建设
- 没有找到libgcc_s_sjlj-1.dll
- 2009年的人民币1000元购买力,相当于30年前人民币多少钱?
- VF200(VF101-N)产品重庆平台操作指导书_v2.1.24_20201020
- 你知道APP扫码登陆的实现原理吗?
- 电商婴儿商品销售数据分析
- 微信公众号开发和小程序开发
热门文章
- python实现arxiv论文数据解析处理
- no override found for vtkpolydatamapper解决方法
- idhttp返回乱码_node.js http.get请求返回的中文乱码, iconv zlib模块都不好使,求解决!!!...
- c++歌手类代码_安卓资源ID修改-游戏发行-切包过程中的R类和Public.xml
- java并发编程(1)--线程 可见性 volatile怎么用
- String.valueOf()方法的使用总结
- java alert 乱码_在servlet中输出JS中文乱码,servlet中alert对话框出现中文乱码的解决方法...
- C++中Lambda函数(匿名函数)
- Leetcode之两棵二叉搜索树中的所有元素
- oracle把一列更新为空,ORA-01439:要更改数据类型,则要修改的列必须为空