码迷,mamicode.com
首页 > Web开发 > 详细

网站状态的传递和保存

时间:2015-11-16 23:59:05      阅读:404      评论:0      收藏:0      [点我收藏+]

标签:

最稳妥的传递方式就是URL传递(最好,简单、直接)

缺点:多页面每次都要存,不保密

不会一直在服务器端保持一个类的实例,只管处理一次,处理完事销毁。http协议是无状态的,不会记得上次和网页“发生了什么”,服务器不会记得上次给了浏览器什么,否则服务器压力太大,,浏览器需要记住这些值,下次再提交服务器的时候,就要把上次的值提交给服务器让他想起来。如果要知道上一次的状态,一个方法是对浏览器响应结束之前将状态信息保存到页面表单中(实现一下),下次页面再向服务器发出请求的时候带上这些状态信息,这样服务器就能根据这些状态信息还原上次的状态了

状态信息保存在隐藏字段中的缺点:加大网站的流量、降低访问速度、机密数据放到表单中会有数据欺骗等安全性问题。

通过URL传递状态  html页上

<form action="HttpNoZhuangTai.ashx" method="get">
   <input type="submit" value="增加">
   <input type="hidden" name="Count" value="$Model.Count"/>
   <p>$Model.Count</p>
</form>

CS代码

int count=Convert.ToInt32(contex.Request["Count"]);
count++;
string html=CommonHelper.RenderHtml("HttpNoZhuangtai.htm",new{Count=count});

想自由传递、读取用Cookie,是可读可写的,但是只有网站自己能够读写,是存在本地电脑上的。浏览器会在后台通过报文字段方式向服务器发送Cookie,服务器返回数据除了普通的html数据外,还会返回修改的Cookie,浏览器把拿到的Cookie值更新本地浏览器的Cookie.Cookie是以键值对的形式存的

只有被点击的submit才能被发送到服务器

在服务器端控制Cookie案例:实现记住用户名的功能

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

读取值的页面:

HttpCookie cookie=context.Request.Cookies["Username"];

string value=cookie.value;

如果不设定Expires那么生命周期则是关闭浏览器则终止,否则“最多”到Expires的时候终止

如何设置Cookie生命周期

HttpCookie cookie1=new HttpCookie("Age","33");
cookie1.Expires=DateTime.Now.AddDays(1);
context.Respinse.SetCookie(cookie1);

 

Cookie是可以被清除的,只能把可有可无的信息放到Cookies里,只能放100k。

Cookie的缺点:还不能存储过多信息,机密信息不能存。

Cookie无法跨不同的浏览器

案例,Cookies记住用户名

string login =context.Request["Login"];
if(string.IsNullOrEmpty(login))
{
   HttpCookie cookie=context.Request.Cookies["UserName"];
string username;
if(cookie==null)
{
   username="";
}
else
{
   username=cookie.Value;

服务器端Cookie

ASP.NET内置了Session机制,Session是服务器端的Cookie,普通HttpHandler要能操作Session,要实现IRequiresSessionState接口(当前网站的任何一个页面都能取到Session、Cookie)。Session有自动销毁机制,如果有一段时间内浏览器与服务器没有发生交互,Session会定时销毁。这也是为什么一段时间不操作,系统会自动退出。

//服务器保存Session
context.Session["Username"]=username;

取出的时候

string username=(string)context.Session["UserName"];

网站状态的传递和保存

标签:

原文地址:http://www.cnblogs.com/wangxuxu7912/p/4970352.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!