浪漫骑士必胜

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ASP.NET(get和post比较)

首先我们回顾一下,之前学过的Http协议.

这里边有个连接,浏览器要请求服务器创建一个连接,连接之后,发送请求,服务器做出响应.响应结束之后,要关闭连接,当HTTP1.0的时候是短连接,HTTP1.1的时候是长连接。长连接的意思是等个非常短的时间,还有请求的话,连接就不关闭,否则的话就关闭。

因为这个连接,响应结束之后不管是长连接还是短连接,最终都要关闭。连接一关闭,服务器就不知道这个浏览器的存在,就是因为这个特点,Http是无状态的。无状态会给我们造成很多的麻烦,什么是无状态,就是服务器不会记得浏览器曾经请求过我。所以,同一个页面中请求了外部的js、css、jpg每次在请求这些文件的时候都需要重复提交一些数据。

如果网页中引用了多个外部文件,每一个文件都要发送一个请求。还有就是服务器跟浏览器的关系是:请求-响应。

服务器会不会主动的给浏览器发送响应?

不会的,因为服务器根本就不知道有哪些浏览器的存在。比如新浪微博,好像是服务器主动给浏览器发送响应的。

这个是怎么实现的呢?

服务器不会主动向浏览器发送响应,浏览器有个定时器不停的向服务器发送请求,获取服务器的响应。需要使用ServerPush(ajax隔一段时间到服务器请求最新的数据)等额外的技术。

迅雷里面的断点续传是怎么实现的呢?

当下载的时候,它会记录下来记录了多少个字节。并且把那些字节都放在临时文件里面。再次下载的时候从上次记录的字节的位置之后开始下载,并且存放到临时文件里面。直到整个文件被下载完毕。再还原这个文件。

今天我们要学一般处理程序,html控件与.NET内部对象。

1、目标:从网络的角度介绍 ASP.NET 的运行机制原理,并对 ASP.NET 中的几个核心对象进行分析.

2、检验结果:熟练使用一般处理程序完成单表增删改查

下面我们回顾下之前学过的内容,什么是浏览器语言?

在浏览器端执行的语言叫浏览器语言。

服务器语言就是在服务器上执行的语言。

静态页面和动态页面的区别是什么呢?

动态页面需要运行服务器端的语言,静态页面是纯展示的。静态页面服务器直接读文件,读完之后直接发送。在服务器上不会执行特别复杂的事情。

如果是动态页面的话,在服务器要创建这个类的对象,并且调相应的代码执行。

之前,我们自己写了个web服务器,真正应用的时候不会自己去写服务器。我们开发完网站之后,会把网站部署在iis上。

接下来我们看下iis web服务器工作的流程。

iis跟我们自己写的服务器的工作原理是类似的。

我们先看下iis:

                       

一、看下iis这个软件

xp里面的iis是5.1,win7里面的是6.0,界面稍微有些不一样。

 

二、iss运行网站

我们在里面可以建个虚拟目录,去发布一些网站。

演示下win7中怎么安装iis吧。

一、首先是安装IIS。打开控制面板,找到“程序与功能”,点进去

 

三、程序与功能

二、点击左侧“打开或关闭Windows功能”

 

四、打开或关闭Windows功能

三、找到“Internet 信息服务”,按照下图打勾即可

 

五、找到“Internet 信息服务”

等待安装完成

 

六、等待安装完成

四、安装完成后,再回到控制面板里面,找到“管理工具”,点进入

 

七、管理工具

五、双击“Internet 信息服务(IIS)管理器”就是IIS了。如果经常需要使用IIS的朋友,建议鼠标指到“Internet 信息服务(IIS)管理器”上,右键--发送到--桌面快捷方式,这样就能从桌面进入IIS,而不用每次都点控制面板。

 

八、IIS界面

IIS界面:

五、选中“Default Web Site”,双击中间的“ASP”

 

九、双击ASP

把“启用父路径”改为“True”

 

十、把启用父路径改为True

七、下面就是配置站点了。单击右侧“高级设置”

 

