WebForm总结_Day04_浏览器请求和服务器响应的内部原理

1. 把客户端的文件上传到服务器
 使用http协议不要上传超过4M的文件(可以在web.config中进行修改),而且不支持断点续传
 网盘上可以上传1G的文件,是通过浏览器插件实现的
 
 1)浏览器端
  1.表单元素使用 文件选择框<input type="file" name="t"/> 控件。
  2.表单设置enctype="multipart/form-data",
  本质上就是设置浏览器提交表单的数据时,
  使用随机分隔符来分割不同控件的数据,而且数据的组织形式由 name=value换成了数据头和数据体的方式。
 2)服务器端
  1.服务器接收客户端上传的文件使用Request.Files属性。
  2.使用HttpPostedFile的SaveAs方法将图片保存在服务器。
  
2. 一般处理程序(HttpHandler)是对请求的响应,实际上可以输出任意的类型。
 可以是普通的html内容,也可以输出图片,也可以输出一个文件(下载)
 
 HttpHandler实现动态图片输出
 
 System.Data命名空间下的这组类库 --> ADO.NET
 System.Drawing命名空间下的类库  --> GDI+
 
3. HttpHandler实现文件下载
 如果HttpHandler输出的是html/text/jpeg等类型的信息,那么浏览器会直接显示,
 如果希望弹出保存对话框,则需要添加Header
 
 Response.AddHeader(“Content-Disposition”, string.Format(“attachment;filename=\”{0}\“”, encodeFileName));
 
 IE中下载时处理中文url的方法
 string encodeFileName = HttpUtility.UrlEncode(“生活大爆炸1-17.avi”);
 
4. 静态页面 动态页面
 动态页面会执行服务器端代码,静态页面不会执行服务器端代码
 静态页面:在服务器就相当于直接读取文件字符串然后返回客户端浏览器;
   (任何时候访问看到的都是一样的界面。)
 动态页面:在服务器是先交给某语言环境虚拟机编译运行,按照语法生成代码返回客户端浏览器。
   (不同条件和时候访问看到的都界面也不同。)

5. 浏览器请求和服务器响应的过程
 1)用户在浏览器地址栏输入:
http://localhost:80777/FirstShower.ashx
 2)服务器IIS接收到用户的请求,发现是请求.ashx文件,便将请求交给framework执行
  framework找到对应的文件FirstShower.ashx,执行其ProcessRequest(context)方法
  执行后将生成的字符串(通常是html+css+javascript格式)
  以及响应头(如content-type,状态码等)返回给浏览器
 3)浏览器接收到服务器返回的数据,并按照http语法解释(如content-type是attachment,就执行下载)
  执行,以界面的方式展示给用户看到
  此时如果html等代码中包含外部文件,则再次发送单独请求服务器相应文件数据
  
6. 服务器执行客户端请求的详细说明
 1)当浏览器请求发送到服务器电脑,电脑将请求交给指定80端口的软件IIS,
 2)IIS发现.aspx和.ashx它自己处理不了,就将请求交给IIS扩展程序 ASPNET_isapi.dll来处理。
 3)然后ASPNET_isapi.dll生成一个工作者进程(w3wp)启动一个应用程序域
 4)请求被交给HttpRuntime处理,HttpRuntime会将[http请求报文]封装到HttpContext对象中,
    并通过HttpApplicationFactory来创建一个【HttpApplication】,同时将HttpContext对象传给它。
 5)接下来,大部分处理都是由HttpApplication来完成的!HttpApplication类负责创建和执行页面
    包括调用处理管道(一系列过滤器---本质上就是调用一系列委托)-->19个事件
 6)IHttpHandler(在11-12事件中间执行了被请求的处理程序(aspx,ashx)) 的处理流程
  

7. 第一次请求网站时的编译的过程
 1)一般处理程序(C#代码)通过反射创建了类
 2).NET Framework将其编译成IL代码(程序集dll)
 3)JIT(即时编译)编译成机器码(0101),储存在服务器内存中
 其他浏览器再次请求网站的时候直接使用服务器内存中的机器码
 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值