ASP.NET之一般处理程序笔记
1.b/s结构原理 2.asp.net内部原理 3.状态管理(cookie,session,viewstate)
4.HttpContext 上下文对象里的Response属性,其实就相当于 是一个响应报文对象,可以通过它设置响应报文的内容. 比如: context.Response.ContentType="text/html", 就是设置响应报文头的Content-type值, 告诉浏览器,要将响应报文作为html解析处理
5.响应的,浏览器发来的请求报文数据,就在HttpContext类的Request属性
6.每次调用Response.Write("输出内容")的时候,其实是将字符串存入了 HttpResponse对象里的一个TextWriter的内部字节数组中. 此数组中的数据,将最终成为 响应报文体内容.
7.ASP.NET中系统对象: HttpResponse: 封装了页面执行器返回到HTTP客户端的输出(http响应报文数据) .内部有一个字节数组,用来保存响应报文的数据信息 HttpRequest: 读取客户端在Web请求期间发送的值,(http请求报文数据)内部字节数组,用来保存请求报文的数据信息 Page : 指向页面自身的方式,作用域为页面执行期 HttpApplication : 作用于整个程序运行期的状态对象. Session : 会话期状态保持对象,用于跟踪单一用户的会话. Cookie:客户端保持会话信息的一种方式 Server:提供对服务器上的方法和属性的访问 8.浏览器向服务器传参:如何在服务器接收浏览器传来的数据 context.Request.QueryString["name"]; 获取get参数 ,超链接的name值 context.Request.Form[""] 获取post数据. context.Request.Params[""] 以上两种获取值的综合体.
浏览器提交数据方式: 1.表单提交(数据藏在请求报文体中) : 必须设置控件的name属性值 2.地址栏的URL参数,超链接的url,js中的location (与表单的Get方式一样) :数据藏在请求报文头中 形式:http://127.0.0.1/login.ashx?txtname=jordan&txtpwd=123
9.Response: 1.Redirect页面重定向原理: 页面执行时发现重定向,便在响应报文体中产生: http 1.1/ 302 Found location:重定向地址 2.end方法:结束输出.
<<<10.ASP.NET运行机制运行原理:>>> 1.浏览器客户端发送请求报文-- 2.IIS服务器进行处理- 3.isAPI.dll扩展程序(到IIS映射表中查找后缀名,若查找到了,转到4, 如果找不到,则IIS服务器自己对其进行处理,比如静态页面, IIS服务器自己进行读取,将响应报文返回给浏览器)-- 4.将请求报文交给FrameWork- 5.ISAPIRuntime-- 6.HttpRuntime--Http运行时 7.创建HttpWorkerRequest对象(请求报文信息在里面,返回的报文请求也包括在内)-- 8.HttpContext对象:上下文对象包括1.HttpRequest对象 2.HttpResponse对象 (需要使用HttpWorkerRequest对象)-- 9.通过HttpApplicationFactory工厂模式-- 10.创建HttpApplication对象(里面包含HttpContext上下文对象)-- 11.调用HttpApplication的ProcessRequest()方法-- 12.在此同时执行请求中所注册的19个委托事件-- 13.执行到第八个事件时,通过反射创建请求页面的实体类对象, 页面的实体类都必须实现FrameWork环境所提供的IHttpHandler公共接口, 该接口实现了ProcessRequest()方法 14.在执行到第11个事件和第12事件 之间,调用了反射创建的请求页面 对象的ProcessRequest()处理方法 , 15.将处理后所得到的响应报文信息通过HttpFinishRequest对象包装返回给HttpWorkerRequest对象 16.HttpWorkerRequest对象 通过HttpResponse对象将响应报文返回给IIS服务器 17.最后再将响应报文返回到浏览器页面解析出来
11.一般处理程序: 是一个实现System.Web.IHttpHandler接口额特殊类 任何一个实现了IHttpHandler接口的类,是作为一个外部请求 的目标程序的前提(凡是没有实现该接口的类,就不能被浏览器请求, 实现该接口的类也不一定全能被外部请求)
15010204606 常洋 QQ 928188501
--------------------- 3-30( 一般处理程序的增删改查 ) --------------------- 1.ContentType: text/html等响应报文头与响应报文体(write)信息 都是由HttpResponse对象获得的.
2.同一个一般处理程序页面 在不同方法中拿不到上下文对象context时 可以通过HttpContext.Current.Response.Write();获取当前的上下文对象
---------------- 4-1 ( 文件上传 ) ----------------- 1.必须通过表单提交要上传的数据,设置enctype属性 <form action="" method="post" enctype="multipart.form-data"></form> 2.必须使用post提交表单数据 3.必须设置表单的属性 enctype="multipart.form-data" 设置enctype后,请求报文头中多处一个:boundary属性(分界符) 请求报文体的数据格式发生改变: 由name="value"的方式 变成 分界符分段的方式 . 被选中要上传的文件数据,就包含在请求报文体中. HttpFileCollection files= content.Request.Files; //获取浏览器页面 所有文件的信息 HttpPostedFile file=files[i];
---------------- 2 (生成图片) ---------------- 1.首先修改格式 context.Response.ContentType = "image/jpeg"; 2.创建一个画布(图片对象): Image img= new Bitmap(120,60); Image img=Image.FromFile("图片的绝对路径");//读取图片信息 Image img=Image.FromStream(图片文件流);//读取图片信息 3.创建一个画笔: Graphics g =Graphics.FromImage(img) ; 将图片对象传进去 4.使用画笔进行绘画: g.DrawString("显示内容",new Font("全新硬体行书简"),Brushes.Yellow,x,y); --画在图片对象的 哪个位置 g.DrawImage(水印图,new Rectangle(),new Rectangle(),GraphicsUnit.pixel); 参数0:所要画的水印图 参数1:操作的是源图片,设置所要打印的水印图的大小以及开始坐标的位置 参数2:操作的是水印图片,设置水印图片显示的部分以及显示的宽高 参数3:设置单位为像素 5.设置图片保存的格式:img.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg); 将图片以指定的格式保存到指定的输出流中
------------------------- 3. (文件下载(文件另存为)) -------------------------- 在响应报文中添加一个报文头类型 HttpUtility.UrlEncode("文件名");//将文件相对路径 进行url转码 context.Response.AddHeader("Content-Disposition","attachment; filename=\"文件名\"");