十一、“高级设置”

选择你网站的目录

 

十二、选择网站目录

八、回到IIS,单击右侧的“绑定...”,选中你要绑定的网站,点“编辑”

 

十三、选中网站-编辑

如果是一台电脑,只修改后面的端口号就行,可以随意修改数字。如果是办公室局域网,点击下拉框,选择自己电脑上的局域网IP,例如:192.168.**.**,然后修改端口号

 

十四、修改端口号

九、回到IIS,如果右侧显示停止,就选择启动,然后点击下面的浏览网站,就可以打开你绑定文件夹里面的网站了

 

十五、浏览网站

十、如果有多个网站,在IIS左边“网站”右键“添加网站”

 

十六、添加网站

主要修改三个地方,“网站名称”、“物理路径”、“端口”,如果局域网,请修改“IP地址”,同上

 

十七、修改内容

十一、添加好后,点击新建的网站名字,就是这个网站的详情了。

下面我们回来看看iis是怎么工作的,

                    

十八、点击配置

 

十九、aspnet_isapi.dll

其中的asp和aspx是不一样的。asp交给asp.dll了。

 

二十、asp交给另一个人去处理了

请求静态页面:

内部先去处理请求报文,请求报文处理请求的路径,然后再读文件。读到iis里面来,iis再为响应生成响应头,把文件发送给浏览器。

 

请求动态页面:

浏览器发送一个请求,通过后缀名来判断是静态的还是动态的?如果后缀名是aspx,这个时候iis处理不了。但是,找个人去处理,这个关系在哪儿配置的呢?

 

当请求过来以后,不管是静态页面还是动态页面,都去映射表里面找。只是找的找还是找不找的问题。如果是静态页面也会去映射表里面找,一看没找着,iis就自己处理了。读文件然后返还。如果找着了,一看后缀名是aspx并且在映射表里面找到了,请求交给aspnet_isapi.dll这个程序是FrameWork的。在安装完.net FrameWork之后才有这个文件。

那么,iis依赖.net FrameWork呢?iis直接运行在操作系统上,iis不依赖.net FrameWork,跟.net FrameWork之间没有关系。C#代码在.net FrameWork上执行。iis把请求转交给.net FrameWork,让.net FrameWork来执行页面的C#代码。isapi就是它们之间的关系。怎么去执行请求的类的对象,通过反射去创建这个类的对象。那个方法执行完之后就一层一层的返。最终,返回给浏览器。

当我刚装了操作系统,又配置了iis,能执行asp.net写的网站么?不能,没有.net FrameWork

如果我装了操作系统,又装了.net FrameWork,又装了iis,在iis上发布了一个asp.net的网站。能运行么?不能,这个时候iis不知道.net FrameWork的存在。没有配置。需要配置一下,有个命令:运行敲:cmd。

aspnet_regiis-i在iis里面注册.net FrameWork,生成我们看见的那些东西。不能在这运行。因为,这个命令是.net FrameWork安装目录里面的命令。

打开VS2010的命令提示。

 

二十一、不能在这执行

 

二十二、打开VS2010的命令提示

 

二十三、在这里执行下

 

二十四、iis运行过程图

 

二十五、工作流程图

请求过来之后,如果后缀名是aspx,如果是iis5.1就是windowsXP里面装的iis,这个时候请求直接交给iis。没有这个过程。现在这张图是iis6.0以后执行的过程。windows sever2003安装的就是6.0,6.0以后的iss都是这么来请求的。请求过来之后,这个请求没有到iis,第一步不经过iis。先经过http.sys,一个系统级别的驱动程序。操作系统内核程序。先接收到这次请求,对请求报文进行过滤看请求报文是不是合法?如果请求合法的话,这个驱动程序才把请求交给iis,iis再找iis的扩展程序,有aspnet_Isapl.dll和aspnet_filter.dll。这两个扩展程序做的事情不一样。

如果是静态页面直接处理,如果是aspx交给中间,如果是asp交给右面。

下面我们再说下什么是ASP.Net

