首页  ·  知识 ·  编程语言
asp.net状态的传递和保存
zouyujie1127  CSDN博客  .NET  编辑:Yvette   图片来源:网络
状态信息保存在隐藏字段中的缺点:加大网站的流量、降低访问速度、机密数据放到表单中会有数据欺骗等安全性问题。

http无状态

Http协议是无状态的,不会记得上次和网页“发生了什么”(故事《初50次》)。

试验:private 字段++。服务器不记的上次给了浏览器什么,否则服务器的压力会太大,浏览器需要记住这些值,下次再提交服务器的时候(请在我的宽度基础上增加10,)就要把上次的值提交给服务器,让他想起来。如果要知道上一次的状态,一个方法是在对浏览器响应结束之前将状态信息保存到页面表单中(实现一下),下次页面再向服务器发出请求的时候带上这些状态信息,这样服务器就能根据这些状态信息还原上次的状态了,类似于去看病的病历本。

1尽量不要这么干,客户端的事情让客户端去做。

2状态信息保存在隐藏字段中的缺点:加大网站的流量、降低访问速度、机密数据放到表单中会有数据欺骗等安全性问题。故事:自行打印存折,因为余额不是写到存折这个隐藏字段中的,唯一的关联就是卡号。要把机密数据放到服务器,并且区别不同的访问者的私密区域,那么就要一个唯一的标识。

通过Url传递

两个页面之间传递数据最好、后续麻烦最少、最简单的方法就是通过Url传递。

优点:简单,直接,明确知道发给谁,数据不会乱。

缺点:如果多个页面或者不确定页面之间要传那么就需要每次跳转都带着; 多个页面或者不确定页面之间要传那么就需要每次跳转都带着;不保密。

Cookie

如果想自由的传递和读取,用CookieCookie是和站点相关的,并且每次向服务器请求的时候除了发送表单参数外,还会将和站点相关的所有Cookie都提交给服务器,是强制性的。

Cookie也是保存在浏览器端的,而且浏览器会在每次请求的时候都会把和这个站点的相关的Cookie提交到服务器,并且将服务端返回的Cookie更新回数据库,因此可以将信息保存在Cookie中,然后在服务器端读取、修改。服务器返回数据除了普通的html数据以外,还会返回修改的Cookie,浏览器把拿到的Cookie值更新本地浏Cookie 览器的Cookie就可以。看报文在服务器端控制Cookie案例,实现记住用户名的功能

? 设置值的页面:Response.SetCookie(new HttpCookie("UserName",username));

? 读取值的页面:username= Request.Cookies["UserName"].Value;如果不设定Expires那么生命周期则是关闭浏览器则终止,否则“最多”到Expires时候终止。

Cookie的缺点:

还不能存储过多信息,机密信息不能存。

Cookie无法跨不同的浏览器。

Cookie:是可以被清除,不能把不能丢的数据存到Cookie中;Cookie尺寸有限制,一般就是几K,几百K

Session原理

需要一种“服务器端的Cookie”:

1、医生需要一个私人账本,记录病人编号和身份的对应关系;

2、为了防止病人根据分配给

他的编号猜测前后人的编号,那么需要一种“很难猜测”Cookie不能存储机密数据。如果想储存据,可以保存一个GuidCookie中,然后在服务器中建立一个以GuidKey,复杂数据为Value全局Dictionary。放到Application中。这 为Value全局Dictionary。放到Application中。这个Guid就是相当于用户的一个“令牌”

ASP.Net已经内置了Session机制,把上面的例子用ASP.NetSession重写。普通的HttpHandler要能够操作Session,要实现IRequiresSessionState接口。Cookie是存在客户端,Session是存在服务器端,目的是一样的:保存和当前客户端相关的数据(当前网站的任何一个页面都能取到SessionCookie)。 Session(会话)有自动销毁机制,如果一段时间内浏览器没有和服务器发生任何的交互,则Session会定时销毁。这也就是为什么一段时间不操作,系统就会自动退出。

Session实现登陆。

Application*

Application是应用全局对象,被全体共享。操作之前先Lock,操

作完成后UnLock

添加一个“全局应用程序类” Global.asax,当应用程序第一个

页面被访问的时候Application_Start执行。

举被很多书举烂了的例子“统计访问人数”,每次服务器上一个 举被很多书举烂了的例子“统计访问人数”,每次服务器上一个

内容被访问的时候Application_BeginRequest会执行就把数量++

。这样为什么不好?大并发访问会非常卡!

做网站开发尽量不要用Application,也很少有需要用它的时候。

总结

几种数据传递的区别和不同用途

Application:全局数据,不要用

Url:精准传递,用起来麻烦

? 隐藏字段:不保密

Cookie:保存在客户端,不保密

Session:保存在服务器端,不能放大数据


本文作者:zouyujie1127 来源:CSDN博客
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的