ASP.NET页面基本对象:Application、Session、Request、Response、Server、Cookie、ViewState
1. Application、
所有的用户共用 (经典实例:统计网页访问人数),全局变量
1).Application对象来自于HttpApplictionState类,它可以在多个请求、连接之间共享公用信息,也可以在各个请求和连接之间充当信息传递的通道。
2).Application对象是共有的对象,所有用户都可以对某个特定的Application对象进行修改。
3).当用户第一次访问某虚拟目录的资源时Application对象被创建,退出应用程序或关闭服务器时被撤销。Application对象变量中止于停止IIS服务
需要注意的点:
1). 因为Application是共有的,一般在Global.asax文件中设置
2). 为避免并发情况,使用lock方法
Application.Lock();
Application["Count"] = int.Parse(Application["Count"].ToString()) + 1;
Session["MyID"] = 0;
Application.UnLock();
3). Application对象利用“键—值”对的字典方法来定义,
其中“键”为字符串,代表状态的“名”,“值”可以是任何类型的数据。
Application.Add("count", 1); //键值对的方法
Application["msg"] = "My Name";
Application.Clear(); //清除Application集合中的内容。
Application.RemoveAll();
2. Session、
Session 对象可以保存任何数据类型
1)、HttpSessionState类的一个实例,其功能和Application对象类似,都是用来存储跨网页程序的变量或者对象。
2)、Session对象变量只针对单一网页使用者,也就是说各个连接的机器有各自的Session对象变量,不同的客户端无法互相存取。
3)、Session对象变量中止于联机机器离线时,也就是当网页使用者关掉浏览器或超过设定Session变量对象的有效时间时,Session对象变量就会消失。
什么是会话状态?会话状态(Session State)是为单个用户保留的状态。
3. Request、
功能是从客户端得到数据。
一般第一次访问页面是使用get传值,回发是使用post方式传值。
在接受上一个页面传递过来的值时:
如果上一页使用的是get方式传值,那么就是使用'Request.QueryString["上一页需要传递值的控件ID"]'接收;
如果上一页使用的是post方式传值,那么就使用'Request.Form["上一页需要传递值的控件ID"]'接收。
Request对象它提供对当前页请求的访问,其中包括请求标题、Cookie、客户端证书、查询字符串等,你可以使用此类来读取浏览器已经发送的内容。
服务端常常使用Request对象从客户端得到数据信息
它有两个常用方法:
Form[]和QueryString[]方法。
客户端提交的方式有:
get: 对应Request.QueryString[] 这是使用Url路径值提交。也称显示提交。
post: 对应Request.Form[] 也称隐式提交。这是浏览器默认的提交方式。他是靠控件的name和value传递值的。不识别ID属性,所以对于HTML页面控件必须要有Name属性。
4. Response、
功能是向浏览器输出信息。
Response.End(); 当遇到"Response.End();"时表示所有程序结束
Response.Write(""); 输出自定义信息
Response.Redirect("Default.aspx"); 表示跳转到指定的"Default.aspx"页面(服务器端跳转,客服端无法感知,属于客服端的请求)
5. Server、
Server对象提供的方法和属性可以访问服务器。
Server.MapPath("."); 表示当前所在的目录
Server.MapPath("../"); 表示当前所在的目录的上一级目录
Server.MapPath("http://www.cnblogs.com/"); 表示当前所在的目录的上一级目录的上一级目录
Server.MapPath("~/"); 表示当前程序的根目录
Server.Execute 方法是运行指定的页面并将结果返回到当前页面输出(不跳转到指定执行的页面,内部执行)
Server.Transfer 方法是终止当前页面,跳转到指定的页面执行(终止当前页的执行,并为当前请求开始执行新页。)
HttpServerUtility类的一个实例,它定义了一个与Web服务器相关的类提供对服务器上的方法和属性的访问。
用法:
? 当前文件所在物理路径:Response.Write(Server.MapPath("."));
? HTML编码:Response.Write(Server.HtmlEncode("<h1>好好学习,<br><h3>天天向上"));
? URL编码:Response.Write(Server.UrlEncode("<h1>好好学习,<br><h3>天天向上"));
解码:Response.Write(Server.HtmlEncode(str));
? Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。
? Server.Transfer
? 它是从server端直接向下一页发起请求,不需要client再次发送请求. 如果你的网页非常依赖Response.Redirect,这个小小的改变可以提高将近25%的效率。
6. Cookie、
Cookie对象的创建:
HttpCookie cookie=new HttpCookie("Cookie名称","保存的值");
//指定Cookie的生命周期,如果没有指定cookie的生命周期那么系统会自动当做临时cookie处理,(这里表示生命周期为10天)
cookie.Expires=DateTine.Now.AddDays(10);
//把创建好的Cookie对象添加到客户端cookie文件
Response.Cookies.Add(cookie);
//读取Cookie文件信息
Request.cookie["Cookie名称"];
HttpCookieCollection类的一个实例,它用于保存客户端浏览器请求的服务器页面,也可以用它存取非敏感性的用户信息,信息保存的时间可以根据需要设置。
Cookie对象的所有信息保存在客户机器上。
7. ViewState
类似于Session对象,只是ViewState不存在生命周期,即在页面关闭之前视图状态对象是不会消失的。
ViewState只局限于某个页面,而不能跨页面使用。使用bass64编码方式保存。
容易混绕的知识点区分:
1. Application和Session的相同点和不同点:
Application对象和Session对象都属于服务器对象,用来保存页面中或用户的一些数据。
Application对象是共有的对象,所有用户都可以对某个特定的Application对象进行修改。Session对象变量只针对单一网页使用者,也就是说各个连接的机器有各自的Session对象变量,不同的客户端无法互相存取。
Application对象变量中止于停止IIS服务;Session对象变量中止于联机机器离线时,也就是当网页使用者关掉浏览器或超过设定Session变量对象的有效时间时,Session对象变量就会消失。
2.Session和Cookie的相同点和不同点:
? 可以保存用户信息。
? 不同的是,Session对象的所有信息保存在服务器上,而Cookie对象的所有信息保存在客户机器上。
3.Server.Execute()和Server.Transfer()和Response.Redirect()的区别:
? Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。
? Server.Transfer
? 它是从server端直接向下一页发起请求,不需要client再次发送请求. 如果你的网页非常依赖Response.Redirect,这个小小的改变可以提高将近25%的效率。
用自己的话来说:
Server.Execute()会把所请求的页面加载到本页的前面和合并成一个页面。而Server.Transfer()把所请求的页面调过来加载到本页显示。
Server.Execute()和Server.Transfer()都是从服务器中发出的请求。而Response.Redirect()是从客户端发出的请求。
所以Response.Redirect()要重新发一次请求呈现页面。在本页面执行完成后,呈现另外页面时本页面在内存当中会自动卸载。
即
Server.Execute 方法是运行指定的页面并将结果返回到当前页面输出(不跳转到指定执行的页面,内部执行)
Server.Transfer 方法是终止当前页面,跳转到指定的页面执行(终止当前页的执行,并为当前请求开始执行新页。)
Response.Redirect("Default.aspx"); 表示跳转到指定的"Default.aspx"页面(服务器端跳转,客服端无法感知,属于客服端的请求)