ASP.Net是不是一种语言?不是,是一种动态网页技术,跟ASP一样。

ASP.NET和ASP有什么区别呢?

他们内部的一些对象还是一样的,因为这两个技术都是微软的,都是开发动态网页的技术。ASP开发动态网页的时候使用的服务器端的脚本语言。脚本语言都是解释执行的。C#和java都是编译执行的。ASP.NET依托于. net FrameWork框架。

 

我们在学习ASP.Net的时候需要学习这三部分内容。ASP.Net:一般处理程序(ashx),WebForm(aspx)、MVC(Model, View , Controler)。

 

看下今天的重点:

 

二十六、ASP.Net常用文件

现在我们只需要记住前三个就ok了。

下面我们写个一般处理程序,新建一个网站:

 

二十七、新建网站

 

二十八、新建空网站

如果我把VS关了,关了之后怎么打开网站?把网站发给了别人,别人怎么打开呢?文件-打开-网站。简单的办法:

 

二十九、另存为解决方案

用的时候直接找到保存的文件夹,双击解决方案就可以打开这个网站。

下面我们来建个一般处理程序:

 

三十、添加新项

 

三十一、新建一般处理程序

ashx就是一个类,为什么它不叫类了,变成一般处理程序了呢?就因为它实现了IHttpHandler这个接口。

 

三十二、一般处理程序

 

三十三、转到定义

ProcessRequest的作用是处理请求,并做出响应。

IHttpHandler接口的作用是保证所有能够处理浏览器请求的类具有这个方法。这是这个接口的作用。

 

三十四、HttpContext

 

三十五、执行服务器端代码

 

三十六、Content-Type

要是输出html代码的话,改成text/html

httpwatch_pro_6.1.46下载地址:

HttpWatch_Pro_7.1.37 下载地址:

练习:

输出一段包含图片的html页面代码试试。

                    

三十七、输出包含图片的html页面代码

 

三十八、发送了两次请求

 

三十九、返回了html代码

 

四十、再次发送请求,请求一张图片

 

四十一、服务器帮我们做的事情

下面我们把这段代码再改一下。

 

四十二、纯文本,怎么运行?

 

四十三、纯文本显示的就是纯文本

 

一般处理程序(HttpHandler):是一个实现System.Web.IHttpHandler接口的特殊类
任何一个实现了IHttpHandler接口的类,是作为一个外部请求的目标程序的前提。(凡是没有实现此接口的类,就不能被浏览器请求。)

它由支持ASP.NET的服务器调用和启动运行。一个HttpHandler程序负责处理它所对应的一个或一组URL地址的访问请求,并接收客户端发出的访问请求信息(请求报文)和产生响应内容(响应报文)。

简单的说:咱可以通过创建一个我们自己的HttpHandler程序来生成浏览器代码发送回客户端浏览器。

HttpHandler程序可以完成普通类程序所能完成的大多数任务:
1.获取客户端通过HTML的Form表单提交的数据和URL参数
2.创建对客户端的响应消息内容
3.访问服务器端的文件系统
4.连接数据库并开发基于数据库的应用
5.调用其他类

 

四十四、web服务器

 

四十五、一般处理程序

 

四十六、服务器怎么接收发送数据

 

四十七、今天需要掌握的内容

下面我们看下浏览器提交数据的两种方式,以百度为例:

 

四十八、百度搜索的时候是以url传参

 

四十九、通过表单提交数据

url以这种方式传参: http://127.0.0.1/login.ashx?txtname1=jordan&txtpwd1=123

下面我们自己写下get请求,

 

五十、接收数据

还有个页面模拟百度搜索的文本框,建立个文本框。

                     

五十一、写个html页面,模拟百度用url传参

 

五十二、在一般处理程序里面接收url

 

五十三、执行过程

                     

五十四、执行请求多个值

 

五十五、获取文本框的值以及传值

 

五十六、监视执行的过程

 

五十七、看看这样写能不能被提交

运行以后发现没有东西,所以根本就没提交给服务器。

 

五十八、改成这个样子

 

