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:

    ASP.NET(get和post比较)                   

一、看下iis这个软件

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

 ASP.NET(get和post比较)

二、iss运行网站

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

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

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

 ASP.NET(get和post比较)

三、程序与功能

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

 ASP.NET(get和post比较)

四、打开或关闭Windows功能

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

 ASP.NET(get和post比较)

五、找到“Internet 信息服务”

等待安装完成

 ASP.NET(get和post比较)

六、等待安装完成

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

 ASP.NET(get和post比较)

七、管理工具

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

 ASP.NET(get和post比较)

八、IIS界面

IIS界面:

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

 ASP.NET(get和post比较)

九、双击ASP

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

 ASP.NET(get和post比较)

十、把启用父路径改为True

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

 ASP.NET(get和post比较)

十一、“高级设置”

选择你网站的目录

 ASP.NET(get和post比较)

十二、选择网站目录

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

 ASP.NET(get和post比较)

十三、选中网站-编辑

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

 ASP.NET(get和post比较)

十四、修改端口号

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

 ASP.NET(get和post比较)

十五、浏览网站

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

 ASP.NET(get和post比较)

十六、添加网站

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

 ASP.NET(get和post比较)

十七、修改内容

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

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

     ASP.NET(get和post比较)               

十八、点击配置

 ASP.NET(get和post比较)

十九、aspnet_isapi.dll

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

 ASP.NET(get和post比较)

二十、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的命令提示。

 ASP.NET(get和post比较)

二十一、不能在这执行

 ASP.NET(get和post比较)

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

 ASP.NET(get和post比较)

二十三、在这里执行下

 ASP.NET(get和post比较)

二十四、iis运行过程图

 ASP.NET(get和post比较)

二十五、工作流程图

请求过来之后,如果后缀名是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(get和post比较)

二十六、ASP.Net常用文件

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

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

 ASP.NET(get和post比较)

二十七、新建网站

 ASP.NET(get和post比较)

二十八、新建空网站

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

 ASP.NET(get和post比较)

二十九、另存为解决方案

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

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

 ASP.NET(get和post比较)

三十、添加新项

 ASP.NET(get和post比较)

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

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

 ASP.NET(get和post比较)

三十二、一般处理程序

 ASP.NET(get和post比较)

三十三、转到定义

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

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

 ASP.NET(get和post比较)

三十四、HttpContext

 ASP.NET(get和post比较)

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

 ASP.NET(get和post比较)

三十六、Content-Type

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

httpwatch_pro_6.1.46下载地址:

HttpWatch_Pro_7.1.37 下载地址:

练习:

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

        ASP.NET(get和post比较)            

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

 ASP.NET(get和post比较)

三十八、发送了两次请求

 ASP.NET(get和post比较)

三十九、返回了html代码

 ASP.NET(get和post比较)

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

 ASP.NET(get和post比较)

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

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

 ASP.NET(get和post比较)

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

 ASP.NET(get和post比较)

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

 

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

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

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

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

 ASP.NET(get和post比较)

四十四、web服务器

 ASP.NET(get和post比较)

四十五、一般处理程序

 ASP.NET(get和post比较)

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

 ASP.NET(get和post比较)

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

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

 ASP.NET(get和post比较)

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

 ASP.NET(get和post比较)

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

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

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

 ASP.NET(get和post比较)

五十、接收数据

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

             ASP.NET(get和post比较)        

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

 ASP.NET(get和post比较)

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

 ASP.NET(get和post比较)

五十三、执行过程

ASP.NET(get和post比较)                     

五十四、执行请求多个值

 ASP.NET(get和post比较)

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

 ASP.NET(get和post比较)

五十六、监视执行的过程

 ASP.NET(get和post比较)

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

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

 ASP.NET(get和post比较)

五十八、改成这个样子

 ASP.NET(get和post比较)

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

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

   ASP.NET(get和post比较)                    

六十、表单提交的页面

 ASP.NET(get和post比较)

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

ASP.NET(get和post比较) 

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

 ASP.NET(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

 ASP.NET(get和post比较)

六十四、注意下这个设置

下面我们看下Request常用成员

 ASP.NET(get和post比较)

六十五、request

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

 ASP.NET(get和post比较)

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

 ASP.NET(get和post比较)

六十七、Params能获取什么

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

下面我们再来看下Response。

 ASP.NET(get和post比较)

六十八、Response

 ASP.NET(get和post比较)

六十九、Redirect

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

 ASP.NET(get和post比较)

七十、监视下请求

 ASP.NET(get和post比较)

七十一、Redirect执行过程图

 ASP.NET(get和post比较)

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

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

 ASP.NET(get和post比较)

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

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

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

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

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

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

div不能提交给服务器。

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

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

 ASP.NET(get和post比较)

七十四、提交性别

 ASP.NET(get和post比较)

七十五、选中谁提交谁

 ASP.NET(get和post比较)

七十六、表单提交多选

 ASP.NET(get和post比较)

七十七、监视提交多个

用服务器接收一下。

 ASP.NET(get和post比较)

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

 ASP.NET(get和post比较)

七十九、获取到的值

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

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

 ASP.NET(get和post比较)

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

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

回到起始位置

 

作者近期文章列表:

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实例教学一

 

相关文章: