中国设计秀欢迎投稿
中国设计秀设计资源站
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
广州网站设计 维美网站建设 域名注册 虚拟主机 广州网站建设 广州网页设计 虚拟主机 域名注册 素材下载 广告服务 中国品牌形象设计 网站推广 家具中国
求创科技
中国设计秀
中国福网
金视觉
中国设计秀欢迎你
中国品牌形象设计网
中国设计秀
当前位置:网络学院首页 >> 编程开发 >> .net >> ASP.NET状态管理

ASP.NET状态管理 (1)

来源:中国设计秀    作者:    点击:256     加入收藏    发表评论
0
顶一下
关键字:状态 管理
中资源

 同样,听了微软讲师邵志东的讲座“ASP.NET状态管理”的视频讲座,总结如下,希望得到大家的指点:
  第一部分:页面状态介绍
  Http协议————“无状态协议”
  Web服务器每分钟对上千个用户进行管理的一种方式就是执行所谓的“无状态”链接。只要有一个希望浏览器返回一个页面、图像或其他资源的请求,就发生以下事情:
  1、连接到服务器
  2、告诉服务器想要的页面、图像或者其他项
  3、服务器发送请求的资源
  4、服务器切断连接,把用户忘的干干净净。
  也就是页面之间在Http协议下是没有任何关系的,这样就需要有状态管理来传输页面之间的数据。
  
  
  WEB页面处理过程
  1、页面的一次往返处理:用户对服务器控件的一次操作,就可能引起页面的一次往返处理:页面被提交到服务器端,执行响应的事件处理代码,重建页面,然后返回到客户端。
  2、页面重建:每一次页面被请求,或者页面事件被提交到服务器,ASP.NET运行环境将执行必要的代码,重建整个页面,把结果页面送到浏览器,然后抛弃页面的变量、控件的状态和属性等等页面信息。
  3、页面处理内部过程:
   (1)、Page_Load:IsPostBack属性判定页面是否为第一次被请求。
   (2)、事件处理:这一阶段处理表单的事件
   (3)、Page_Unload:这个阶段页面已经处理完毕,需要做些清理工作,一般地,你可以在这个阶段关闭打开文件和数据库链路,或者释放对象。
  
  ASP.NET Web Form框架的“连续”和“有状态”假象
  访问者打开页面的连续画面,这实际上一种假象,这种假象是由ASP.NET页框架、页及其控件实现的。
  
  
  
  第二部分:基于客户端的状态管理:
  状态信息放在客户端上。
  一、视图状态(ASP.NET特有)
  二、隐藏的窗体域
  三、Cookie
  四、查询字符串
  
  一、视图状态
  ASP.ENT使用了ViewState视图状态,是所有服务器控件的一个属性。如果你查看Web Form产生的HTML代码,可以看到一个名为_ViewState的隐藏字段,ASP.NET将状态信息以Hash的方式存储在这里,通过它,可以在下一次回发时知道回发前各控件的状态。
  
  
  1<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUILTMyNDAxOTkPZBYCAgQPZBYEAgMPDxYCHgRUZXh0BRvlvZPliY3nlKjmiLfvvJrotoXnuqfnlKjmiLdkZAIHD2QWAmYPDxYGHgtDZWxsUGFkZGluZ2YeC0NlbGxTcGFjaW5nZh4EXyFTQgKAgBhkFiYCAQ9kFgJmD2QWAmYPZBYCZg88KwAJAQAPFgYeDU5ldmVyRXhwYW5kZWRkHgxTZWxlY3RlZE5vZGVkHglMYXN0SW5kZXgCEGRkAgMPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCAmRkAgUPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCBWRkAgcPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCAmRkAgkPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCIWRkAgsPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCA2RkAg0PZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCA2RkAg8PZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCAmRkAhEPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCBGRkAhMPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCCWRkAhUPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCAmRkAhcPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCBGRkAhkPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCAmRkAhsPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCAmRkAh0PZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCA2RkAh8PZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCBmRkAiEPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCCWRkAiMPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCAmRkAiUPZBYCZg9kFgJmD2QWAmYPPCsACQEADxYGHwRkHwVkHwYCA2RkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYTBQ9MZWZ0TWVudTEkY3RsMDAFD0xlZnRNZW51MSRjdGwwMQUPTGVmdE1lbnUxJGN0bDAyBQ9MZWZ0TWVudTEkY3RsMDMFD0xlZnRNZW51MSRjdGwwNAUPTGVmdE1lbnUxJGN0bDA1BQ9MZWZ0TWVudTEkY3RsMDYFD0xlZnRNZW51MSRjdGwwNwUPTGVmdE1lbnUxJGN0bDA4BQ9MZWZ0TWVudTEkY3RsMDkFD0xlZnRNZW51MSRjdGwxMAUPTGVmdE1lbnUxJGN0bDExBQ9MZWZ0TWVudTEkY3RsMTIFD0xlZnRNZW51MSRjdGwxMwUPTGVmdE1lbnUxJGN0bDE0BQ9MZWZ0TWVudTEkY3RsMTUFD0xlZnRNZW51MSRjdGwxNgUPTGVmdE1lbnUxJGN0bDE3BQ9MZWZ0TWVudTEkY3RsMThhvz2XbcWenPMmfNNLRf3pN2JrYw==" />
  ASP.NET服务器控件的生命周期:
  1、初始化——Init事件(OnInit方法)
  2、加载视图状态——LoadViewState方法(当页面回发时,首先从_ViewSatae字段信息中加载该控件的状态)
  3、处理回发数据——LoadPostData方法
  4、加载——Load事件(OnLoad方法)
  5、发送回发更改通知——RaisePostDataChangedEvent方法
  6、处理回发事件——RaisePostBackEvent方法
  7、预呈现——PreRender事件(OnPreRender方法)
  8、保存视图状态——SaveViewState方法
  9、呈现——Render方法
  10、处置——Dispose方法
  11、卸载——UnLoad事件(OnUnLoad方法)
  
  
  视图状态的用法:
  1、启用视图状态,即EnableViewState = "true",默认为true,如果为false,那么该控件和子控件的视图状态就不会被串行化。
  2、可以在视图状态中存储的类型:Int32,bool,string,color,array,arrayList,Unit以及以上类型的HashTable对象
  3、视图状态与安全
  视图状态串行化的字符串表达式作为明文来往返传送,这是不安全的,在视图状态中绝不能保存任何信息(例如口令、连接字符、文件路径等。)
  参考例子(ViewState.aspx和ViewState_userinfo.aspx)
  
  
  using System;
  using System.Data;
  using System.Configuration;
  using System.Collections;
  using System.Web;
  using System.Web.Security;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.Web.UI.WebControls.WebParts;
  using System.Web.UI.HtmlControls;
  
  namespace ASPNETState
  {
   public partial class ViewState : System.Web.UI.Page
   {
   protected void Page_Load(object sender, EventArgs e)
   {
   if (!IsPostBack)
   {
   Label1.Text = "EnableViewState=True";
   //EnableViewState设为True时,Lable1的状态保存在_viewState隐藏字段中,当刷新页面时,不执行此语句,但是可以从_ViewState中取到以前的状态信息,所以还是原值。
   Label2.Text = "EnableViewState=False";
   //EnableViewState设为False时,Lable2的状态没有保存在_viewState隐藏字段中,当刷新页面时,不执行此语句,并且取不到以前的状态信息,所以为空。
   }
   }
  
   protected void Button2_Click(object sender, EventArgs e)
   {
   if (ViewState["count"] == null)  //从ViewState中读数据
   { 
   ViewState["count"] = 0;    //向ViewState中保存数据(可以保存多种类型的数据)
   }
   int ncount = (Int32)ViewState["count"];
   ncount += 1;
   ViewState["count"] = ncount;
   Label3.Text = ViewState["count"].ToString();
   }
  
   protected void Button1_Click(object sender, EventArgs e)
   {
  
   }
   }
  }
  
  
  二、隐藏的窗体域
  1、隐藏域不会显示在用户的浏览器中,但我们可以像设置标准控制的属性那样设置其属性。当一个网页被提交给服务器时,隐藏域的内容和其他控制的值一块儿被送到HTTP Form集合中。隐藏域可以是任何存储在网页中的与网页有关的信息的存储库,隐藏域在其value属性中存储一个变量,而且必须被显性地添加在网页上。
  2、ASP.NET中的HtmlInputHidden控制提供了隐藏域的功能。
  
  简单的说,就是页面上有一个保存值的隐藏控件,页面上可以取到它的值,但是看不见它。
  例子见(hidden.aspx)
  
  三、Cookie
  Cookie定义:
  1、由网络服务器发送出来以储存在网络浏览器上小量信息;
  2、Cookie是把与用户和网站相关的信息存储比会话时间还长的一种方式。
  3、Cookie存储在用户的硬盘上(一般存储在Web浏览器软件所在的文件夹上,称为Cookies)
  用途:
  1、用户的个人配置
  2、注册和“Remember me”
  3、弹出窗口
  如何工作:
  1、Cookie存储在C:\Documents and Settings\<Username>\Cookies下
  2、IE选项中的“隐私”选项下修改cookie设置,也可以在“常规”选项卡下选择“删除cookie”
  如何使用:
  1、使用Response对象设置Cookie状态
   Response.Cookies["UserName"].Value = "张三";
  2、使用Request对象读取已有的Cookie
   string strName = Request.Cookies["UserName"].Value;
  3、清除:
   Response.Cookies["UserName"].Value = null;或
   Response.Cookies["UserName"].Expires = new System.DateTime(1999,10,12);(过期)
  属性:
  1、Value:值,是string类型的
  2、Domain:设置这个属性后,只有在这个域下才能访问该Cookie
   例如:
   Response.Cookies["UserName"].Domain = ".Webcast.com.cn";
   //只有指定以“.Webcast.com.cn”结尾的域可以访问本Cookie
  3、Path:该属性指定那些路径下的页面可以访问此Cookie
  4、Expires:指定Cookie过期的日期(清除Cookie)
   Response.Cookies["UserName"].Expires = new System.DateTime(1999,10,12);(过期)
  
  参见实例(Cookie.aspx)
  该例子是说在页面上的TextBox中输入一个用户名,然后点“注册”按钮,此时将用户名存入Cookie中,然后在页面加载时取Cookie值显示在页面中,同时10s中自动删除Cookie。
  
  

[1] [2] [3]
热点文章/相关文章
关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口