ASPNET快速入门.ppt
《ASPNET快速入门.ppt》由会员分享,可在线阅读,更多相关《ASPNET快速入门.ppt(60页珍藏版)》请在三一办公上搜索。
1、内容:掌握基于ASP.Net的Web开发,B/S结构原理、ASP.Net内部原理、状态管理(Cookie、Session、ViewState等)、数据验证、普通ASP.Net控件、母版、ListView/Repeater等数据绑定控件、AJAX、缓存、Membership、导航、自定义控件等。目标:以应用为目标,能够使用ASP.Net开发常见的动态网站功能,并且和Dom、JQuery等客户端技术结合进行网站的开发。参考书:ASP.NET 3.5 揭秘注意:原理先行,对于ASP.Net来说弄明白了原理才能学得更快。会讲一些原理性的非常规用法代码,用标识,不要学这种写法。Java班先讲Servle
2、t再讲JSP,.Net也是先讲HttpHandler再讲WebForm。,课程安排,第一阶段:原生控件和.NET内部对象 1、目标:从网络的角度介绍 ASP.NET 的工作原理,并对 ASP.NET 中的几个核心对象与 HTTP 之间的关系进行分析。掌握WEB运行请求响应原理,核心对象及服务器页面生命周期。2、项目:GSSMS【绿色简单学生管理-原生版】第二阶段:服务器控件提高开发效率 1、目标:掌握服务器端控件的使用及控件生命周期。2、项目:GSSMS【绿色简单学生管理-服务器控件版】第三阶段:ASP.NET高级进阶 1、目标:掌握缓存/Ajax/Json/母板页/错误页/网站部署/CKFi
3、nder,我们怎么看到网站的?,1、在地址栏输入地址敲回车后浏览器到底做了什么事情?,服务器与浏览器语言,1.浏览器与服务器语言 浏览器只负责解释执行html+css+javascript代码 服务器可执行服务器端语言:.NET,JAVA,.,分别由不同的运行 环境执行代码(Framework,JVM)2.静态页面(html)和动态页面(aspx)的区别?比如说新闻列表页面(邮箱列表)。,浏览器:htmljavascriptcss,服务器:?HTML(.html).Net(.aspx.ashx)JAVA(.jsp)PHP(.php),编写代码演示静态页面和动态页面,ASP.NET里的常用文件(
4、重点),下面来编写一个登录的动态页面让各位加深体会,登录流程,用户打开登录页面,填入用户名密码,点击【登录】按钮,浏览器将用户输入的用户名、密码发送给网站服务器,网站服务器让负责处理登录请求的ASP.Net程序来处理这个登录请求,处理程序判断用户名、密码是否正确,然后将判断结果返回给浏览器。开发一个登录页面需要做两个工作:1.显示在浏览器中的页面、Dom特效,和C#代码没关系,也就是前端(前台)页面,相当于这个页面要生成的HTML代码模板;2.处理浏览器请求的服务器端代码,C#代码,也就是后台代码。,画图区分第一次请求和之后的提交,什么是ASP.Net,ASP.Net是一种动态网页技术,在服务
5、器端运行.Net代码,动态生成HTML。可以使用JavaScript、Dom在浏览器端完成很多工作,但是有很多工作无法在浏览器端完成,比如存储数据、访问数据库、复杂的业务逻辑运算、安全性要求高的逻辑运算等。服务端控件和HTML控件的生成关系:在aspx页面中可以使用服务端控件,简化开发。但浏览器只认html,因此在包含服务端控件的页面被请求时,页面中的服务器端控件会组装成对应的HTML控件代码字符串,如:TextBox。ASP.Net:WebForm、MVC。服务器控件不是新的控件,在浏览器端仍然是生成html标签。服务端控件虽然好用,但是也有缺点,并不是什么地方用服务器端控件都好,具体后面讲
6、。,Web应用程序和网站,WebApplication(Web应用程序)和WebSite(网站)的区别,WebSite是为了兼容从ASP转过来的开发人员的习惯而存在的,用起来简单,比如不需要创建命名空间、CS代码修改以后不需要重启就能看到变化(无论是WebSite还是WebApplication,修改aspx都不需要重启。WebApplication每次修改以后点击【生成解决方案】也能立即看到修改效果),但是不利于工程化开发,比如代码出错不容易发现,代码不分命名空间。开发技术上没有任何区别,只是开发、调试习惯不同而已。方便开发不用每次调试都设定起始页,在项目的选项中设定【Web】启动操作当前页
7、面,这样当前激活的页就是起始页。此次课程知识使用WebSite;,ASP.Net工作概要流程图,练习,练习:做一个加法计算器步骤:1.新建网站2.添加新建项-Web窗体(Cul.aspx)3.打开Cul.aspx,进入设计视图,从工具栏选择控件拖入到页面适当的位置(可以使用适当的HTML代码布局-Table)4.双击按钮,生成点击事件(和WinForm程序生成点击事件一样)5.在按钮点击事件中编写代码,接下来进入核心程序:一般处理程序,第一个网站-新建网站,第一个网站,注意:1.选择C#2.空网站3.文件夹,第一个网站-添加新项,在网站上点击右键,选择【添加新项】:,第一个网站-选择一般处理程
8、序,第一个网站-编写代码,FirstShow.ashx(一般处理程序),第一个网站-在浏览器查看,1.在要查看的文件上单击右键,选择 在浏览器中查看。,2.注意到屏幕右下角状态栏中出现了一个小图标:Cassini服务器是vs内置的开发用的小型服务器程序我们待会在浏览器看到的页面就是由它处理并返回的。,第一个网站-访问结果,显示:终于降临到这个神奇的国度了!,刚才俩家伙做了什么?(请求响应的过程),1.用户在浏览器地址栏输入:http:/localhost:80777/FirstShower.ashx,2.服务器接收到用户的请求,发现是请求.ashx文件,便将请求交给framework执行,fw
9、找到对应的文件login.ashx,执行后将生成的字符串(通常是html+css+javascript格式)返回给浏览器。,3.浏览器接收到服务器返回的数据,并按照语法解释执行,以界面的方式展示给用户看到。,(3.1此时如果html等代码中包含外部文件,则再次发送单独请求服务器相应文件数据),First.ashx,那如何理解B/S结构的原理呢?最好的办法就是我们自己做一个服务器程序,浏览器和服务器到底是什么东东?,如果我们自己来编写一个浏览器和服务器程序,该怎么做?就好像打电话一般咱们用中文还是用英文?(约定通信的语法)准备好要说的话(按照语法准备要传输给对方的数据)拨通电话(建立连接)通过电
10、话机/电话线说话(通过互联网传输数据)注意:两个人都得拿对话筒(通信双方关注接收对方的数据)总结:浏览器:一个可以通过HTTP协议向服务器发送各种请求,并对从服务器发来的超文本信息和各种多媒体数据格式进行解释、显示和播放。服务器:一个管理资源并为用户提供服务的计算机软件。交互时使用HTTP协议。,只能被浏览器请求吗?,HTTP请求详解图,先来结合刚才的网页程序了解一下HTTP请求过程,OurHttpServer-咱自己的服务器程序,浏览器和服务器本质上就是两个使用Socket进行基于HTTP协议的通信的两个应用程序(我们使用WinForm)。咱自己做个服务器程序要解决的问题:-1.怎么接收浏览
11、器的请求?接收以后怎么理解?0.怎么向浏览器发送响应?发送后浏览器怎么理解?1.如何对静态页面(html/css/javascript)的请求做出响应?2.如何对动态页面(ashx/aspx)的请求作出响应?动态文件可是有很多的,使用什么方式来调用呢?3.如何对图片文件(jpg/gif)的请求作出响应?4.如何保存状态?,OurHttpServer-咱自己的服务器程序,解决思路:1.使用套接字进行数据交换。2.使用HTTP协议(到底什么是HTTP协议?)的数据,双方按照此协议解释理解接收到的数据。3.直接读取静态文件的数据并通过套接字发送。4.对于动态文件的请求,可以通过分析请求页面,并反射所
12、对应的类,并通过接口调用类的方法。,那么,在ASP.NET中,是怎么解决这些问题的?,咱来依次举个例子。大家自己看10分钟。,HTTP协议消息结构图,浏览器,服务器,请求报文,响应报文,FirstShow.ashx,ashx?HttpHandler(一般处理程序),请求上下文对象(此次请求处理要使用到的信息和对象都在里面),被访问时被调用的处理方法。是不是想起:窗体加载事件了:void Form1_Load(object sender,EventArgs e),服务器响应属性(调用HttpResponse对象),是否重用(暂时用不着,不用理),重要接口,HttpHandlers在A处理的位置(
13、终点),请求管道(由N个过滤器组成),把处理过程看成一个黑盒子,我就知道你们想听.,一般处理程序(HttpHandler),一般处理程序(HttpHandler):是一个实现类接口的类。任何一个实现了IHttpHandler接口的类都能作为一个外部请求的目标程序。先演示一下ASPX页面。我们可以把一个HttpHandler看作是一个请求的终点。最常见的是ASP.NET页面。当用户请求一个.aspx页面时,请求将被页面交给页面Handler处理。咱可以通过创建一个我们自己的HttpHandler程序来生成浏览器代码发送回客户端浏览器。,如何接收和向发送客户端数据?,服务器怎么接收和发送数据?,服
14、务器怎么接收?,服务器怎么发送?,ASP.NET系统对象,在一般处理程序里,通过ProcessRequest方法的参数HttpContext context调用,一、浏览器提交数据方式?(例)1.表单:(数据藏在请求报文体中,格式:txtname=james,Request(HttpRequest)&Response(HttpResponse),注意:使用表单提交时必须为控件设置name,画图,浏览器请求属性,增删查,1.列表2.删除3.新增,Request(HttpRequest)常用成员,页面间传递数据的几种方式?如何获取传递过来的数据呢?,Request,Form 属性,Params 属
15、性,QueryString属性,获取通过URL路径传来的数据,获取通过表单提交传输的数据,客户端提交的数据集合,代码演示各种传值方式,Response(HttpResponse)常用成员,Response 允许开发人员对当前页面的输出流进行操作,Response,Redirect方法,Write方法,直接在页面上输出内容,重定向到另外一个页面,Response.Redirect(http:/);,Response.Write(Hello,China!);,End方法,结束输出,自己动手写动态网站,入门1.html 新建一个【一般处理程序】入门1.ashx,ProcessRequest中写con
16、text.Response.ContentType=text/html;string username=context.Requestusername;context.Response.Write(username+你好+Guid.NewGuid();每当用户请求访问ashx页面的时候,ProcessRequest方法就会被调用,在这里通过访问context.Request获得访问者的请求参数等。然后在ProcessRequest中通过context.Response向浏览器发回数据给浏览器。ProcessRequest结束之时就是服务器为这个浏览者本次访问服务完成之时浏览器向服务器端提交数据
17、,被提交数据的表单(input、select、textarea等)放到form中,form中通过action属性设定表单被提交给哪个页面,为了在服务端取出表单项的值,需要在HTML中为表单元素设定name属性,注意id是给JS操作Dom用的,name才是提交给服务器用的。在服务器端用context.Requestusername来根据表单项的name来获得提交的属性值。通过向浏览器输出处理后的显示HTML内容。,注意,当我们点击【提交】按钮以后是浏览器将用户填写的文本框等控件中的值“提取”出来发送给服务器,而不是服务器来读取用户填写的这个页面。哪些标签的哪些值会被提交给服务器呢?将用户填写的内
18、容提交到服务器有如下几个条件:只能为 input、textarea、select三种类型的标签。只有input(文本框、CheckBox等)用户才可能填写值,、等标签仅供显示用,没有提交到服务器的必要。只有value属性的值才会提交给服务器。以input标签为例,input标签有title、type、disabled等属性,但是这些属性都是供显示用的,用户并不能修改,只有value属性才是用户输入的属性,因此只有value属性的值才会被提交到服务器。标签必须设定name属性。学习Dom的时候我们知道如果要通过JavaScript操作标签,必须为标签设定Id。如果要将标签的value属性值提交到
19、服务器,则必须为标签设定name属性,提交到服务器的时候将会以“name=value”的键值对的方式提交给服务器,多个键值对之间用&分割。除了单选按钮等少数标签之外,大部分标签的name的值不能重复。name是给服务器用的,id是给Dom用的。对于RadioButton,同name的为一组,选中的RadioButton的value被提交到服务器。放到form标签内。只有放到form标签内的标签才可能会被提交到服务器,form之外的input等标签被忽略。,“返回”提交页面,如果还想返回提交页面,那么需要自己绘制。context.Response.Write();并没有真的返回提交页面,只是看起
20、来像罢了。,“返回”提交页面改进版,为了请求、返回的内容一样,将页面源码放到字符串常量中,模板中有一些待填值的占位符,第一次进入页面的时候就直接访问ashx,读取htm模板,将待填值占位符设置为空,然后输出到浏览器。为了区分是第一次直接进入页面还是点击提交以后重新进入ashx,在form中增加一个隐藏字段:,如果能够从Request中读取到ispostback=true就说明是点击提交以后重新进入ashx,否则就是第一次进入ashx。ispostback就是一个标志位。实现思路:在ProcessRequest中首先从Request中读取ispostback,如果读取到true,说明是提交进入的
21、,就加载模板,并且进行占位符用计算后的值替换,否则就将模板中的占位符清空直接输出给浏览者。占位符找一个特殊的不会和其他字符串冲突的就行。代码见备注刚进入hello2.ashx的时候是直接向浏览器输出内容,用户在输出的内容中填入数值,再点击提交,服务器就知道“提交回来了”(PostBack)Http是请求、响应的模型,服务器不会来读取浏览器的网页,能够得到的就是客户端网页提交过来的数据。如果访问Hello2.ashx,多次点击刷新,都是“直接进入”如果提交表单,再多次点击刷新,都是“提交进入”疑?讨论:文本框上次输入的值在提交表单后又显示出来并不是理所当然的,是开发人员帮着读取提交上来的值然后渲
22、染上去的。这就是ASP.Net中ASPX和CS的关系。IsPostBack是依赖于ViewState的,所以禁用了页面的ViewState,IsPostBack永远为False。演示aspx中的IsPostBack在刷新、重新输入地址等情况下的值。不是服务器去读取模板htm中的内容,而是读取用户的提交,比如可以直接敲入网址。可能的错误:先convert成int,再判断tostring是否为空。IHttpHandler就是一个很单一的“读取请求参数、发回响应给浏览器”的处理程序,没有其他“超能力”,表单提交方式:Get与Post,还可以设定的method属性指定表单提交方式,get(默认值)是通
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASPNET 快速 入门
链接地址:https://www.31ppt.com/p-5415881.html