五十九、这种情况下还是通过get进行提交

下面我们再来看怎么通过post的方式传递数据.

                       

六十、表单提交的页面

 

六十一、给两个文本框起个名字

 

六十二、在服务器上获取数据

 

六十三、执行结果演示

下面我们再来看下get请求和post请求报文中的区别。

post比get请求报文中多的内容

Content-Type: application/x-www-form-urlencoded 就是告诉服务器传输给你的数据格式跟url是一样的。而且在进行post提交的时候,必须具有content-type,没有的话,post提交就失败。

Cache-Control: no-cache 就是告诉服务器,浏览器不去缓存你的页面。

请求体name=123&pwd=abc

 

六十四、注意下这个设置

下面我们看下Request常用成员

 

六十五、request

下面我们看下Params能获取什么?

 

六十六、遍历输出看看里面都有什么

 

六十七、Params能获取什么

context.Request[“”]这么写也行,但是不推荐使用。//相当于context.Request.Params

下面我们再来看下Response。

 

六十八、Response

 

六十九、Redirect

hello world输出没有?监视下请求。

 

七十、监视下请求

 

七十一、Redirect执行过程图

 

七十二、就不再往下执行了。

下面我们看下post的时候,需要注意的问题。

 

七十三、这种情况下不能post

页面上不可以有多个表单。可以,而且不会冲突。

因为每个表单都有一个action。

想要提交谁必须有name属性。

按钮能不能提交给服务器?加name就提交给服务器了。

只有value才能提交给服务器。

div不能提交给服务器。

只有表单元素才能提交给服务器。

当元素被禁用的时候也不会提交给服务器。

 

七十四、提交性别

 

七十五、选中谁提交谁

 

七十六、表单提交多选

 

七十七、监视提交多个

用服务器接收一下。

 

七十八、用服务器接收一下

 

七十九、获取到的值

如果我有多个文本框,文本框的name都一样,这个时候又怎么办?

下面我们演示下有多个文本框的时候的情况:

 

八十、监视有多个文本框的时候

下回我们将模拟登陆,请大家关注!!!

回到起始位置

 

作者近期文章列表:

C#中级进阶教程(完全免费,献给代码爱好者的最好礼物。注:本作者分享自己精心整理的C#中级进阶教程,无任何商业目的。希望与更多的代码爱好者交流心得,也请高手多多指点!!!)
ASP.net项目 图书商城项目总论
三层及其它内容 递归
三层(一)
三层相关案例(及常见的错误)
三层实例(内涵Sql CRUD)
手写代码生成器
SQL数据库 ADO.net 数据库的应用图解一
数据库的应用详解二
ADO.NET(内涵效率问题)
ADO.NET实例教学一
ADO.NET实例教学二
数据库的应用详解三
ADO.NET(内含存储过程讲解)
面向过程,面向对象中高级 面向过程,面向对象的深入理解一
面向过程,面向对象的深入理解二
面向对象的深入理解三
正则表达式
无处不在的XML
winform基础 Winform基础
winform中常用的控件
面向过程 三种循环的比较
C#中的方法(上)
我们常见的数组
面向对象 思想的转变
C#中超级好用的类
C#中析构函数和命名空间的妙用
C#中超级好用的字符串
C#中如何快速处理字符串
值类型和引用类型及其它
ArrayList和HashTable妙用一
ArrayList和HashTable妙用二
文件管理File类
多态
C#中其它一些问题的小节
GDI+ 这些年我收集的GDI+代码
这些年我收集的GDI+代码2
HTML概述以及CSS 你不能忽视的HTML语言
你不能忽视的HTML语言2精编篇
你不能忽视的HTML语言3
html-综合篇
CSS基本相关内容--中秋特别奉献
CSS基本相关内容2
JavaScript基础 JavaScript基础一
javascript基础二JavaScript DOM编程
jQuery jQuery(内涵: jquery选择器)
jquery实例教学一

 

posted on 2013-01-30 19:56  小事好  阅读(8410)  评论(9编辑  收藏  举报