网络管理员教程(初级)第六版--第4章 Web网站建设
第四章 Web网站建设
4.1 使用HTML制作网页
4.1.1 HTML文档组成
HTML(hyper text markup language)即超文本标记语言。HTML文档的扩展名为.html或.htm。
HTML文档的基本结构如下:
<html><head><title>文档的标题</title>文档头部
</head><body>文档主体</body></html>
HTML文档以标记开始,以结束,由文档头部和文档主体两部分构成。文档头部由元素标记,文档主体由元素标记。
1.头部
头部主要包含页面的标题、样式定义等内容,它本身不作为内容来显示,但影响网页显示的效果。头部中常用的标记符是标题标记符和Meta标记符。
(1)窗口标题:
(2)脚本语言:
<script language="JavaScript" type="text/JavaScript">alert("html头部演示!");
</script>
(3)样式定义:
<style type="text/css">
<!--
.style1 {color: #336699}
.style2 {font-size: 14px}
.style3 {font-size: 12px;color: #336699;}
以上代码定义了3个样式,分别定义了显示颜色、字体大小等样式。
(4)元数据:提供有关文档内容和主题信息,常用属性有charset、content、http-equiv、name、scheme。
| 属性 | 值 | 描述 |
|---|---|---|
| charset | sharacter_set | 规定HTML文档的字符编码 |
| content | text | 给出了与http-equiv或name属性相关的值 |
| http-equiv | content-security-policy content-type default-style refresh | 设定标头属性的名称,向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容就是各个参数的变量值 |
| name | application-name author description generator keywords viewport | 主要用于描述网页,对应于content(网页内容),以便于搜索引擎机器人查找和分类,其中description(告诉搜索引擎网页的主要内容)和keywords(向搜索引擎说明网页的关键词)最为重要,合理的配置可以让搜索引擎更方便地收录你的网页 |
| scheme | format/URI | 用于定义content属性内部值的格式(或指向包含信息的URI) |
具体应用如下所示:
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="description" content="meta examples">
<meta name="keywords" content="HTML,网络管理员,软件资格考试">
</head>
2.主体
主体是HTML文档中最大的部分,可以是文本、图像、音频、视频、表单及其他交互式内容,它们才是真正要在浏览器中显示并让访问者看到的内容。
主体代码片段:
<body>
<table width="300" border="1" cellpadding="0" cellspacing="0" align="center">
<td height="200">
<table border="0" align="center">
<form name="form" method="post" action="">
<tr><td colspan=2 class="style1">学生登录</td></tr>
<tr><td width="100" class="style2">学号</td>
<td input type="text" name="stu_code"></td></tr>
<tr><td class="style2">密码</td>
<td><input type="password" name="stu_psd"></td></tr>
<tr><td colspan=2 class="style2"><input type="submit" name="button" value="登录" onclick="check();">
<input type="button" name="reset" value="重置" onclick="reset();"></td></tr>
</form>
</table>
</td></table>
</body>
<script language="JavaScript" type="text/JavaScript">
function check(){
if(form.stu_code.value==""){alert("学号不能为空,请输入!");}
return false;
}
</script>
如图所示为上述代码在浏览器中的显示效果,代码中
标签绘制表格,标签实现用户输入,JavaScript函数check()实现数据校验,整体实现了系统登录的功能。4.1.2 HTML常用标签
1. <a> 标签
功能:定义超链接
用法:
<a href="http://www.baidu.com">百度</a>
| 主要属性 | 值 | 描述 |
|---|---|---|
| href | URL | 链接所指向的URL地址 |
| target | _blank _parent _self _top framename | 在新窗口打开链接 在当前框架中打开链接,默认值 在父框架打开链接 在整个窗口中打开链接 在指定框架中打开链接 |
2. <div>标签
功能:定义文档中的分区或者节,把文档分隔成独立的部分
用法:
<div style="color:#00ff00"><p>DIV示例</p>
</div>
| 主要属性 | 值 | 描述 |
|---|---|---|
| id | 文本 | 定义div的唯一标识符,CSS和JavaScript可以使用此id操作指定的div元素 |
| class | CSS样式 | 通过指定或者定义CSS样式,控制div的显示 |
3.<form>标签
功能:定义html表单,通过表单向服务器端传输数据
用法:
<form name="form" method="post" action="loginCheck.asp"><tr><td colspan=2 class="style1">学生登录</td></tr><tr><td width="100" class="">学号</td><td><input type="text" name="stu_code"></td></tr><tr><td class="style2">密码</td><td><input type="password" name="stu_psd"></td></tr><tr><td colspan=2 class="style2"><input type="submit" name="button" value="登录" onclick=""> <input type="" name="reset" value="重置" onclick="reset();"</td></tr>
</form>
| 主要属性 | 值 | 描述 |
|---|---|---|
| action | URL | 定义了form表单提交到哪里 |
| method | post get | post表示通过form表单向服务器端传递数据 get表示通过URL参数的形式向服务器端传递数据 |
| name | form_name | 定义表单的名称 |
4.<input>标签
功能:接收用户输入,输入可以是文本、带*号的密码、复选框、单选按钮、按钮等
| 主要属性 | 值 | 描述 |
|---|---|---|
| checked | checked | input标签首次被加载时被选中,常用于复选框和单选按钮需要被默认选中时 |
| disabled | disabled | input标签首次被加载时处于禁用状态,即禁止用户操作 |
| maxlength | number | 规定input标签输入字段的最大字符长度<p>手机<input type="text" name="mobile" maxlength="11"></p>表示该文本输入框最大输入11位长度的字符 |
| name | 文本 | name属性规定input元素的名称,用于对提交到服务器后的表单数据进行标识,或者在客户端通过JavaScript引用表单数据 |
| readonly | readonly | 规定input标签为只读,不可被修改 |
| value | value | 定义input标签的值 |
| type | button | 定义可被单击的按钮 示例: <input type="button" value="校验" onclick="check()"/>上述代码定义了一个显示“校验”字样的按钮,单击按钮后,会执行JavaScript函数check() |
| type | checkbox | 定义复选框 示例: 我喜欢的体育运动: <input type="checkbox" name="Sports" value="swimming">游泳<input type="checkbox" name="Sports" value="badminton">羽毛球<input type="checkbox" name="Sports" value="basketball">篮球上述代码定义了一组包含3个选项的复选框 |
| type | radio | 定义单选按钮 示例: <input type="radio" name="s_status" value="1">已派单已办结 上述代码定义了一组包含2个单选项的单选按钮,一组单选按钮的name属性必须相同,否则会变成两组相互独立的单选按钮 |
| type | text | 定义单行输入的字段,用户可在其中输入文本 示例: 学号: <input type="text" name="stu_code">上述代码定义了一个文本输入框 |
| type | password | 定义密码字段,该字段中的字符被掩码,以*号显示 |
| type | submit | 定义提交按钮,单击提交按钮会把表单数据发送到服务器 |
| type | reset | 定义重置按钮,单击重置按钮会清除表单中的所有数据 |
| type | file | 定义文件上传功能,包括输入字段和“浏览”按钮 |
| type | hidden | 定义隐藏的输入字段 |
| type | image | 定义图像形式的提交按钮 |
5.<select>标签
功能:定义下拉列表
用法:
<select name="s_name" multiple="multiple" size="2">
<option value="张工">张工</option>
<option value="李工">李工</option>
<option value="王工">王工</option>
</select>
上述代码定义了有3个选项的下拉列表,其中可见选项为2行,其他选择可以通过拖动滚动条查看,该下拉列表可以选择多个选项。
| 主要属性 | 值 | 描述 |
|---|---|---|
| name | name | 定义下拉列表的名称 |
| multiple | multiple | 定义下拉列表可以选择多个选项,如不定义该属性,则默认只能选择一个选项,在Windows系统中按Ctrl+鼠标左键可以选择多个选项 |
| size | number | 定义下拉列表可见选项数 |
| disable | disable | 禁止对该下拉列表操作 |
6.<option>标签
功能:定义下拉列表的一个选项
用法:
<select name="s_name" multiple="multiple" size="2"><option value="张工" disable>张工</option><option value="李工" selected>李工</option><option value="王工">王工</option>
</select>
上述代码定义了有3个选项的下拉列表,其中选项张工不可被选中,默认选项李工被选中
| 主要属性 | 值 | 描述 |
|---|---|---|
| disabled | disabled | 该选项首次加载时被禁用 |
| selected | selected | 该选项首次加载时被选中 |
| value | text | 定义该选项被选中后,select标签向服务器传递的数据 |
7. <table>标签
功能:定义HTML表格
用法:
<table border="1" width="300" cellpading="0" cellspacing="0"><tr><td width="120">姓名</td><td width="90" align=center>性别</td><td width="90">年龄</td></tr><tr><td>张三</td> <td align=center>男</td> <td>25</td></tr><tr><td>李四</td> <td align=center>女</td> <td>23</td></tr>
</table>
在浏览器显示的效果:
| 姓名 | 性别 | 年龄 |
|---|---|---|
| 张三 | 男 | 25 |
| 李四 | 女 | 23 |
| 主要属性 | 描述 |
|---|---|
| border | 定义表格边框的宽度 |
| width | 定义表格的宽度 |
| cellpadding | 定义单元格边框与其内容之间的空白距离 |
| cellspacing | 定义单元格与单元格之间的空白距离 |
8.<tr>标签
功能:定义HTML表格中的行
| 主要属性 | 值 | 描述 |
|---|---|---|
| align | right left center justify char | 定义表格行内容的水平对齐方式 |
| valign | top middle bottom baseline | 定义表格行内容的垂直对齐方式 |
9.<td>标签
功能:定义HTML表格中的单元格
| 主要属性 | 描述 |
|---|---|
| align | 水平对齐方式 |
| valign | 垂直对齐方式 |
| colspan | 跨列居中 |
| rowspan | 跨行居中 |
| width | 宽度 |
| height | 高度 |
10.<textarea>标签
功能:定义多行文本输入
用法:
<textarea rows="5" cols="40">
html 多行文本输入框,可拖动改变大小
</textarea>
上述代码定义了初始可见高度为5行、宽度为40的文本框。
| 主要属性 | 描述 |
|---|---|
| cols | 宽度 |
| rows | 行高 |
| disabled | 禁用文本框 |
| readonly | 设置该文本框不可编辑 |
| name | 定义文本框的名称 |
4.1.3 HTML常用方法
HTML最常用的是GET和POST方法。
1.GET方法
通过URL向服务器端发送数据。示例:
http://www.a.com/test/a.asp?name=test&passwd=123456
上述URL将向服务器发送参数name和passwd的值test和123456。
2.POST方法
由form表单接收用户输入数据,通过POST请求的HTTP信息主体向服务器发送数据。示例:
<form name="form" method="post" action="b.asp"><tr><td>姓名</td> <td><input type="text" name="name"></td></tr><tr><td>密码</td> <td><input type="password" name="passwd"></td></tr><tr><td colspan=2><input type="submit" name="button" value="登录" onclick=""></td></tr>
</form>
当用户在姓名处输入“test”、在密码处输入“123456”,单击“登录”按钮后,用户输入的数据通过POST请求的HTTP信息主体向服务器发送,而不是通过URL发送。
4.1.4 HTML常用事件
HTML通过众多的事件对象来捕获用户动作或者行为,例如用户鼠标的单击、双击、滚轮操作,捕获到这些动作或行为后,就可以在动作或行为发生时执行指定的脚本或程序,实现一定的功能。常用事件有窗口事件、form表单事件、鼠标事件、键盘事件等。
1.窗口事件
常用窗口事件:常用Window事件
| 事件 | 事件描述 |
|---|---|
| onbeforeprint | 在文档打印前触发 |
| onafterprint | 在文档打印之后触发 |
| onload | 在页面结束加载之后触发 |
| onresize | 在浏览器窗口被调整大小时触发 |
| onunload | 用户离开页面(通过打击链接、提交表单或关闭浏览器窗口等)时触发 |
2.form表单事件
常用form表单事件:
| 事件 | 事件描述 |
|---|---|
| onblur | 当元素失去焦点时触发 |
| onchange | 在元素值被改变时触发 |
| onfocus | 当元素获得焦点时触发 |
| onselect | 当元素中文本被选中后触发 |
| onsubmit | 在提交表单时触发 |
3.鼠标事件
| 事件 | 事件描述 |
|---|---|
| onclick | 当鼠标单击时触发 |
| ondblclick | 当鼠标双击时触发 |
| onmousedown | 当按下鼠标按钮时触发 |
| onmousemove | 当鼠标指针移动到元素上时触发,只在元素上移动但是没有移出元素 |
| onmouseout | 当鼠标指针移出时触发 |
| onmouseover | 当鼠标指针移动到元素上时触发,在元素上有移入和移出 |
| onmouseup | 当在元素上释放鼠标按钮时触发 |
4.键盘事件
| 事件 | 事件描述 |
|---|---|
| onkeydown | 用户按下键盘上的某个按钮均会触发该事件,如果一直按住按键不松手,则会一直触发该事件。 |
| onkeypress | 用户按下键盘上的某个按键时会触发该事件,仅支持字母键和数字,不支持功能键和箭头键。 |
| onkeyup | 用户按下键盘的某个按键并松手后会触发该事件,如果一直按住按键不松手,则该事件不会被触发。 |
4.2 XML简介
XML(eXtensible Markup Language,可扩展标记语言)是用于标记电子文件的机构化语言。与HTML相比,XML是一种真正的数据描述语音,它没有固定的标记符号,允许用户自己定义一套适合于应用的文档元素类型,因而具有很强的灵活性。XML包含了大量自解释型的标记文本,每个标识文本又由若干规则组成,这些规则可用于标识,能够使不同的应用系统理解相同的含义。正是由于这些标识的存在,XML能够有效地表达网络上的各种知识,也为网上信息交换提供了载体。
1.XML的特点
(1)XML 是元标记语言。HTML定义了一套固定的标记,每一种标记都有其特定的含义。XML与之不同,它是一种元标记语言,用户可以自定义所需的标记。
(2)XML 描述的是结构和语义。XML 标记描述的是文档的结构和意义,而不是显示页面元素的格式。简单地说就是文档本身只说明文档包括什么标记,而不说明文档看起来是什么样的。
(3)XML 文档的显示使用特有的技术来支持。例如,通过使用样式表为文档增加格式化信息。
2.XML 的基本语法
一个格式正规的XML 文档由3个部分组成,分别为可选的序言(prolog)、文档的主体(body)和可选的尾声(epilog)。
一个XML 文件通常以一个XML 声明开始,后面通过XML 元素来组织XML 数据。
XML 元素包括标记和字符数据。标记用尖括号括起来,以便与数据区分开,尖括号中可以包含一些属性。
为了组织数据更加方便、清晰,还可以在字符数据中引入CDATA数据块,并可以在文件中引入注释。
由于有时需要给XML 处理程序提供一些指示信息,所以 XML 文件中可以包含处理指示。
通常将一个符合 XML 文档语法规范的 XML 文档称为“格式正规”的XML 文档。
<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet href="style.xsl" type="test/xsl"?>
<!-- 以上是 XML 文档的序言部分 -->
<COLLEGE><TITLE>计算机学院</TITLE><LEADER>王志东</LEADER><STU_NUMBER UNIT="人">3</STU_NUMBER><STUDENT><NAME>李文</NAME><AGE>21</AGE><CLASS>9902</CLASS></STUDENT><STUDENT><NAME>张雨</NAME><AGE>21</AGE><CLASS>9902</CLASS></STUDENT><STUDENT><NAME>刘娟</NAME><AGE>21</AGE><CLASS>9902</CLASS></STUDENT>
</COLLEGE>
<!-- 以上是文档的主体部分,以下是文档的尾声部分 -->
可以看出,XML 文档的序言部分从文档的第一行开始,它可以包含 XML 声明、文档类型声明、处理指定等;文档的主体则是文档根元素所包含的那一部分;XML 尾声部分在文档的末尾,它可以包含注释、处理指令或空白。
组成文档的各种要素如下所述:
1)声明
一个 XML 文件通常以一个 XML 声明作为开始,XML声明在文件中是可选内容,可加可不加,但W3C推荐加入这一行声明。因此,作为一个良好的习惯,通常把 XML 声明作为XML 文件的第一行。
XML 声明的作用就是告诉 XML 处理程序“下面这个文件是按照 XML 文件的标准对数据进行置标的”。
最简单的 XML 声明
<?xml version="1.0"?>
可以看到, XML 声明由“<?”开始,由 “?>” 结束。
XML 声明中要求必须指定version 的属性值。同时,声明中还有两个可选属性 standalone 和 encoding。因此,一个完整的 XML 声明如下:
<?xml version="1.0" encoding="BG2312" standalone="no"?>
(1)version属性:指定所采用的XML 的版本号,而且,必须在属性列表中排在第一位。
(2)encoding属性:编码用到的字符集。常见的编码GB2312(简体中文码)、BIG5(繁体中文码)、UTF-8(西欧字符)。
(3)standalone属性:表明该 XML 文件是否需要从其他外部资源获取有关标记定义的规范说明,并据此检查当前 XML 文档的有效性。默认值为 no,表示可能有也可能没有这样一个文件。如果该属性置为yes,说明没有另外一个配套的文件来进行置标说明。
2)元素
写好一个 XML 声明后,一个新的 XML 文档就宣告诞生了。文档的主体由一个或多个元素组成,元素是 XML 文件内容的基本单元。
从语法上将,元素用标记进行分隔,一个元素包含一个起始标记和一个结束标记。
元素可以包含其他元素、字符数据、实体引用、处理指令、注释和CDATA部分,这些统称为元素内容。
位于文档最顶层的一个元素包含了文档中其他所有元素,称为根元素。
元素中还可以再嵌套别的元素。
元素之间应正确嵌套看,不能互相交叉。
所有元素构成一个简单的层次树,元素和元素之间唯一的直接关系就是父子关系。
XML 对于标记的语法规定比HTML 要严格的多:
(1)标记命名要合法:XML 规范中的标识符号命名规则为标记必须以字母、下划线或冒号开头,后跟有效标记命令符号,中间不能有空格,而且任何标记不能以 “xml”起始。另外最好不要在标记的开头使用冒号,尽管它是合法的,但可能会带来混淆。
(2)区分大小写:在标记中必须注意区分大小写。
(3)必须有正确的结束标记。XML要求标记必须配对出现。
(4)标记间要正确嵌套。标记不能相互交叉。
3)属性
标记中可以包含任意多个属性。在标记中,属性以“名称/取值”对的形式出现,属性名不能重复,名称与取值之间用等号“=”分隔,且取值用引号引起来。属性不能包含子属性;若元素的开始标记中包含了过多属性,或标记中的元素名称、属性名称、属性取值过长,造成整个开始标记过长而降低了程序的可读性,则可以考虑使用子元素替代属性。示例:
<commodity type="服装" color="黄色">
4)注释
有时候,用户希望在 XML 文件中加入一些用作注释的字符数据,并且希望 XML 解释器不对它们进行任何处理,这种类型的文本称作注释文本。
(1)在注释文本中不能出现字符“-”或字符串“–”,XML 解析器可能把它们和注释结尾标志“–>”相混淆。
(2)不要把注释放在标记之中。
(3)注释不能被嵌套。
5)内嵌的替代符
字符<、>、&、‘和“是XML的保留字符, XML 利用它们定义和说明元素、标记或属性等。
| 替代符 | 含义 | 例子 | 解析结果 |
|---|---|---|---|
< | < | 3< 5 | 3<5 |
> | > | 5> 3 | 5>3 |
& | & | A& B | A&B |
' | ’ | Joe' s | Joe’s |
" | ‘’ | " yes" | “yes” |
6)处理指示
处理指示用来给处理 XML 文件的应用程序提供信息。XML 解析器可能并不处理它,而是把这些信息原封不动地传给 XML 应用程序来解释这个指示,并遵照它所提供的信息进行处理。
7)CDATA
有时用户希望 XML 解析器能够把正字符数据中引入的标记当做普通数据而非真正的标记来看到,这时,CDATA标记可以帮用户实现这一想法。
在标记CDATA下,所有标记、实体引用都被忽略,而被XML处理程序一视同仁地当做字符数据看待。CDATA的基本语法如下:
<![CDATA[文本内容]]>
在CDATA部分中,唯一能够被识别的字符串就是它的结束分隔符“]]>”。
4.3 网页制作工具
在大多数情况下,在创建站点时并不需要开发人员使用HTML标记进行设计,因为在网页制作工作软件中,可以通过“所见即所得”的技术对HTML进行处理,开发人员只需简单地进行界面操作,就能完成网页制作。
(1)Dreamweaver 是一款“所见即所得”的主页编辑工具,具有强大的功能和简洁的界面,几乎所有简单对象的属性都可以在属性面板上进行修改。
(2)Adobe Photoshop 是最优秀的数字图像处理软件之一,它可以任意设计、处理、润饰各种图像,是网页美术设计理想的数字图像处理软件。
4.3.1 Dreamweaver简介
1.Dreamweaver 概述
Dreamweaver 是 Macromedia 公司退出的一款“所见即所得”的主页编辑工具,以简洁的界面和强大的功能著称。
2.Dreamweaver的特点
(1)提供了可视化网页开发,同时不会降低HTML 原码的控制。
(2)支持跨浏览器的 Dynamic HTML 、阶层式样式窗体、绝对坐标定位以及JavaScript 的动画。
(3)提供了行为和时间线两种控件来进行动画处理和产生交互式响应。
4.3.2 Photoshop简介
1.Photoshop概述
Photoshop是最优秀的数字图像处理软件之一,它可以任意设计、处理、润饰各种图像,是美术设计、摄影和印刷专业人员理想的数字图像处理工具软件。
2.Photoshop的特点
(1)支持多种图像格式。
(2)支持多种色彩模式。
(3)提供了强大的选取图像范围的功能。
(4)可以对图像进行各种编辑。
(5)可以对图像进行色调和色彩的调整。
(6)提供了绘画功能。
(7)用户可以建立普通图层、背景层、文本层、调节层等多种图层,并且方便地对各个图层进行编辑。
(8)提供了将近100中滤镜,每种滤镜的效果各不相同。
4.4 动态网页的制作
早期的 web 主要是静态页面的浏览,由 web 服务器使用http协议将HTML文档从web 服务器传送到用户的web浏览器上。它适合组织各种静态的文档类型元素间的链接。
web技术发展的第二阶段是生成动态页面。
服务器脚本环境有很多,常见的有 ASP(active server pages)、JSP(Java server pages)、PHP等,其中ASP最为简单易用。
4.4.1 ASP简介
1)什么是ASP
ASP 是Microsoft 公司开发的服务器端脚本环境,使用IIS部署,可用来创建动态交互式网页并建立web应用程序。ASP使用了Microsoft 的activeX技术,采用封装程序调用对象的技术,以简化编程和加强程序间合作,运行在服务器端,支持VBScript和JavaScript脚本。
2)ASP的特点
(1)使用VBscript、JavaScript等简单易懂的脚本语言,结合 HTML 代码,即可快速完成网站的应用程序。
(2)使用普通的文本编辑器,如记事本,即可进行编辑设计。
(3)无须编译,可在服务器端直接执行。
(4)与浏览器无关,用户端只要使用可执行 HTML 码的浏览器,即可浏览ASP所设计的网页内容。
(5)ASP能与任何activeX scripting 语言兼容。
(6)ASP的源程序不会被传到客户浏览器,提高了程序的安全性。
(7)可使用服务器端的脚本来产生客户端的脚本。
(8)面向对象。
(9)具有无限可扩充性。
3)ASP编程环境
ASP程序无须编译,当执行ASP程序时,脚本程序会将一整套命令发送给脚本解释器,由脚本解释器进行翻译,并将其转换成服务器所能执行的命令。
ASP程序是以扩展名为.asp的纯文本形式存在于web服务器上的,所以可以用任何文本编辑器打开它,ASP程序中可以包含纯文本、HTML标记以及脚本命令。
只需将.asp程序放在web服务器的虚拟目录下,即可通过www的方式访问ASP程序。
4.4.2 ASP内嵌对象
ASP提供了可在脚本中使用的内嵌对象。这些对象使用户更容易收集那些通过浏览器请求发送的信息,响应浏览器以及存储用户信息,从而使对象开发摆脱了很多繁琐的工作。
1.Request对象
Request对象为脚本提供了当客户端请求一个页面或者传递一个窗体时,客户端提供的全部信息,包括能指明浏览器和用户的http变量、在这个域名下存放在浏览器中的cookie、任何作为查询字符串而附于URL后面的字符串或页面的段中的HTML控件的值。
Request对象提供了5个集合,可以用来访问客户端对web服务器请求的各类信息。
| 集合名称 | 说明 |
|---|---|
| client certificate | 当客户端访问一个页面或其他资源时,用来向服务器表明身份的客户证书的所有字段或条目的数值集合,每个成员均只读。 |
| cookies | 根据用户的请求,用户系统发出的所有cookie的值的集合,这些cookie仅对相应的域有效,每个成员均为只读 |
| form | method的属性值为post时,所有作为请求提交的段中的HTML控件单元的值的集合,每个成员均为只读 |
| querystring | 依附于用户请求的URL后面的名称/数值对或者作为请求提交的且method属性值为get的,或中所有HTML控件单元的值,每个成语均为只读 |
| servervariables | 随同客户端请求发出的http报头值,以及web服务器的几种环境变量的值的集合,每个成员均为只读 |
Request对象唯一的属性及说明。
| 属性 | 说明 |
|---|---|
| total bytes | 只读,返回由客户端发出的请求的整个字节数量 |
Request对象唯一的方法及说明。
| 方法 | 说明 |
|---|---|
| binary read(count) | 当数据作为post请求的一部分发往服务器时,从客户请求中获得count字节的数据,返回一个variant数组。如果ASP代码已经引用了request form集合,这个方法就不能用。同样,如果用了binary read方法,就不能访问request form集合 |
2.Response对象
Response对象用来访问服务器端所创建的并发回到客户端的响应信息,为脚本提供http变量,指明服务器、服务器的功能、关于发回浏览器的内容的信息以及任何将为这个域而存放在浏览器里的新的cookie。
Response对象只有一个集合,该集合设置希望放置的客户系统上的cookie的值,它直接等同于Request.cookie集合。
Response对象提供了一系列的属性,可以读取和修改,使响应能够适应请求。
Response对象提供了一系列的方法,允许直接处理为返给客户端而创建的页面内容。
3.Application对象
Application对象是为响应一个ASP页的首次请求而载入 ASP DLL 时创建的,它提供了存储空间来存放变量和对象的引用,可用于所有页面,任何访问者都可以打开它们。
Application对象提供了两个集合,可以用来访问存储于全局应用程序空间中的变量和对象。
Application对象的方法允许删除全局应用程序空间中的值,控制在该空间内对变量的并发访问。
Application对象提供了在它启动和结束时触发的两个事件。
4.Session对象
独特的Session对象是在每一位访问者从web站点或web应用程序中首次请求一个ASP页时创建的,它将保留到默认的期限结束。它与application对象一样,提供了一个空间用来存放变量和对象的引用,但只能供目前的访问者在会话的生命期内打开的页面使用。
Session对象提供了两个集合,可以用来访问存储于用户的局部会话空间中的变量和对象。
Session对象提供了4个属性。
Session对象允许从用户级的会话空间删除指定值,并根据需要终止会话。
5.Server对象
Server对象提供了一系列方法和属性,在使用ASP编写脚本时是非常有用的。最常用的是Server.CreateObject方法。
Server对象的唯一属性用于访问一个正在执行的ASP网页的脚步超时值。
| 属性 | 说明 |
|---|---|
| scripttimeout | 整型,默认值为90,设置或返回页面的脚步在服务器退出执行和报告一个错误之前可以执行的时间(秒数) |
Server对象的方法用于格式化数据、管理网页执行和创建其他对象实例。
| 方法 | 说明 |
|---|---|
| CreateObject(“identifier”) | 创建由identifier标识的对象的一个实例,返回可以在代码中使用的一个引用,可以用于一个虚拟应用程序创建会话层或应用程序层范围内对象。 |
| Execute(“URL”) | 停止当前页面的执行,把控制转到URL中指定的网页。 |
| GetLastError | 返回ASP ASPError对象的一个引用,这个对象包含该页面在ASP处理过程中发生的最近一次错误的详细数据。 |
| HTML Encode(“string”) | 返回一个字符串,该串是输入值string的副本,但去掉了所有非法的HTML字符。 |
| MapPath(“URL”) | 返回在URL中指定的文件或资源的完整物理路径和文件名。 |
| Transfer(“URL”) | 停止当前页面的执行,把控制转到URL中指定的页面。与Execute方法不同,当新页面执行完成时,不回到原来的页面,而是结束执行过程。 |
| URL Encode(“string”) | 返回一个字符串,该串是输入值string的副本,但是在URL中无效的所有字符。 |
4.4.3 ASP语法
ASP应用举例:
<html>
<%
Dim test
test="holle word"
%>
<body>
<table>
<td>
<%=text%>
</td>
</table>
</body>
</html>
ASP不同于客户端脚本语言,它有自己特定的语法,所有ASP命令都必须包含在<% 和%>之内,ASP通过包含在<% 和%>中的表达式将执行结果输出到客户端浏览器。
1.声明变量
使用Dim关键字声明变量
格式:Dim 变量名
示例:
<html>
<body>
<%
dim name
name="张三"
%>
姓名:<%=name%>
</body>
</html>
浏览器显示效果为:
姓名:张三
2.条件语句
用来判断条件是true或false,并根据判断结果来执行指定的语句,通常条件是比较运算符对值或变量进行比较。
格式:
if <条件> then
条件逻辑表达式为true时执行的语句
else
条件逻辑表达式为false时执行的语句
end if
示例:
a = 10
if a>8 then
response.write"条件成立,变量a的值大于8"
else
response.write"条件不成立,变量a的值不大于8"
end if
3.for循环语句
根据指定次数进行循环。
格式:
for 循环变量 = 初始值 to 结束值 step 步长
循环体
next
示例:
for i = 1 to 4 step 1
response.write "i="&i"<br>"
next
浏览器显示结果为:
i = 1i = 2i = 3i = 4
4.do while循环语句
每次循环对条件进行判断,如果条件成立,则执行循环体,当条件不成立时退出循环。
格式:
do while <条件>
循环体
loop
示例:
i = 1
do while i<5
response.write "i="&i"<br>"
i = i+1
loop
浏览器显示结果为:
i = 1
i = 2
i = 3
i = 4
5.ASP表单应用示例
<form method="post" action="test.asp"
<p>姓名:<input type="text" name="name"/></p>
<p>班级:<input type="text" name="classname"/></p>
<input type="submit" value="submit"/>
</form>
如果用户在上述表单中依次输入“张三”和“二年级三班”,然后单击提交到test.asp,在test.asp编写如下代码:
<%
response.write "你的姓名:"&request.form("name")&",班级:"&request.form("classname")"
%>
在浏览器页面显示结果如下:
你的姓名:张三,班级:二年级三班
request.form命令用于获取使用“post”方法的表单中的值。
4.4.4 ASP连接数据库
微软公司的 ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它是编程语言和统一数据访问方式OLE DB的一个中间层,允许开发人员编写访问数据的代码和到数据库的连接,而不用关系数据库的实现。
1.基本的 ADO 编程模型
ADO提供了执行以下操作的方式:
连接到数据源;指定访问数据源的命令,同时可带变量参数,或优化执行;执行命令;使用缓存行的更改内容来更新数据源;提供常规方法检测错误。
ADO 有很强的灵活性,只需执行部分模块就能做一些有用的工作。进行ADO连接的主要模块包括如下几种。
1)连接:连接是交换数据所必需的环境,通过连接可从应用程序访问数据源。对象模型使用connection对象使连接概念得以具体化。
2)命令:通过已建立的连接发出的命令可以某种方式来操作数据源。对象模型用command对象来体现命令概念。
3)参数:通常命令需要的变量部分(即参数)可以在命令发布之前进行更改。对象模型用parameter对象来体现参数概念。
4)记录集:如果命令是在表中按信息行返回数据的查询,则这些行将会存储在本地。对象模型将该存储体现为recordset对象。
5)字段:一个记录集行包含一个或多个字段。对象模型用field对象体现字段。
6)错误:错误随时可在应用程序中发生,通常是由于无法建立连接、无法执行命令或无法对某些状态的意向进行操作。对象模型用error对象体现错误。
7)属性:每个ADO对象都有一组唯一的属性来描述或控制对象的行为。属性有内置和动态两种类型。对象模型用property对象体现属性。
8)集合:ADO提供的集合是一种可方便地包含其他特殊类型对象的对象类型。
ADO 提供了4种类型的集合:
connection对象:具有error集合,包含为响应与数据源有关的单一错误而创建的所有error对象。
command对象:具有parameters集合,包含应用于command对象的所有parameter对象。
recordset对象:具有fields集合,包含所有定义recordset对象列的field对象。
connection、command、recordset和field对象具有properites集合,它包含所有属于各个包含对象的property对象。
9)事件:事件是对将要发生或已经发生的某些操作的通知。一般情况下,可用事件高效地编写包含几个异步任务的应用程序。
2.ADO 操作步骤
ADO 的目标是访问、编辑和更新数据源,而编程模型体现了为完成该目标所必需的系列动作的顺序。ADO 提供了类和对象,以完成如下活动:
连接到数据源(connection),并可选择开始一个事务;
可选择创建对象来表示SQL命令(command);
可选择在SQL命令中指定列、表和值作为变量参数(parameter);
执行命令(command、connection或recordset);
如果命令执行返回,则将行存储在缓存中(recordset);
可选择创建缓存视图,以便能对数据进行排序、筛选和定位(recordset);
通过添加、删除或更改行和列编辑数据(recordset);
在适当的情况下,使用缓存中的更改内容来更新数据源(recordset);
如果使用了事务,则可以接受或拒绝在完成事务期间所做的更高,结束事务(connection)。
1)打开连接:ADO打开连接的主要方法是Connection.Open方法,另外也可在同一操作中调用快捷方法Recordset.Open打开连接,并在该连接上发出命令。
connection.open ConectionString, UserID,Password,OpenOptions
recordset.open Source,ActiveConnection,CursorType,LockType,Options
2)创建命令
查询命令要求数据源返回含有所要求信息行的recordset对象,命令通常使用SQL编写。
3)执行命令
返回Recordset 的方法有Connection.Execute、Command.Execute和Recordset.Open。
4)操作数据
大量recordset对象方法和属性可用于对recordset数据进行检查、定位以及操作。
5)更新数据
对于添加、删除和修改数据行,ADO有两个基本概念。第一个概念是不立即更改recordset,而是将更改写入内部复制缓存区。第二个概念是只要声明行的工作已经完成,就将更改立即传播到数据源。
6)结束更新
假设批更新结束时发生错误,如何解决将取决于错误的性质和严重性以及应用程序的逻辑关系。
3.简单SQL语句
1)select查询语句
格式:
select 字段名
from 表名
where 条件
order by 排序字段
group by 分组字段
示例:查询数学成绩大于60分的,显示姓名和成绩,按照数学成绩从高到低排列。
select name,maths from test where maths>60 order by maths desc
2)insert 插入语句
格式:
insert into 表名 (字段1,…,字段n) values (值1,…,值n)
示例:将姓名为张三、数学成绩为85分的一行数据插入表test中。
insert into test (name,maths) values ("张三",85)
3)update 更新语句
格式:
update 表名 set 字段1=值1,字段2=值2 where 条件
示例:将姓名为张三的数学成绩修改为90。
update test set maths=90 where name="张三"
4)delete 删除语句
格式:
delete from 表名 where 条件
示例:删除表test中姓名为张三的所有数据行。
delete from test where name="张三"
4.ADO示例代码
Public Sub main()
Dim conn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordsetconn.Open "DSN=pubs;uid=sa;pwd=;database=pubs"Set cmd.ActiveConnection = conn
cmd.Commandtext = "SELECT * from authors"re.CursorLocation = adUseClient
re.Open cmd, ,adOpenStatic,adLockBatchOptimisticrs("au_1name").Properties("Optimize") = True
rs.Sort = "au_1name"
rs.Filter = "pjone LIKE '415 5*'"
rs.MoveFirst
Do Whiel Not rs.EOF
Debug.Print "name:" & rs("au_fname") & " "; rs("au_1name") & _ "Phone:" ;rs("phone") & vbCr
rs("phone:") = "777" & Mid(rs("phone"),5,11)
rs.MoveNext
Loopconn.BeginTranson Error GoTo ConflictHandler
rs.UpdateBatch
on Error GoTo 0
conn.CommitTrans
Exit SubConfilictHandler:
rs.Filter = adFilterConflictingRecords
rs.MoveFirst
Do While Not rs.EOF
Debug.Print "Conflict:name:" & rs("au_fname");" " & rs("au_name")
rs.MoveNext
Loop
conn.Rollback
Resume Next
End Sub
4.5 使用HTML与ASP编程实例
4.5.1 实例
某学生成绩信息管理系统可以实现考试成绩绿如、保存、根据学号查询指定学生的成绩等功能。所有数据均存储在Access数据库中,数据库文件名为stuInfoSystem.mdb 。
部分文件描述:
| 文件名 | 功能描述 |
|---|---|
| conn.asp | 数据库连接定义 |
| stuExamInsert.asp | 学生考试成绩录入 |
| stuExamSave.asp | 学生考试成绩保存 |
| stuExamView.asp | 学生考试成绩查询显示 |
学生成绩表数据结构(表名:stuExam):
| 字段名 | 数据类型 | 说明 |
|---|---|---|
| stuExamId | 自动编号 | 主键 |
| studentId | 文本 | 学号 |
| classId | 文本 | 班级 |
| chinese | 数字 | 语文成绩 |
| maths | 数字 | 数学成绩 |
| english | 数字 | 英语成绩 |
1.conn.asp 代码片段
conn.asp 文件用于实现数据库连接。
dim rs,conn '声明rs 和 conn 两个变量'
set rs=Server.CreateObject("ADODB.Recordset") '创建ADO recordset结果集对象'
set conn=server.createobject("adodb.connection") '创建数据库连接对象conn'
DBPath = Server.MapPath("stuInfoSystem.mdb") '设置数据库文件路径和文件名'
conn.Open"driver={Microsoft Access Driver(*.mdb)};dbp=" &DBPath '打开数据库的连接'
2.stuExamInset.asp 代码片段
<html>
<head>
<title>学生成绩信息管理系统</title>
<link rel="stylesheet" href="css/style.css"/>
</head>
<body><form name="form" meth="post" action="stuExamSave.asp"><div class="title_top"><div class="top_cont"><p>学生成绩录入</p></div></div><div class="box"><div class="text"><div><span>学号</span><input type="text" name="studentId"/></div><div><span>语文</span><input type="text" name="chinese"/></div><div><span>数学</span><input type="text" name="maths"/></div><div><span>英语</span><input type="text" name="english"/></div><div class="c"><input type="submit" id="button" name="button" value="提交"/></div></div></div></form></body></html>
在浏览器执行后的显示结果:

