般处理程序邹华栋.pptx_第1页
般处理程序邹华栋.pptx_第2页
般处理程序邹华栋.pptx_第3页
般处理程序邹华栋.pptx_第4页
般处理程序邹华栋.pptx_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ASP.NET,讲师:邹华栋,内容: 掌握基于ASP.Net的Web开发,B/S结构原理、ASP.Net内部原理、状态管理(Cookie、Session、ViewState等)、数据验证、普通ASP.Net控件、母版、ListView/Repeater等数据绑定控件、AJAX 、缓存等。 目标: 以应用为目标,能够使用ASP.Net开发常见的动态网站功能,并且和Dom、JQuery等 客户端技术结合进行网站的开发。 注意: 原理先行,对于ASP.Net来说弄明白了原理才能学得更快。会讲一些原理性的非常规用法代码,用标识,不要学这种写法。 Java班先讲Servlet再讲JSP,.Net也是先讲HttpHandler再讲WebForm(Aspx)。,总体:(企业里直接使用的,相当重要!),课程安排(目标就是完成4套增删改查),第一阶段:一般处理程序、html与.NET内部对象 1、目标:从网络的角度介绍 ASP.NET 的运行机制原理,并对 ASP.NET 中的几个核心对象进行分析. 2、检验结果:熟练使用一般处理程序完成单表增删改查 第二阶段:WebForm aspx 1、目标:WebForm的使用(aspx/aspx.cs),控件树,页面代码生成。 2、检验结果:熟练使用WebForm结合html控件完成增删改查(分页)。 第三阶段:AJAX 1、目标:理解AJAX实现机制,结合webform和一般处理程序。 2、检验结果:熟练使用WebForm结合html与AJAX技术完成增删改查(分页)。 第四阶段:WebForm服务器控件 1、目标:掌握服务器端控件的使用。 2、检验结果:熟练使用WebForm结合服务器控件完成增删改查(分页)。 第五阶段:ASP.NET高级进阶 1、目标:掌握缓存/母板页/错误页/静态页/网站部署/页面生命周期/HttpModule/Url重写/,服务器与浏览器语言,1.浏览器与服务器语言 浏览器只负责解释执行html+css+javascript代码 服务器可执行服务器端语言:.NET,JAVA,.,分别由不同的运行 环境执行代码(Framework,JVM) 2.静态页面(html)和动态页面(aspx)的区别?看图 比如说新闻列表页面(邮箱列表)。 index.aspx,浏览器: html javascript css,服务器: ?HTML(.html) .jpg .css .js .Net(.aspx .ashx) JAVA(.jsp) PHP(.php),注意:今天开始我们用微软的服务器软件,我们来了解下请求流程,请求流程图,什么是ASP.Net,一定要区别开:ASP.NET 和 ASP ! ASP.Net是一种动态网页技术,在服务器端运行.Net代码,动态生成HTML,然后响应给浏览器(画图) 为什么要有:可以使用JavaScript、Dom在浏览器端完成很多工作,但是有很多工作无法在浏览器端完成。 ASP.Net:一般处理程序(ashx),WebForm(aspx)、MVC4(Model, View , Controler),ASP.NET里的常用文件(重点),能显示服务器当前时间的一般处理程序,编码(ContentType) 向浏览器输出当前的服务器时间 练习: 输出一端包含图片的html页面代码试试。,一般处理程序(HttpHandler),一般处理程序(HttpHandler) 是一个实现System.Web.IHttpHandler接口的特殊类。 任何一个实现了IHttpHandler接口的类,是作为一个外部请求的目标程序的前提。(凡是没有实现此接口的类,就不能被浏览器请求。) 一个HttpHandler程序负责处理它所对应的URL的访问请求,并接收客户端发出的访问请求信息(请求报文)和产生响应内容(响应报文) HttpHandler程序可以完成普通类程序所能完成的大多数任务: 1.获取客户端通过HTML的Form表单提交的数据和URL参数 2.创建对客户端的响应消息内容 3.访问服务器端的文件系统 4.连接数据库并开发基于数据库的应用 5.调用其他类,第一个网站-在浏览器查看,1.在要查看的文件上单击右键,选择 在浏览器中查看。,2.注意到屏幕右下角状态栏中出现了一个小图标: Cassini服务器 是vs内置的开发用的小型服务器程序 我们待会在浏览器看到的页面就是由它处理并返回的。,第一个网站-访问结果,显示: 终于降临到这个神奇的国度了!,FirstShow.ashx,ashx? HttpHandler(一般处理程序),请求上下文对象 (此次请求处理要使用到的信息和对象都在里面),被访问时被调用的处理方法,服务器响应属性(调用HttpResponse对象),是否重用(暂时用不着,不用理),重要接口,服务器怎么接收和发送数据?,服务器怎么接收?,服务器怎么发送?,如何接收和向发送客户端数据?,ASP.NET系统对象,在一般处理程序里,通过ProcessRequest方法的参数HttpContext context调用,一、浏览器提交数据方式?(例) get/post 1.表单:(数据藏在请求报文体中,格式:txtname=james,Request(HttpRequest) & Response(HttpResponse),注意:使用表单提交时必须为控件设置name,浏览器请求属性,Request(HttpRequest)常用成员,页面间传递数据的几种方式?(get/post : 超链接,location,js的submit(),表单提交按钮) 如何获取传递过来的数据呢?,Request,Form 属性,Params 属性,QueryString属性,获取通过GET方式传来的数据 浏览器:超链接,和表单Method=get,获取通过POST方式传来的数据 表单method=post,客户端提交的数据集合,编写登录页面,代码演示各种传值方式,Response(HttpResponse)常用成员,Response 允许开发人员对当前页面的输出流进行操作,Response,Redirect方法,Write方法,直接在页面上输出内容,重定向到另外一个页面 服务器发送命令让浏览器跳转,Response.Redirect(““);,Response.Write(“Hello,China!“);,End方法,结束输出,HTTP请求详解图,先来结合刚才的网页程序了解一下HTTP请求过程,HttpApplicationFactory,HttpApplication池,HttpRuntime 分析浏览器的请求报文,然后将请求报文的数据存入 HttpContext的Request属性中,HttpApplication中负责创建和执行页面,浏览器请求,服务器软件IIS,IIS的可扩展程序,实现了IIS的接口,这里还会调用HttpRunTime来响应 请求,并且调用静态方法创建HttpApplication,HttpApplication会先一次执行几个事件(就看成是过滤器),最后创建请求页面的对象,并转成IHttpHandler接口对象调用执行,浏览器发送请求到服务器来了,请求被交给服务器软件IIS处理, IIS处理不了,则根据后缀名交给 扩展程序处理。.aspx .ashx -,处理程序在.net中是如何由文件里的类变成IL执行的?,请求编译流程图,自己动手写动态网站,入门1.html 新建一个【一般处理程序】入门1.ashx, ProcessRequest中写 context.Response.ContentType = “text/html“; string username = context.Request“username“; context.Response.Write(username + “你好“+Guid.NewGuid();/根据当前电脑的硬件编号+系统时间微秒数 每当用户请求访问ashx页面的时候,ProcessRequest方法就会被调用,在这里通过访问context.Request获得访问者的请求参数等。然后在ProcessRequest中通过context.Response向浏览器发回数据给浏览器。 ProcessRequest结束之时就是服务器为这个浏览者本次访问服务完成之时 浏览器向服务器端提交数据,被提交数据的表单(input、select、textarea等)放到form中,form中通过action属性设定表单被提交给哪个页面,为了在服务端取出表单项的值,需要在HTML中为表单元素设定name属性,注意id是给JS操作Dom用的,name才是提交给服务器用的。在服务器端用context.Request“username“来根据表单项的name来获得提交的属性值。通过context.Response.Write向浏览器输出处理后的显示HTML内容。,注意,当我们点击【提交】按钮以后是浏览器将用户填写的文本框等控件中的值“提取”出来发送给服务器,而不是服务器来读取用户填写的这个页面。哪些标签的哪些值会被提交给服务器呢?将用户填写的内容提交到服务器有如下几个条件: 只能为 input、textarea、select三种类型的标签。只有input(文本框、CheckBox等)用户才可能填写值,、等标签仅供显示用,没有提交到服务器的必要。 只有value属性的值才会提交给服务器。以input标签为例,input标签有title、type、disabled等属性,但是这些属性都是供显示用的,用户并不能修改,只有value属性才是用户输入的属性,因此只有value属性的值才会被提交到服务器。 标签必须设定name属性。学习Dom的时候我们知道如果要通过JavaScript操作标签,必须为标签设定Id。如果要将标签的value属性值提交到服务器,则必须为标签设定name属性,提交到服务器的时候将会以“name=value”的键值对的方式提交给服务器,多个键值对之间用&分割。除了单选按钮等少数标签之外,大部分标签的name的值不能重复。name是给服务器用的,id是给Dom用的。对于RadioButton,同name的为一组,选中的RadioButton的value被提交到服务器。 如果设置了控件的disabled属性的话,浏览器也不会提交该控件的值。 放到form标签内。只有放到form标签内的标签才可能会被提交到服务器,form之外的input等标签被忽略。,“返回”提交页面改进版,为了请求、返回的内容一样,将页面源码放到字符串常量中,模板中有一些待填值的占位符,第一次进入页面的时候就直接访问ashx,读取htm模板,将待填值占位符设置为空,然后输出到浏览器。 为了区分是第一次直接进入页面还是点击提交以后重新进入ashx,在form中增加一个隐藏字段:,如果能够从Request中读取到ispostback=true就说明是点击提交以后重新进入ashx,否则就是第一次进入ashx。ispostback就是一个标志位。 实现思路:在ProcessRequest中首先从Request中读取ispostback,如果读取到true,说明是提交进入的,就加载模板,并且进行占位符用计算后的值替换,否则就将模板中的占位符清空直接输出给浏览者。 占位符找一个特殊的不会和其他字符串冲突的就行。代码见备注 刚进入hello2.ashx的时候是直接向浏览器输出内容,用户在输出的内容中填入数值,再点击提交,服务器就知道“提交回来了”(PostBack) Http是请求、响应的模型,服务器不会来读取浏览器的网页,能够得到的就是客户端网页提交过来的数据。 如果访问Hello2.ashx,多次点击刷新(重复上一次操作),都是“直接进入” 如果提交表单,再多次点击刷新,都是“提交进入” 疑?讨论:文本框上次输入的值在提交表单后又显示出来并不是理所当然的,是开发人员帮着读取提交上来的值然后渲染上去的。,Get与Post深入,还可以设定的method属性指定表单提交方式,get(默认值)是通过URL传递表单值,post传递的表单值是隐藏到http报文体中,url中看到不。 get和post的区别(常考):get是通过url传递表单值,post通过url看不到表单域的值;get传递的数据量是有限的,如果要传递大数据量不能用get,比如type=“file”上传文章、type=“password”传递密码或者发表大段文章,post则没有这个限制;post会有浏览器提示重新提交表单的问题,get则没有(加分的回答)。对于Post的表单重新敲地址栏再刷新就不会提示重新提交了,因为重新敲地址就没有偷偷提交的数据了。Post方式的正确的地址很难直接发给别人。 Get方式URL数据格式。服务端文件名后跟着“?”,由于客户端可能向服务器端提交多个键值对,键值对之间用“&”进行分割,如果URL中有汉字、特殊符号等,则需要对URL进行编码。 表单域只有设定了name的才会被提交给服务器(用get方式看的清楚)。如果给submit按钮设定name,那么按钮的value也会被提交给服务器 【刷新】。,对比查看post/get报文数据,数值自增,实现input的自增:点击按钮input中的值自动增加,代码见备注。点击刷新就一直是值不变,只有点击提交才会变,分析原理。用开发人员工具篡改文本框的值自增就从新的值开始了。 使用aspx重写input的自增。 练习:用ashx实现加法计算器。常见错误:type=submit才会自动提交表单,type=button不会自动提交。从ashx启动和从html启动的区别 练习:实现div内文本的自增。因为服务器不记得上次给浏览器的值是什么,而且不像input那样会将上次的值重新提交回来,因此浏览器需要用一个隐藏字段将上一次的值保存下来。代码见备注 http无状态,每次请求都是由一个新的页面对象来处理请求。如果把value搞成static可以实现,但是两个用户访问的话就会串了。而用Input方式的话两个人各自点各自的,不会互相影响。 非表单元素无法将客户端的元素值传递给服务器端,即使是表单元素也只能传递value值,对于其他属性值比如背景颜色、大小等也是无法传递的,因此对于这些值都要存在隐藏字段中。,增删改查(三层),1.列表 2.删除 3.新增 4.修改,HttpHandler实现图片上传,一、浏览器端 1.表单元素使用 文件选择框 控件。 2.表单设置enctype=“multipart/form-data“,本质上就是设置浏览器提交表单的数据时,使用随机 分隔符 来分割 不同控件的数据,而且 数据的组织形式由 name=value 换成了 数据头 和 数据体 的方式。 二、服务器端 1.服务器接收客户端上传的文件使用Request.Files属性。 2.使用HttpPostedFile的SaveAs方法将图片保存在服务器。,HttpHandler实现动态图片输出,HttpHandler是对请求的响应,可以输出普通的html内容,也可以输出图片、也可以输出一个文件(下载) 输出一幅动态创建的图片 案例1:图片中显示访问者信息 案例2:填入朋友的姓名就能生成恶搞的图片链接 案例3:绘制图片水印(使用全局一般处理程序) 练习:制作简单验证码图片 网上看到的注册、登录时候的验证码也是动态生成的图片、55.la也是这样实现的原理。,HttpHandler实现文件下载,如果HttpHandler输出的是html/txt/jpeg等类型的信息,那么浏览器会直接显示,如果希望弹出保存对话框,则需要添加Header string encodeFileName = HttpUtility.UrlEncode(“生活大爆炸117.avi”); Response.AddHeader(“Content-Disposition”, string.Format(“attachment;filename=”0“”, encodeFileName); 其中filename后为编码后的文件名。filename段为建议的保存文件名。 练习:使用Handler为学员列表添加“下载学员附件”功能,ASP.NET第一阶段的第一部分结束,ASP.NET第一部分主要内容: 主要内容: 1.浏览器/服务器交互原理(请求/响应的过程)。 2.ASP.NET运行机制:浏览器-服务器电脑-IIS-IIS扩展程序(aspnet_isapi.dll)-FrameWork-HttpRuntime-HttpContext-HttpApplicationFactory-HttpApplication-请求管道(事件委托19个)-IHttpHandler(在11-12事件中间执行了被请求的处理程序(aspx,ashx) 的处理流程。 3.Web网站和Web应用程序的区别(开始时和发布后) 4.【一般处理程序】的使用(增删改查)和上传文件/动态输出文件数据 5.上下文对象(HttpContext)的 重要属性: Response(负责向客户端输出),Request(包含所有客户端提交的数据) Application,Cookies, Session,HttpHandler实现文件下载2,1、新增需求: 增加一个ShowMsg.aspx页面,接受Msg、Url两个参数,分别是显示的消息和“点击继续”的链接地址。 2、登录以后将登录的用户Id存入Session。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论