ASP.NET中有很多对象,不同的对象有不同的方法,可以实现不同的功能。通过这些对象的不同功能,使用户更容易得到浏览器发送的请求信息、响应信息和存储用户信息。
ASP.NET的内置对象有八个,分别是Page、Request、Response、Application、Session、Server、Mail、Cookies,下面主要是学习的前五个对象。
【Page】
Page对象是由System.Web.UI命名空间中的Page类来实现的,Page 类与扩展名为.aspx 的文件相关联,这些文件在运行时被编译为Page对象,并缓存在服务器内存中。Page对象是使用最广泛的一个对象,几乎每一个Web窗体都会用到。
我觉得Page对象是用来做页面响应的,包括获得请求信息、验证是否第一次加载等等,这些功能从它的属性里也能看出来:
IsPostBack:获取一个值,该值表示该页是否正为响应客户端回发而加载。也就是说,判断该页面是否第一次加载。
IsValid:获取一个值,该值表示页面是否通过验证。也就是说,判断该页面应有的验证是否都通过了,比如必填项的验证等。
Request:获得页面的请求。
Response:对页面的请求作出响应。
当然,Page对象还有其他的属性,这里就不一一解释了,下面是IsPostBack属性的应用代码:
<span style="font-family:KaiTi_GB2312;">private void Page_Load(object sender, System.EventArgs e)
{
if( !Page.IsPostBack )
{//在这里输入相应代码
}
}</span>
【Request】
Request对象是Request对象是由类System.Web.HttpRequest来实现的。当客户请求ASP.NET页面时,所有的请求信息,包括请求报头、请求方法、客户端基本信息等都被封装在Request对象中,利用Request对象就可以读取这些请求信息。
Request对象可以读取请求信息,常用的属性有Form属性和QueryString属性。
Form:获取表单变量的集合。也就是说,Form属性的相关方法可以将表单提交到服务器,与此相关的有两个方法,分别是Get和Post,这两个方法都是向服务器提交表单的,只不过Get方法传送量小,Post方法传送量大;而且在服务器端,服务器通过Request.QueryString来获得表单内容,通过Request.Form来获得Post方法提交的内容。
QueryString:获取HTTP查询字符串变量集合。也就是说,它可以获得某个网页查询时输入的字符串变量。比如在牛腩中,通过点击新闻名即可跳转到详细内容页面,并显示对象新闻名下的详细内容,在这过程中就是通过QueryString来获得的,下面看相关代码:
<span style="font-family:KaiTi_GB2312;font-size:18px;">protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string newsid = Request.QueryString["newsid"];
//其他实现代码
}
}</span>
【Response】
Response对象用语输出数据到客户端,包括向浏览器输出数据、重定向浏览器到另一个URL或向浏览器输出Cookie文件,其类名为HttpResponse 。
Response对象就是输出数据,将要输出的内容显示到Web窗体上。具有Write() 、 BufferOutPut()、Clear()、Flush()、Redirect()、End()、WriteFile() 几个属性,最常用的有
Write:向客户端发送字符串信息,也就是将信息打印在网页上,是用户可以看到。
<span style="font-family:KaiTi_GB2312;font-size:18px;">protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Response.Write("Hello World!!")
}
}</span>
这段代码就会在页面上显示“Hello World!!”字样。Clear:清除网页缓存
Redirect:指出网页将跳转到哪一页
<span style="font-family:KaiTi_GB2312;font-size:18px;">protected void btnLogin_Click(object sender, EventArgs e)
{
//相应实现代码
bool b=LoginManager.Login(name ,pwd);
if (b)
{
//登陆成功
Session ["admin"]=name;
Response.Redirect("categorymanager.aspx");
}
}</span>
这段代码是在牛腩中登录页的一段代码,意思是登录成功后,网页跳转到新闻管理页。Redirect(URL),URL代表网页跳转的地址。
【Application】
Application对象在实际网络开发中的用途就是记录整个网络的信息,如上线人数、在线名单、意见调查和网上选举等。在给定的应用程序的多有用户之间共享信息,并在服务器运行期间持久的保存数据。而且Application对象还有控制访问应用层数据的方法和可用于在应用程序启动和停止时触发过程的事件。
我的理解是,Application对象其实就是保存访问网页的人数,不管是上线人数,还是参与网上选举的人数,都是记录了有多少人访问该网页。既然是记录人数,那么肯定离不开更新和删除。
Set:更新属性,用来更新用户信息
Remove和RemoveAll、Clear:删除属性,用来删除用户信息,其中Remove是删除单条,RemoveAll和Clear则表示清空。
另外,多用户肯定会涉及到安全问题,比如多个用户同时操作一个Application对象时就会造成数据不一致,这时就用到了锁的概念,即一个用户对其操作时,则对该对象上锁,操作完成后对其解锁,然后再让其他用户操作该对象,其对应的方法就是Application.Lock和Application.UnLock。
【Session】
Session对象是HttpSessionState的一个实例。该类为当前用户会话提供信息,还提供对可用于存储信息的会话范围的缓存的访问,以及控制如何管理会话的方法。Session有三个属性:
Count:获取会话状态集合中Session对象的个数
在牛腩中,除登录页之外每一个网页都会判断是否是管理员登录,如果不是,则系统跳转至登录页进行登录,其中的相关代码是:
<span style="font-family:KaiTi_GB2312;font-size:18px;">protected void Page_Load(object sender, EventArgs e)
{
//判断session里面是否存在管理员
if (Session["admin"] != null && Session["admin"].ToString() == "niunan")
{
//已登录
if (!Page.IsPostBack)
{
//其他相应代码
}
}
else
{
//未登录
Response.Redirect("login.aspx");
}
}</span>
在这里记录登录管理员的对象就是Session对象。
TimeOut:获取并设置在会话状态提供程序终止会话之前各请求之间所允许的超时期限
有时候登录网页后有一段时间没有操作,再次点击网页上某些内容时,网页就会提示用户要再次登录才能访问,这其实就是Session对象已经到期了。Session对象的生存期可以自行设置,默认的是20分钟。
SessionID:获取用于标识会话的唯一会话ID
总结:
对于这些对象的学习,好多在牛腩中已经接触到了,敲完代码之后再学习理论,感觉理解起来不费劲,但是真正让自己用还是有一定的差距,不过相信以后做的例子多了,自然用起来也就熟悉了。