ASP.NET学习笔记三 : 系统对象与状态管理(二)

 第三课 : 系统对象与状态管理(二)

 注意:[上次开了个玩笑,说内置的Page对象即然代表当前的页面对象,与this作用一样,也就是说失去了存在的必要性,其实这只是纯属玩笑。既然它存在,就必有存在的理由,Page的范围比this范围要小,VS2005中,this.可以点出的属性、方法、事件、控件共有190个页Page.只有111个,它们到底有什么差别呢?]

Http协议是无状态的
 ·页面只有有限的生命周期
 ·请求-应答,应答完成,页面也就销毁
 ·在ASP.NET中,页面是通过对象来表示,页面的生命周期也就是页面对象(Page类的对象)的生命周期,因此页面对象只有有限的生命周期
 ·对象的状态信息(对象的成员变量)在对象销毁后即不存在

正是由于Http协议的无状态性,所以Session、Application、Cookie对象就出现了。

Session对象:服务器会自动给第一次请求的客户端生成一个SessionID,以此来建立会话。
 ·SessionID : 120位的字符串标识
 ·Session中保存的对象存储在服务器的内存中,只有SessionID在服务器与客户端之间传递

 ·HttpSessionState 类提供对会话状态值以及会话级别设置和生存期管理方法的访问
  ·可以通过HttpContext类的Session属性来访问HttpSessionState类的实例
  ·可以通过Page类的Session属性来访问HttpSessionState类的实例(Session对象为内置对象)

 ·Session对象包括一个对象的集合,可以通过[]访问集合中的元素
  保存一个Session对象  Session["objName"] = obj ;
  读取一个Session对象  Object obj = Session["objName"] ; //注意返回的是一个Object对象
 ·Session.Timeout 设置用户超时时间,单位为分钟,一般情况下,关闭窗口只会造成Session丢失,而不会立即清除,只有过了超时时间才会被服务器真正清除。
 ·Session.IsNewSession属性,是否是新会话,如果为当前请求创建了一个Session,则返回True
 ·Session.Clear() : 从会话状态集合中移除所有的键和值
 ·Session.Abandon() : 结束Session,取消当前会话
 ·Session占用服务器资源,大量使用会降低程序的性能。通常用来存放用户的登录信息、权限和角色等重要信息
[实例]登录时保存用户信息
login.aspx : (保存)
 UserInfo user = new UserInfo();
 Session["user"] = userInfo ;
Welcome.aspx :  (读取)
 UserInfo user = Session["user"] as UserInfo() ;

Application对象:存储整个应用程序的状态信息,如在线人数统计、流量统计等。
 ·设置与读取同Session对象方式一致
 ·应注意应用程序的同步:操作时应加锁Application.Lock(),结束后解锁Application.UnLock()
 ·Application内置对象是HttpApplicationState类的实例。可以通过Page类的Application属性获得

应用程序和会话过程中的事件
 事件处理程序放在应用程序专用的一个文件Global.asax中
 ·Application_Start 
 ·Application_End
 ·Application_Error
 ·Session_Start
 ·Session_End

Cookies : 最早是由Netscape公司开始使用的,由Web服务器通过浏览器保存在客户端硬盘上的一个文本文件,它属于两个对象,创建由Response对象创建,读取由Request对象使用。
 ·以明文形式保存,当然可以采取一定的加密措施
 ·可以修改,所以可以被欺骗
 ·保存在C:/Documents and Settings/当前用户名/Cookies/下,保存形式:user@domain.txt
 ·可以用来跟踪用户操作,浏览次数及时间等状态信息
 ·大小有限制,一个域名最多二十个吧,依浏览器实现不同而不同
 ·由HttpCookie类创建
 ·Request/Response对象的Cookies属性是HttpCookieCollection类的实例,该类提供存储、检索和管理整个Web应用程序的所有Cookie的方法。可以采用索引器的方式来访问Cookies属性。

HttpCookie类的常用属性
属性 属性说明
Domain 获取或设置将此 Cookie 与其关联的域
Expires 获取或设置此 Cookie 的过期日期和时间
HasKeys 获取一个值,通过该值指示 Cookie 是否具有子键
Item HttpCookie.Values的快捷方式。 在C#中,该属性为HttpCookie类的索引器
Name 获取或设置 Cookie 的名称
Path 获取或设置要与当前 Cookie 一起传输的虚拟路径
Secure 获取或设置一个值,通过该值指示是否安全传输 Cookie(即仅通过 HTTPS 传输)
Value 获取或设置单个 Cookie 值
Values 获取在单个 Cookie 对象中包含的键值对的集合

[实例]用Session和Cookie共同来保存用户登录状态信息

Server对象: HttpServerUtility的一个实例,它提供对服务器上的方法和属性的访问

·MapPath(url) : 返回服务器中真实的物理路径
·Execute(url) : 将参数页面包含到当前页面执行,相当于JSP中的静态包含
·Transfer(url) : 将当前页面替换成目标页面执行,地址栏不发生变化,相当于Java中的服务器跳转
·HtmlEncode和HtmlDecode : 将html标记进行编码和解码操作
·UrlEncode和UrlDecode : 将url路径进行编码和解码操作 
               
[注意] int i = Convert.Int32(null) ; 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值