一、五大内置对象
当web应用诚寻运行时,ASP.NET需要收集当前应用程序、会话、浏览器等方面的信息,ASP.NET便封装了处理这些信息的类,以不同类型的类来封装相应类型的信息。
ASP.NET中的常用的五大类HttpResponse, HttpRequest, HttpApplicationState,HttpServer,HttpSessionState。这些类所对应的实例对象为Response,Request,Application,Server,Session,被定义在page类中,可通过page对象直接访问。在了解上述五大内置对象之前,先做两个铺垫:
客户端与服务端的交互:
当客户端发出“提交”申请时,控件中的数据和表单信息一起以动态ASP.net代码的形式,发送给服务器,服务器加载该请求的动态网页,通过pageload事件,生成html代码发送返回给客户端。形成了一个闭合环路实现交互。
Post和get的区别再认识:
1、get和post是客户端向服务器提交表单的两种方式,部分人只了解到他们在安全性方面的对比,get方式会把传递参数显示到 URL后,而post提交后地址栏仍为原先状态。
2、Post比get传递的数据量更大——缓冲区溢出问题
ID的URL长度是有限制的,当URL过长时会自动截取超长字符。这样就容易引发一个问题:当传递的参数过多,导致URL过长超出指定长度时,便造成缓冲区溢出问题,破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。
对于post提交,服务端可以按标记的长度创建一个等于或稍大于提交数据的缓冲区;对于get,因为事先不知道提交的数据有多少,需要估计缓冲区长度,如果缓冲区很大而接收数据很小会造成内存浪费,而如果缓冲区小于接收数据,就可能造成缓冲区溢出。
下面我们分别来了解一下每个类所对应的常用的属性和方法。
1、Request对象:
用于获取客户端向服务器发送的请求信息。Request对象的作用就在于获取第一步:客户端向服务器提交请求时,request对象来获取处理该请求。
Request.QueryString[“控件名”] 用于get方式提交表单的信息封装
Request.form [“控件名”] 用于post方式提交表单的信息封装
2、Response对象
服务器端响应客户端请求时,使用response对象来处理客户端的发出的请求。处理完成之后便销毁该response对象。以便接受其他客户端发出的请求。
Response.redirect() 用于重定向,服务器接受客户端请求,并重定向到新的页面地址。
Response.write() 直接输出,write输出内容。
3、Application对象:(共享应用程序全局信息)
Application对象用于表示了整个网站应用程序的状态,这些状态通过Application对象实现数据的共享。所有访问该网站应用程序的计算机,都可以访问这些数据。
4、Session对象:
也用于共享数据,且同时都放在服务端,而每个用户与应用程序的交互
5、Server对象:
用户获取服务器的属性、方法等相关信息。
server.excute() 用于执行返回结果的当前页
server.transfer() 相当于response.redirect(),用于返回指定的新页面。
通俗来说,如果response是服务器的小差,request是客户端的小差,那么server应该就属于服务器师爷的角色,获取了解服务器本身的特质。
二、客户端控件与服务器控件
ASP.NET中,使用了两类控件,HTML控件和WEB控件。
HTML控件:
就是我们通常所说的html语言标记,这些语言标记存在于静态页面中,不会回置到服务器,不能在服务器端控制,只能在客户端通过 javascript和vbscript等程序语言来控制。<input type="textbox"id="txtName" value="Max"/>。
Web控件:
由ASP.NET提供,属于服务端控件。由整个页面(浏览器)把form表单发回到服务器端,由服务器来处理,然后转化为统一的HTML发送给客户端执行。可以保存状态到ViewState里,这样页面在从客户端回传到服务器端或者从服务器端下载到客户端的过程中都可以保存。
简言之:
web控件是在服务器端运行后生成静态HTML代码传给客户端浏览器.html控件就是原来的html标签,直接在客户端(浏览器)解释,不需要发送到服务端进行解释执行。.要触发html控件的事件,可以使用javascript脚本来实现。