3.stuExanSave.asp 代码片段
<!--#include file="conn.asp"--> '引入包含数据库连接定义的外部文件'
<%
studentId=request.form("studentId") "获取用户在form表单name="sutdentId"的input输入框输入的值"
chinese=request.form("chinese")
maths=request.form("maths")
english=request.form("english")
classId="" "根据学号计算班级略去"
sql="inset into sutExam (studentId,chinese,maths,english,classId) values ('"&studentId&"',"&chinese&","&maths&","&english&",'"&classId&"')" '组装数据插入的SQL语句'
conn.execute(sql) '执行数据插入的SQL语句'
%>
4.stuExanView.asp 代码片段
<!--#include file="conn.asp"-->
.....
<%
classId=request.form("classId")
sql="select classId,round(avg(chinese),2) as avg_chinese,round(avg(maths),2) as avg_maths,round(avg(english),2) as avg_english from stuExam where classId='"&classId&"' group by classId"
rs.open sql,conn '打开结果集、数据库连接,执行SQL语句并将查询结果返回给rs结果集对象'
chinese=0
maths=0
english=0
total=0
If Not rs.eof then '进行判断,如果游标没有处于结果集的最后一条记录,执行程序'
chinese=rs("avg_chinese") '从结果集中获取数据'
maths=rs("avg_maths")
english=rs("avg_english")
End If
total=chinese+maths+english
rs.close '关闭rs结果集'
conn.close '关闭数据库连接'
%>
......
<table width="80%" border="1" align="center" cellpadding="0" cellspacing="0">
<tr><td colspan="5" height="30" align="center">查询结果</td>
</tr>
<tr><td width="20%" height="30" align="center">班级</td><td width="20%" height="30" align="center">语文平均分</td><td width="20%" height="30" align="center">数学平均分</td><td width="20%" height="30" align="center">英语平均分</td><td width="20%" height="30" align="center">总平均分</td>
</tr>
<tr><td width="20%" height="30" align="center"><%=classId%></td><td width="20%" height="30" align="center"><%=avg_chinese%></td><td width="20%" height="30" align="center"><%=avg_maths%></td><td width="20%" height="30" align="center"><%=avg_english%></td><td width="20%" height="30" align="center"><%=avg_total%></td>
</tr>
</table>
......
