第一章 ASP.Net编程基础知识
第一章 ASP.Net编程基础知识
本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识。然后介绍ASP.Net技术基础。
9.1 网络基础
用ASP.Net技术编制服务器端动态网页,必然要和网络打交道,具备一些网络方面的知识是必要的。这里假设读者已经学习过计算机基础课程,在此基础上,进一步介绍用ASP.Net技术编制服务器端动态网页所需的必备网络基础知识。
9.1.1 局域网、广域网和INTERNET
把分布在不同地理区域的计算机以及专门的外部设备利用通信线路互连,使各个计算机之间能够相互通讯,实现信息和资源共享,就组成了计算机网络。在一个较小区域,例如在单位内部组成的计算机网络,称为局域网。一个较大区域的计算机网络,称为广域网。为了使各个局域网之间互相通讯,可以把各个局域网连起来,组成广域网。如将全世界范围的计算机网络采用TCP/IP网络传输协议联到一起,则组成INTERNET。
INTERNET提供了许多服务,例如:远程登录服务Telnet、文件传送服务FTP、电子邮件服务E-mail、电子公告板系统BBS、万维网WWW(Web)、电子商务、IP电话等。这里主要介绍万维网WWW中服务器端动态网页的设计方法。
9.1.2 网络传输协议
网络的目的是为了通讯,共享资源。通讯即传输数据,为了传输数据各个系统应遵守一定规则,这个规则叫网络传输协议。不同的网络操作系统采用不同的网络传输协议。而在INTERNET中,为了传输数据,所有系统都必须采用相同的传输协议,即TCP/IP协议。
9.1.3 IP地址
INTERNET中有成千上万台计算机,它允许任何两台计算机之间进行通讯,为了区分不同的计算机,必须给每一台计算机一个唯一的编号,这个编号叫计算机的IP地址,它是一个32位二进制数,用四个十进制数表示,中间用点隔开,每个十进制数允许值为0-255(一个字节),例如,202.112.10.105,这种记录方法叫点数记法。一个IP地址一般由两部分组成,网络标志号及此网络中的计算机号,例如,202.112.10.105如果是一个C类地址,其网络标志号为202.112.10.0,网络中的计算机号为105。一个局域网络中,所有计算机都应有相同的网络标志号,每个计算机有不同的计算机号,两个不同局域网络,其网络标志号必须不同,但不同网络中,计算机号可以相同。一个计算机要和INTERNET联接,必须有自己的IP地址。
32位IP地址被分为5类,即A、B、C、D和E类地址。A类地址的第一字节为网络标志号,其余3字节为计算机号。B类地址的前两个字节为网络标志号,其余2字节为计算机号。C类地址的前三个字节为网络标志号,最后一字节为计算机号。D类为特殊地址,E类为私有地址。对计算机进行TCP/IP设置时,有一项叫子网掩码,用子网掩码表示IP地址是哪类地址,A类地址的子网掩码是:255.0.0.0,B类地址的子网掩码是:255.255.0.0,C类地址的子网掩码是:255.255.255.0。我国大部分单位的IP地址为C类地址。
9.1.4 域名和域名服务器
用点数法表示的IP地址,虽然简单,但很难记忆,为了解决此问题,可以为INTERNET网中的每台计算机起一个名字,在INTERNET中叫域名。例如微软的域名www.microsoft.com,清华大学的域名www.tsinghua.edu.cn。
在INTERNET中访问其它计算机必须使用IP地址。为了实现使用域名访问其它计算机,域名必须首先转换为IP地址。在网内有一台计算机运行将域名转换为IP地址的软件,这台计算机叫DNS服务器(域名服务器)。它负责一定区域内的计算机域名到IP地址的转换,这个区域一般是一个网络内部的所有计算机。当网内的计算机用域名和其它计算机通讯时,首先呼叫DNS服务器,DNS服务器送出此域名对应的IP地址,网内的计算机收到IP地址后,利用IP地址和其它计算机通讯。一台DNS服务器不可能完成全世界所有域名转换为IP地址的工作。DNS服务器采用分布式结构,如果本地DNS不能转换相应的域名,则向上一级DNS申请转换。计算机要和INTERNET联接,设置TCP/IP协议时,必须设置DNS服务器IP地址。
9.1.5 Web网站工作方式和宿主目录
Web网站是基于客户机/服务器模式。用户用浏览器访问Web网站的网页,运行浏览器软件的计算机叫客户机。Web网站是一台运行Web服务器软件的计算机,称作Web服务器。Web服务器在指定的文件夹中存有大量的网页,这个文件夹叫宿主目录,宿主目录下的文件对访问者都是可见的。Web服务器软件总是在监视是否有浏览器访问自己。客户机用浏览器访问Web服务器,在浏览器地址栏键入要访问网页的域名地址,用DNS(域名系统)转换域名为IP地址,通过IP地址和指定的Web服务器通讯,该Web服务器把指定网页文件发送给浏览器。浏览器接到网页数据,将其显示。
宿主目录在不同的Web服务器软件中是不同的。Windows2000的Web服务器软件IIS的宿主目录为Windows2000的安装路径\InetPub\wwwroot。大部分Web服务器允许修改宿主目录,修改方法见9.1.12。
9.1.6 URL、超级链接和主页
使用浏览器浏览Web网站网页时,实际上是用URL来定位一个网页的。URL是Uniform Resource Location(统一资源定位器)的简称。他的一般格式是:http://域名:端口号/网页文件路径。http:是Web专用超文本传输协议。域名,即上边讲到,例如www.microsoft.com是微软域名,此处可以是IP地址,其格式为http://IP地址:端口号/网页文件路径。网页文件路径是要访问的网页文件相对于宿主目录的相对路径。在Web系统中,每一个网页都有自己的URL,由URL决定网页在INTERNET中的具体位置。URL很象计算机文件系统中的文件全路径名。
网页中有些文本带有下划线,当鼠标经过这些带有下划线的文本时,鼠标变为手形,单击带有下划线的文本,将调入和这些文本有关的网页并显示。这种现象叫超级链接。超级链接的本质是,单击该关键词,得到和关键词有关的网页的URL,用此URL访问指定Web服务器,该Web服务器送出此URL指定的网页,在浏览器中显示。
如果访问时不指定网页文件路径及文件名,则访问网站主页,例如当我们在浏览器的URL(地址)处键入http://www.sun.com/时,将访问sun公司主页。主页文件一定存在宿主目录中。主页文件名在不同的Web服务器中是不同的。Windows2000的Web服务器软件IIS默认主页文件名为Default.htm。当用户使用不带文件名的URL访问Web服务器时,并且宿主目录中不存在主页,而且Web服务器允许列出宿主目录下的所有文件及目录,将在浏览器中列出宿主目录下的所有文件及目录。
9.1.7 端口号
一台计算机上可能运行多个服务器软件,如Web服务器软件(可能不只一个)、ftp服务器软件等,它们的IP地址是相同的。为了区分不同的服务器软件,可为运行的每个服务器软件编一个号,叫端口号。如果一台计算机仅运行一个Web服务器软件,并使用默认端口号80,端口号可以不写。但如有多个Web服务器运行,在访问不是采用默认端口号的Web服务器软件时,URL必须指明使用的端口号。访问其它服务器软件也有同样问题,处理方法相同。
9.1.8 HTML,HTTP和网页
网页使用HTML标记语言写成。HTML标记是用特殊的ASCII字符来定义网页中的格式、字体、颜色等内容。由于各种系统中,例如Windows、Linux、Unix和苹果系统,都支持ASCII字符标准,不同系统中的浏览器都可以解释这些HTML标记,然后使用本系统的方法,将用HTML标记语言标记的网页在屏幕中显示。这样,不同的系统都使用统一的HTML标记创建网页,任何一个系统的浏览器都可以访问其它系统中的网页。
网页是Web系统中最小传输单位,它是用HTML语言标记的具有一定格式的数据集合,可供浏览器显示。HTTP是超文本传输协议,用在Web服务器和浏览器之间传输网页。本质上是TCP/IP协议,所有的Web服务器和浏览器都应遵守HTML和HTTP协议,才能使同一网页在任何计算机中,使用任何浏览器都能显示同一画面。但实际上各公司浏览器软件是有差异的,最明显的是IE和Netscape之间在显示同一网页时,是有差别的。做好网页后,应用不同浏览器测试一下,看是否都能通过
9.1.9 静态网页
创建一个网站,必须编制若干网页,网站才算建成。静态网页是预先做好的网页,在被访问时不能被修改。静态网页制作比较容易,即使不懂超文本语言,使用FrontPage,Dreamewarer等应用程序也可以完成,而动态网页制作则比较困难。
9.1.10 客户端动态网页
客户端动态网页的例子很多,例如网页根据上午、下午、晚上问客人早上好、下午好和晚上好;又如网页对于用户输入的内容进行检查,根据用户的选择完成不同的功能;在浏览器内实现动画,放映影片等,这些都是客户端动态网页的例子。可以在HTML语言标记中加入Javascript或VBscript脚本语言来实现客户端动态网页。也可以在HTML语言嵌入Java小程序(Applet)来实现。编写客户端动态网页,除了要学习HTML语言,还应该学习VBscript或Javascript脚本语言,进一步还可以学习Java语言。另外使用微软的ActiveX控件也是实现客户端动态网页的一种方法。
9.1.11 Web应用程序和服务器端动态网页
举一个客户登录的例子,当客户用浏览器填好表格后,将表格数据传回Web服务器,应把这些信息存入数据库。Web服务器软件并不能完成此项工作,它调用运行Web服务器软件的计算机上的其它程序完成,这个程序叫Web应用程序。又如,建立一个中学校园网,并建立一个学生信息数据库,可供校长、教导处、老师查询。一般要根据一些条件进行查询,如某班的学生,获得三好生的学生等。浏览器把所查找的条件送给Web服务器后,Web服务器必须调用Web应用程序完成此项工作,此程序从数据库查到有关数据后,要转换查找结果为HTML语言标记的网页,传送给Web服务器,再发送给请求此项查询的浏览器。这个根据查询条件动态生成的网页叫做服务器端动态网页。编制服务器端Web应用程序主要有如下几种方法:CGI,ISAPI,NSAPI,ASP,ASP.Net,JSP,PHP等。ASP.Net技术是微软最新提出的编制Web应用程序的技术。Web应用程序在Web网站系统中所起的作用如下图,图中用ASP.Net实现的Web应用程序采用ADO.Net技术访问数据库。该图是一个典型的三层数据库系统,所谓三层是根据功能将应用分为表示层、功能层、数据层3部分。这里的3层分别用浏览器、Web服务器(包含Web应用程序)、数据库服务器实现。一些文献中提到4层数据库系统是将Web应用程序从Web服务器分离,在Web服务器和数据库之间增加一个应用服务器(应用层)。这里主要讲述Web应用程序的设计方法。
浏览器 |
Web服务器 |
Web应用程序 |
数据库服务器 |
访问数据库的方法
9.1.12 修改宿主目录及建立虚拟目录
创建一个网站,必须有如下条件:第一,联网并有固定的IP地址。第二,安装并运行Web服务器软件,例如Windows操作系统下的IIS,Unix或Liunx下的Aparc。第三,在宿主目录下有可供游览的网页。具备以上三个条件,就可以用浏览器访问此Web网站中的静态网页。如果在网站中要使用ASP.Net技术编写的网页,必须在网站所在的Windows2000操作系统中安装Microsoft.Net Framework。Windows2000的IIS服务器默认的宿主目录为Windows2000的安装路径\InetPub\wwwroot。可以修改宿主目录为其它任意目录,例如修改Windows2000的IIS服务器的宿主目录为D:/asp方法如下:
(1) 在D盘创建文件夹:ASP。打开控制面板,双击管理工具图标。再双击Internet服务管理器图标。出现如下对话框(图9.1.12A)。
图9.1.12A
(2) 在对话框左侧,右击第一个+号后的计算机名,在弹出快捷菜单中,单击"新建"|"WEB站点"菜单项,打开"向导"对话框,按向导步骤选择文件夹D:/asp为新站点宿主目录。单击第一个+,打开文件树,右击"默认WEB站点",在弹出快捷菜单中,单击"停止"菜单项,停止"默认WEB站点"。用同样方法停止"管理WEB站点"。
(3) 右击图9.12.1A中的某一站点,在弹出快捷菜单中单击"属性"菜单项,出现如下窗口(图9.12.1B),在窗口中可以修改此站点的各种属性。其中"文档"页可以指定主页的文件名。
图9.12.1B
请读者作如下试验,首先用记事本创建如下网页:
<html>
<body>
这是我的第一个网页
</body>
</html>
以文件名Test.htm存到d:/asp文件夹中,如本机IP地址为:202.204.206.98。在另一台联网计算机中打开浏览器,输入地址:http://202.204.206.98/Test.htm,在浏览器中应能看到文字:这是我的第一个网页。从本机访问宿主目录下的网页时,可以在浏览器的URL(地址)处键入:http://localhost/网页相对宿主目录的相对路经。其它计算机访问时,可以在浏览器的URL(地址)处键入:http://IP地址或域名/网页相对宿主目录的相对路经。
也可以用创建虚拟目录的方法存放网页。所谓虚拟目录,是指一个不在宿主目录中的目录,经过设置后,可以看作宿主目录中的一个子目录,其中的网页文件允许其它计算机的浏览器进行浏览。创建虚拟目录具体步骤如下:
(1) 打开控制面板,双击管理工具图标。
(2) 双击Internet 服务管理器图标。出现图9.12.1A窗口。
(3) 单击计算机名前的+号,展开文件树。
(4) 右击默认Web站点,出现弹出菜单,在弹出快捷菜单中单击"新建"|"虚拟目录"菜单项,打开向导对话框,按向导步骤选择D:/asp1为虚拟目录。此时,在默认Web站点下将会出现设定的虚拟目录(想一想虚拟目录名是在何处设定的),此目录允许其他人访问。如把文件Test.htm拷贝到这个虚拟目录,请读者写出此网页的URL。
9.2 HTML标记语言
网页使用HTML标记语言写成。HTML标记是用特殊的ASCII字符来定义网页中的格式,字体等特点。由于各种系统中,都支持ASCII字符标准,不同系统中的浏览器都可以解释这些ASCII标记,然后使用本系统方法,将用HTML语言标记的网页在屏幕中显示。这样,一个系统就可以访问其它不同系统中用HTML标记的网页。
不经过Web服务器,双击静态网页或者在浏览器地址栏中键入网页文件的全路径,也可用浏览器显示浏览器所在计算机中的静态网页。
9.2.1 HTML标记
HTML标记是用特殊的ASCII字符来定义网页中的格式、字体、字符对齐方式等特点。其格式为:<标记名称>被控制的文字</标记名称>。其中,<标记名称>为开始标记,</标记名称>为结束标记,一般用来定义被控制的文字的格式或字体等。例如,下列标记使被控制的文字中间对齐:<center>ASP.Net</center>
9.2.2 网页文件结构
一个网页文件的最基本HTML标记结构如下:
<html>
<head>
<title>显示在浏览器标题栏中的文字</title>
</head>
<body>
这里是网页的内容
</body>
</html>
<html>表示网页文件的开始,</html>表示网页文件的的结束,网页的所有内容都应在这两个标记之间。<head>…</head>之间可以设定网页的一些信息,网页也允许不包括这个标记,<title>…</title>之间的文字显示在浏览器的标题栏中。<body>…</body>之间是网页在浏览器中显示的内容。由此可以看出,在HTML语法中,HTML标记可以嵌套,一个HTML标记可以包含另一个HTML标记,但标记的嵌套不能是交错的。下边是一个实际例子:
<html>
<head>
<title>这是我的第一个网页</title>
</head>
<body>
<center>
这是我的第一个网页。<BR>
其中<BR>标记表示换行,
注意,仅键入回车是不能在网页中换行的。<BR>
注意空格的用法, 键入四个空格,网页中只有一个空格。<BR>
增加4个空格,    是4个空格<BR>
网页中不区分大小写,不同浏览器显示的效果可能不同<BR>
<p>这是段落标记,下面文字另起一段</p>
<!--这是注释,浏览时不显示-->
注意,特殊符号的显示:<,>,",&,©,®
</center>
</body>
</html>
网页用IE浏览器显示效果如右图,请注意显示的内容和原文件内容排版格式的不同。
9.2.3 网页使用的语言字符集
网页中如果不指定语言字符集,将使用浏览器所在操作系统的默认语言字符集,为了保证网页能正确显示信息,最好在网页中指定本网页使用的语言字符集。在网页中指定网页使用的语言字符集方法见下边的网页,其中gb2312是中文字符集。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>meta的使用</title>
</head>
<body>
meta的使用。
</body>
</html>
9.2.4 背景和文字颜色及文字边距
设置背景和文字颜色及文字边距的语法如下:<body bgcolor=#,text=#,link=#,alink=#, vlink=#,leftmargin=20>。其中bgcolor为背景颜色,text为非超级链接字符颜色,link为超级链接字符颜色,alink为正被点击的超级链接字符颜色,vlink为已被访问的超级链接字符颜色,#表示具体颜色,可用rrggbb表示,rr、gg、bb分别是表示红色、绿色、蓝色的16进制数,例如,红色为:ff0000。可以用topmargin、bottommargin、leftmargin、rightmargin设置页面上下左右边距,单位为像素。下例设置背景色为红色,页面左右边距为20个像素。
<html>
<body bgcolor=ff0000,leftnargin=20,rightnargin=20>
设置背景色为红色,页面左右边距为20个像素。
</body>
</html>
9.2.5 显示一幅图
下例在网页中显示一幅图。注意网页中的src="file:///D:/ASP/p1.jpg"的写法。其中,file://是文件协议,用来选择本地文件。一般网页中用http://,即超文本协议,用URL定位图像文件。如采用URL定位图像文件,所创建网页文件必须保存到Web服务器的宿主目录中,在浏览器地址栏键入网页的URL,才能访问所创建的网页,显示图像。
<html>
<body>
增加一幅图形!<BR>
<IMG src="file:///D:/ASP/p1.jpg" width="320" height="240">
</body>
</html>
9.2.6 超级链接
网页中有些文字带下划线,当鼠标经过带下划线文字时,鼠标变为手形,单击带下划线文字,将调入和单击处文字有关的网页并显示。这种方法叫超级链接。本节例子用超级链接方法在当前窗口打开网页e9_2_5.htm。这里要求网页e2_2_5.htm和本网页在同一文件夹中。
<html>
<body>
这是一个
<a href="e9_2_5.htm">链接的例子</a>
点一下带下划线的文字!
</body>
</html>
9.2.7 超级链接在新窗口打开另一网页
例子e9_2_7A:本例使用超级链接在新窗口打开另一网页,网页文件如下:
<html>
<body>
<a href="e9_2_7B.htm" target="window_name">开一个新窗口!</a>
</body>
</html>
用浏览器打开网页e9_2_7A,将光标移到”开一个新窗口”处,光标变为手型,单击”开一个新窗口”,将在一个新窗口显示e9_2_7B.htm网页。
例子e9_2_7B:e9_2_7B.htm网页如下:
<html>
<body>
<H1>这是新开的窗口!</H1>
<a href="e9_2_7A.htm> 打开原窗口 </a>"
</body>
</html>
9.2.8 网页中标题的字体
网页中一共有6种标题字体,见下例:
<html>
<body>
<h1>这是1级标题!</h1>
<h2>这是2级标题!</h2>
<h3>这是3级标题!</h3>
<h4>这是4级标题!</h4>
<h5>这是5级标题!</h5>
<h6>这是6级标题!</h6>
</body>
</html>
其中,标题字体是黑体,每个标题后自动插入一个空行。
9.2.9 网页中正文字体
可以设置网页中正文字体的字号,字号只能是1到7。设置正文字体字号方法见例子:
<html>
<body>
<font size=7>字号为7,最大字体</font>
<font size=6>字号为6</font>
<font size=5>字号为5</font>
<font size=4>字号为4</font>
<font size=3>字号为4</font>
<font size=2>字号为2</font>
<font size=1>字号为1,最小字体</font>
</body>
</html>
9.2.10 设置字体风格
可以使在网页中显示的字体为斜体、粗体,为字体增加下划线,删除线。见下例:
<html>
<body>
<b>标记内的字为黑体</b> <br>
<i>标记内的字为斜体</i> <br>
<u>标记内的字有下划线</u> <br>
<tt>标记内的字等宽,例如w和i等宽</tt> <br>
H<sub>2</sub> ,2为下标<br>
A<sup>2</sup> ,2为上标<br>
<s>标记内的字加删除线</s> <br>
<strike>标记内的字加删除线</strike> <br>
</body>
</html>
9.2.11 字体标记的组合使用
通过标记的嵌套,可以使网页中的字符具有多种属性,见下例:
<html>
<body>
<i><font size=5><b>今天</b>天气<font size=6>真好!</font></font></i>
</body>
</html>
9.2.12 字体的颜色
可以使网页中的字符具有不同颜色,见下例:
<html>
<body>
<font size=5 color=000000>黑色的字符串</font>&
<font size=5 color=red>红色的字符串</font>
</body>
</html>
9.2.13 网页中控件的概念
Web服务器为了和用户进行交互,必须解决如下问题:首先,用户应能输入一些数据,例如,要查询的条件,用户登录的信息等。第二,这些数据用什么方法传到Web服务器。第三,Web服务器用哪个程序响应用户。为了实现以上功能,必须使用窗体控件,也叫表单控件form。同时在表单控件form中还需要一些其它控件,例如,编辑框控件,列表框控件,下拉列表框控件和按钮等,用来输入数据。可以用HTML标记语言标记这些控件。浏览器看到这些标记,就把它显示为相应的控件。控件有许多属性,也可以用HTML标记语言描述,格式为:属性名称=属性值,两个属性用空格分开。
9.2.14 窗体控件和其它控件的使用
窗体控件(表单控件form)是其它控件的容器,所有其它控件都要放到窗体控件中。用HTML标记表单控件form的基本语法如下:
<form action=URL method="POST">
<!--在此处增加交互控件,例如编辑框、列表框-->
<input type="submit" value="提交" name="B1">
<input type="reset" value="全部重写" name="B2">
</form>
其中,标记<form action=URL method="POST">…</form>定义表单控件form,action=URL中的URL是单击"提交"按钮后,对用户输入信息进行处理的网页URL,method="POST"表示用POST方法将用户输入的数据传到Web服务器,也可以用get方法。传递格式为:Name=Value。
form控件内可以增加交互控件,用户用交互控件输入数据。交互控件的标记语法如下:<input type=?align=top|middle|bottom [check] maxlength=? Name=? Size=? Src=? Type=? Value=?>,input表示定义一个交互控件,其它各个属性意义如下:
Type为控件类型,可以是:type="submit"为提交按钮;type="reset"为全部重写按钮; type="checkbox"为复选框;type="radio"为单选框;type="image"为图形;type="text"为编辑框;type="password"为口令编辑框;type="hidden"用户不能看到,可以用来传递网页的一些隐藏的数据。align为控件中文本对齐方式,可以取top、middle和bottom。[check]只有在type="checkbox"或"radio"时使用,表示缺省被选中。Maxlength属性在type="text"编辑框时表示最大字符长度。Name属性代表此控件的名字。Size属性在type="text"编辑框时表示编辑框最大宽度。Value如为按钮,则为标题,为编辑框,则为缺省内容。
在form控件内已定义了两个按钮控件,其中<input type="submit" value="提交" name= "B1">是"提交"按钮控件,因此类型为submit,按钮标题为"提交",控件的name为"B1",当用户单击此按钮,form控件将把控件内的所有交互控件中的数据用method属性指定方法,传递给action指定的网页处理。<input type="reset" value="全部重写" name="B2">也是一个按钮,用户单击此按钮,将清空form控件内的所有可输入数据的交互控件。
9.2.15 例子:使用控件的网页
本例请用户用编辑框输入用户姓名、用户主页网址、用户密码,有两个按钮,单击"提交"按钮,将把用户输入数据提交给网页e1.htm处理,e1.htm网页和本例网页在同一文件夹中。如希望重新填写,可以单击"全部重写"按钮,清空输入控件。网页的具体内容如下:
<html>
<head>
<title>使用控件的网页例子</title>
</head>
<body>
<form method="POST" action="e1.htm">
您的姓名:<input type="text" name="T1" size="20"><br>
您的主页的网址:<input type="text" name="T2" size="20"><br>
密码:<input type="password" name="T3" size="20"><br>
<input type="submit" value="提交"><input type="reset" value="全部重写"><br>
</form>
</body>
</html>
用记事本程序输入此网页,以e9_2_15.htm为文件名存入d:/asp文件夹,这里已假设d:/asp文件夹为网站的宿主目录。用浏览器打开此网页,浏览器显示效果如右图。
9.2.16 用FrontPage做网页的例子
用FrontPage或Dreamewarer程序编辑网页要比使用记事本编辑网页方便的多,这两个程序都是所见即所得的可视化网页设计工具。使用FrontPage设计网页的具体步骤如下:
(1) 运行FrontPage。单击主菜单"文件"|"新建"|"网页"菜单项。出现"新建"对话框,选择"常规"选项卡页中的"普通网页",单击"确定"按钮,创建一个新网页。
(2) 单击主菜单"插入"|"表单"|"表单",增加一个表单(form)。在表单中已有"提交"按钮和"全部重写"两个按钮。将光标移到提交按钮前,键入回车,增加form垂直方向尺寸。
(3) 右击"提交"按钮,单击弹出快捷菜单中"表单域属性"菜单项,出现"按钮属性"对话框,在"名称(N)"编辑框健入按钮名称(Name属性),"值/标签(V)"编辑框中健入按钮标题,选择按钮类型为"提交"。退出对话框。用同样方法修改另一按钮的标题为"全部重写"。
(4) 将光标移到第一行,单击VS.Net菜单"插入"|"表单"|"复选框"菜单项,在第一行增加一个复选框。右击复选框,单击弹出的快捷菜单中"表单域属性"菜单项,出现"复选框属性"对话框,在"名称(N)"编辑框健入"水果1",初始状态为选中,关闭对话框,在复选框后键入字符:香蕉。用同样方法增加另外两个复选框:苹果、桔子。
(5) 用FrontPage创建的网页文件如下:
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 2</title>
</head>
<body>
<form method="POST" action="--WEBBOT-SELF--">
<!--webbot bot="SaveResults" U-File="fpweb:///_private/form_results.txt"
S-Format="TEXT/CSV" S-Label-Fields="TRUE" -->
<p><input type="checkbox" name="水果1" value="香蕉">Banana</p>
<p><input type="checkbox" name="水果2" value="苹果" checked>Apple</p>
<p><input type="checkbox" name="水果3" value="桔子" checked>Orange</p>
<p><input type="submit" value="提交查询内容" name="B1"><input type="reset" value="全部重写" name="B2"></p>
</form>
</body>
</html>
9.3 ASP.Net技术基础
上节用Html标记语言定义了一些标准的控件,例如编辑框控件,列表框控件,下拉列表框控件和按钮等。但这些控件功能有限,如果要实现复杂的功能,程序员要编写大量的代码。程序员迫切需要一种设计服务器端动态网页的可视化工具,能象使用C#语言设计Window应用程序一样设计动态网页,使用控件的属性、事件和方法等面向对象的概念。
为了实现这个目的,引入ASP.Net服务器端控件概念。ASP.Net首先引入运行在服务端WebForm概念,代替表单(form)。在WebForm中可以放入多个服务器端控件,除了列表框、编辑框、按钮等控件,还包括一些新的功能更加强大的控件,例如DataGrid,数据验证控件等。所有这些控件,都是.Net框架类库中相应的类,有自己的属性、方法和事件,能够完成复杂的功能,例如自动响应事件,支持数据绑定等。这些概念和编制Windows应用程序相应的概念基本相同。这些ASP.Net服务器端控件也使用Html语言标记。但由于浏览器并不能解释这些服务器端控件的Html标记,因此并不传送包含这些服务器端控件的网页给浏览器解释,而是由Web服务器负责翻译包含这些服务器端控件的网页为所有浏览器都能解释的标准Html标记的网页,翻译后的网页在浏览器端执行的代码为所有浏览器都能解释的标准Jscript脚本语言代码,传送给浏览器解释或执行。这样就极大地简化了服务器端动态网页的设计,也保证了生成的网页的显示效果和浏览器无关。使用ASP.Net技术创建的服务器端动态网页,网页文件的扩展名为.aspx。
本节首先介绍ASP.Net服务器端控件基本概念,然后介绍使用记事本编写ASP.Net动态网页的方法,最后介绍如何使用VS.Net编写ASP.Net动态网页。
9.3.1 HTML服务器端控件
ASP.Net中的HTML服务器端控件和标准的HTML控件有着对应关系,但功能更强大。可以在程序中修改HTML服务器端控件的属性,能够在服务器端响应事件,支持数据绑定等。例如增加一个HTML服务器端控件编辑框用如下HTML语句:
<INPUT TYPE=”TEXT” ID=”Text1” MAXLENGTH=16 RUNAT=”SERVER”/>
和标准的HTML控件的区别是增加了属性RUNAT="SERVER"。属性ID是代表这个控件对象的唯一标志,和Windows应用程序中的控件属性Name的意义是一样的。HTML服务器端控件是为了方便原来学习HTML或ASP编写Web应用程序的程序员而提供的。如果,你以前是Windows应用程序员,建议使用Web服务器端控件,这些控件不但功能更强大,而使用上更象Windows应用程序中的控件,因此学习更方便。因此这里就不介绍HTML服务器端控件了。
9.3.2 Web服务器端控件
在ASP.Net系统中,除了HTML服务器端控件外,还包括Web服务器端控件。同HTML服务器端控件一样,这些控件可以在程序中修改服务器端控件的属性,能够在服务器端响应事件,支持数据绑定等。例如定义一个Web服务器端编辑框控件,方法如下:
<asp:TextBox id="textBox1" runat="server"/>
这里asp:TextBox表示这是一个Web服务器端编辑框控件,runat="server"表示运行在服务器端,属性id是代表这个控件的唯一标志,相当于Windows应用程序中的控件属性Name。服务器端控件不但功能更强大,而且和编制Windows应用程序中的控件使用方法基本一致,因此学习更方便。除了提供和标准HTML控件功能类似的服务器端控件外,还增加了一些新的服务器端控件,例如:DataGrid,数据验证控件等。本书的所有Web应用程序例子都使用Web服务器端控件。
9.3.3 Web Form的事件处理
象Windows应用程序一样,ASP.Net应用程序也采用事件驱动的概念,用户对浏览器的各种操作都被看作事件,事件产生后,Web应用程序用事件处理函数响应事件。但ASP.Net的事件驱动模型和Windows应用程序的事件驱动模型有着本质上的区别。Web应用程序中的Web服务器端控件产生事件后,由于事件处理函数在Web服务器端,网页的WebForm控件把事件通过网络使用HTTP协议由浏览器传到Web服务器,在Web服务器执行事件处理函数,把运行结果转变为标准HTML标记语言标记的网页,传回浏览器。
在Web事件处理机制中,每一次Web应用程序响应事件都会使得网页重新生成,即刷新网页。在服务器完成对某一个网页的处理操作并将它传送至浏览器,随即移除该网页在服务器端的所有数据,包括Web应用程序在服务器端运行时生成的方法,对象,变量,也就是说,这些定义的对象和变量在服务器端已不存在了。当Web应用程序再一次响应事件时,运行在服务器端的Web应用程序又会重新生成这些方法,对象,变量。基于此原因,我们说网页是无状态的,即网页变量与控件的数据并不会保留在服务器上。
我们增加事件处理函数时,应考虑网络传播的速度的影响,不能象Windows应用程序那样,响应太多的事件。在网页中,每个控件都有属性AutoPostBack,其值为true,事件发生后才能自动调用事件处理函数,如果不希望响应该事件,应将该控件的属性AutoPostBack设为false。
9.3.4 记事本编写ASP.Net动态网页
ASP.Net中的服务器端控件也用HTML标记,但这些服务器端控件的HTML标记并不传送给浏览器解释,而是由Web服务器负责翻译为所有浏览器都能解释的标准HTML标记后,传送给浏览器解释。所有ASP.Net服务器端控件都要放到Web窗体(WebForm)中,Web窗体也由Web服务器负责解释。下边是一个简单的使用Web服务器端控件的例子:
<%@ Page language="c#" %>
<html>
<head>
<title>这是我的第一个ASP.Net网页</title>
</head>
<script language="c#" runat=server>
void Page_Load(Object src,EventArgs e)
{ if(Page.IsPostBack)//如果网页是由于响应事件后刷新,不执行其后语句
Label1.Text="现在的时间是:"+DateTime.Now;
}
void EnterBtn_Click(Object src,EventArgs e)//按钮单击事件处理函数
{ Label1.Text="现在的时间是:"+DateTime.Now;}
</script>
<body>
<form runat=server>
<asp:Label id="Label1" font-size="14" font-bold="true" forecolor="red" runat=server>
现在的时间是:</asp:Label> <br>
<asp:button text="查看时间" Onclick="EnterBtn_Click" runat=server/>
</form>
</body>
</html>
网页文件第一条语句表示网页中使用C#语言。<html>表示网页文件的开始,</html>表示网页文件的的结束,网页的所有内容都应在这两个标记之间。定义在标记<html>和</html>之间的内容被分为三部分,第一部分:<head>和</head>之间可以设定网页的一些信息,<title>和</title>之间的文字显示在浏览器的标题栏中。第二部分:<script language="c#" runat=server>和</script>标记之间可以定义网页中使用的方法,变量或对象,language="c#"表示在此标记之间使用C#语言编制程序,runat=server表示在此标记之间定义的方法运行在Web服务器端,这里定义了两个方法,方法Page_Load()是网页每次被重新生成时调用的方法,包括第一次调用本网页,单击浏览器刷新按钮,以及网页响应事件后,前两项使IsPostBack=false,后一项使IsPostBack=true,在此方法中可做一些初始化工作。语句if(Page.IsPostBack)表示如果网页是由于响应事件后刷新,不执行其后语句。方法EnterBtn_Click()是"查看时间"按钮的事件处理函数。第三部分:<body>和</body>之间是网页在浏览器中显示的内容。<form runat=server>和</form>标记定义Web窗体(WebForm),注意runat=server表示Web窗体由Web服务器解释。在Web窗体中增加了两个控件对象,第一个是Label控件,asp:Label表示本控件是Label控件,id相当Windows应用程序中控件的Name属性,用来区分不同对象,runat=server表示此控件由Web服务器解释,其余是设定属性值,注意不同属性用空格分隔。第二个控件是按钮,请注意定义单击事件处理函数的方法。
将网页以文件名e9_3_4.aspx存入d:/asp文件夹,如果d:/asp文件夹已被设定为Web站点,可以在IE的地址栏输入http://localhost/ e9_3_4.aspx,在浏览器中可以看到此网页。在浏览器端看不到这些代码,Web服务器已将ASP.Net网页翻译为标准的Html标记,传递给浏览器,单击IE主菜单"查看"|"源代码"菜单项,可以看到这些用标准HTML编制的网页。
9.3.5 用VS.Net创建ASP.Net动态网页
用VS.Net实现上节的例子。具体步骤如下:
(1) 运行VS.Net,进入开始界面(图1.2.2A),单击"新建项目"按钮,打开"新建项目"对话框(图1.2.2B),在"项目类型(P) "列表框中选择"Visual C#项目",在"模板(T) "列表框中选择"ASP.Net Web应用程序",在"位置(L)"编辑框中键入:http://localhost/e9_3_5,http://localhost代表要建站点的宿主目录,创建本Web应用程序项目的所有文件存入宿主目录的文件夹e9_3_5中,点击确定按钮,生成一个空白窗体(WebForm1)。用户可在窗体中放入其它服务器端控件。VS.Net自动建立了一个Web应用程序项目。
(2)放置一个Label控件到WebForm窗体中,该控件用来显示一行文本。设置属性text为"现在的时间是:",在属性窗口中找到Font属性,单击Font属性左边的"+"号,在出现的子属性中,可以修改Label控件中文本的字体和字号等属性。编辑完成后,单击变成"-"号的方框隐藏Font的子属性。修改ForeColor属性,可以修改Label中文本的颜色。
(3)放置一个Button控件到WebForm窗体,按钮的Text属性为"查看时间"。为"查看时间"按钮增加单击(Click)事件处理函数如下:
private void Button1_Click(object sender, System.EventArgs e)
{ Label1.Text="现在的时间是:"+DateTime.Now;
}
(4)已存在Page_Load函数,在Page_Load事件处理函数中增加语句:
private void Page_Load(object sender, System.EventArgs e)
{ Label1.Text="现在的时间是:"+DateTime.Now;
}
(5) 单击工具栏中蓝色箭头按钮,运行,看一下效果。也可用浏览器看一下,在浏览器地址栏输入地址:http://localhost/e9_3_5/WebForm1.aspx。请仔细观察,每一步骤VS.Net都为我们增加了什么语句。
9.3.6 Code Behind技术
Code Behind技术把用HTML标记语言标记的界面和用C#语言编写的代码放在不同文件中。这对于代码的重复使用,程序的调试和维护都是十分方便的。特别是在团队开发中,可以使不同人员编辑不同文件,极大地提高了效率。下面是使用Code Behind技术制作的网页。
例子e9_3_6.aspx:这是网页界面文件,其中不包括代码,代码在e9_3_6.aspx.cs文件中。语句<%@ Page Inherits="MyPage" src="e9_3_6.aspx.cs" %>中的src="e9_3_6.aspx.cs"表示网页的所有C#语言代码在文件e9_3_6.aspx.cs中,Inherits="MyPage"表示此网页的基类。
<%@ Page Inherits="MyPage" src="e9_3_6.aspx.cs" %>
<html>
<head>
<title>使用Code Behind的技术网页</title>
</head>
<body>
<form runat=server>
<asp:Label id="Label1" Text="" runat=server/> <br>
<asp:button text="查看时间" Onclick="EnterBtn_Click" runat=server/>
</form>
</body>
</html>
例子e9_3_6.aspx.cs:这个文件是e9_3_6.aspx网页中使用的代码。
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
public class MyPage:Page
{
public Label Label1;
public Button Button1;
public void EnterBtn_Click(Object src,EventArgs e)//事件处理函数
{ Label1.Text="现在的时间是:"+DateTime.Now;
}
}
VS.Net也使用了Code Behind技术,当我们使用VS.Net创建了一个Web应用程序,将自动创建了两个文件,ASP.Net网页界面文件WebForm1.aspx和网页中使用的代码文件WebForm1.aspx.cs,请读者仔细察看这两个网页,看是如何使用Code Behind技术。
9.3.7 Web应用目录
一个网站可能包含多种服务,例如,远程登录服务Telnet、文件传送服务FTP、电子邮件服务E-mail、电子公告板系统BBS、万维网WWW(Web)、电子商务、IP电话等等。一般情况下,每种服务可能包含多个网页及各种文件。用VS.Net开发,用解决方案(Solution)和项目(Project)来管理所有的网页和文件。一种服务功能需要的所有网页文件和其它文件组成一个Web项目,Web项目中的所有网页文件和其它文件被保存到网站宿主目录的子目录中,该子目录被称作"Web应用目录"。所有应用项目组成一个解决方案。
如果一个Web项目要拷贝到其它计算机中运行,首先要把Web项目所在的"Web应用目录"拷贝到该计算机宿主目录下。在控制面板中,双击"管理工具"图标,再双击"Internet 服务管理器"图标,出现对话框(图9.1.12A)。右击项目所在的目录名,在快捷菜单中选择属性,出现如下对话框,单击"创建",生成"Web应用目录"后,网站能被浏览器访问。
9.3.8 ASP.Net和HTML兼容
任何一个静态网页只要把其扩展名修改为aspx,在ASP.Net下仍可运行,运行效果和以前相同。见下例,它是一个普通的静态网页。
<html>
<body>
<h1>学生选课系统</h1>
<form method="POST" action="e9_3_7.htm">
姓名:<input type="text" name="T1" size="20"><br>
学号:<input type="password" name="T2" size="20"><br>
课程:<select size="1" name="D1">
<option selected>微积分</option>
<option>代数与几何</option>
<option>模拟电路</option>
<option>机械原理</option>
</select>
<input type="submit" value="提交" name="B1">
</form>
</body>
</html>
将网页以文件名e9_3_7.aspx存入d:/asp文件夹,如果d:/asp文件夹已被设定为Web站点,可以在IE的地址栏输入:http://localhost/ e9_3_7.aspx后,看到这个网页。
ASP.Net的设计目标之一就是尽可能地保持和现有ASP页面的语法及运行库的兼容。希望将现有ASP页面文件的扩展名改为.aspx,这些页面仍可以在ASP.Net中运行。在大多数情况下该目标已经实现了,但一般要对某些基本代码作出修改,因为ASP.Net已不再支持VBScript了,而且VB语言本身也发生了变化。
9.3.9 网页Html标记中使用C#语句
在网页的HTML标记中,可以插入一些C#语句,具体用法见下例:
<% @ Page Language="C#"%>
<html>
<body>
<center>
<% for (int i=0;i<8;i++){ %>
<font size="<%=i%>">这是我的第一个ASP.Net网页</font><br>
<%}%>
</center>
</body>
</html>
这样使用C#语句,使程序变得十分难懂,不是一个好的习惯,不建议使用。
习题
(1) 举出一些静态网页、客户端动态网页和服务器端动态网页的例子。
(2) 创建d:/geng为网站的虚拟目录,请问如何访问geng目录中的网页。
(3) 创建一个链接到新浪网站主页的网页。
(4) 创建一个网页,显示一幅图片,用URL定位图片文件位置。
(5) 配置自己的计算机的TCP/IP设置,请说出配置中的网关的意义,如何获得网关IP。
(6) 如何使自己创建的网站和默认的网站并存,请写出访问自己网站的URL。
(7) 用记事本程序编写一个静态网页,包括两个单选按钮和一个"提交"按钮。
(8) 用FrontPage程序实现上题网页。
(9) 用记事本程序编写一个ASP.Net网页,包括两个按钮,标题分别为"红色"和"黑色",单击按钮,将使标签控件字符颜色变为红色或黑色。
(10) 用VS.Net程序实现上题网页。