Asp.Net的简单认知

        首先,Asp.net把http请求和响应封装在IHttpHandler (MSN定义:ASP.NET 为使用自定义 HTTP 处理程序同步处理 HTTP Web 请求而实现的协定)中。

同时将所有的http请求信息封装在HttpContext类中(MSN定义:封装有关个别 HTTP 请求的所有 HTTP 特定的信息。)

        而实现IHttpHandler接口的有两个,一般处理程序(ashx)和Web页面(aspx)。这两者本质上都是为了响应客户端的请求;但也有区别,一般处理程序由于没有界面,所以省略了解析页面的过程。一般处理程序是最简单的处理请求的方式,当客户端将请求提交给它的时候,一般处理程序自动调用自己的ProcessRequest方法,此方法有一个参数 context(是HttpContext),此参数包含了客户端请求的所有数据。

         在说Web窗体页,即aspx之前,先要理解客户端是如何想服务器上提交数据的,提交的数据是什么。

         比如,建一个htm文件,显示一个姓名的输入框和提交按钮,如下面的代码,我们把文本框中的数据(如 小明)提交给服务器,并在下面显示:小明你好        

<form action=“hello.ashx”>
姓名<input type="text" name="userName" />
<input type="submit" value="提交" />
</form>
  • 能提交数据,必须定义表单域form,input定义中必须定义“name”属性,注意不是id,id是给客户端使用的,如dom; name 是给服务器用的。
  • 客户端浏览器提交给服务器的是什么呢? 整个html文件(我原来是这么想的),其实提交只有name属性值和value属性值。
  • 为什么这样说呢,因为http是基于请求、响应模型的, 服务器端不知道客户端的情况,只能得到客户端提交的数据。而提交的数据就是以name为key,value为值的一组键值对。       

         接上面的要求,提交后,服务器响应时,可以使用Request["userName"](注:其实Asp.net内置对象Request,Response,Server, Cookie,Session,Application都是HttpContext公开的成员)

          

      string user = context.Request["userName"];
      Response.Write(user + "你好!");

           但是问题来了,如何在服务器响应后生成的浏览器页面上在保留姓名输入框和提交按钮呢。客户端的html代码可是不能传给服务器的哟。

           可以这样解决,在服务器处理程序里把客户端的<form>到</form>的代码放拷贝一份一起输出。接着郁闷了,相等于每个交互都写两遍。要是能动态自动生成就好了。

           于是aspx上场了。

          

          在说aspx之前,还要了解客户端的提交方式,提交方式有两种:get和post;这两者有什么区别呢?

  1.  get通过url提交数据;post是将表单域中的数据隐藏在http报文中传递给服务器,不在url中体现。
  2. 由于url长度的限制,get提交的数据有限,而post理论上是没有限制的。
  3. 提交数据后刷新的方式不同,get方式,页面没有多余的反映,而post浏览器则会弹开对话框,要求重新发送数据给服务器。         
     

        此外再多说一点,关于PostBack,因为这个状态也是通过客户端提交的数据来判断的。

       页面有两种状态:1是页面第一次加载... 2是客户端回发数据造成的加载...

       用程序区别就是看客户端有没有提交数据,如本篇文章的例子

     

string user = context.Request["userName"];
if (string.IsNullOrEmpty(user))
{
   context.Response.Write("第一次加载");
}
else
{
   context.Response.Write("客户端回发数据!");
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值