Web程序设计计算机科学经典教材_第1页
Web程序设计计算机科学经典教材_第2页
Web程序设计计算机科学经典教材_第3页
Web程序设计计算机科学经典教材_第4页
Web程序设计计算机科学经典教材_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Web程序设计计算机科学经典教材目录第1章基础知识 11.1Internet简介 21.1.1起源 21.1.2Internet的含义 21.1.3IP地址 31.1.4域名 31.2万维网 51.2.1起源 51.2.2Web还是Internet 51.3Web浏览器 61.4Web服务器 71.4.1Web服务器操作 71.4.2服务器的一般特性 81.4.3Apache 91.4.4IIS 91.5统一资源定位符 91.5.1URL的格式 101.5.2URL路径 101.6MIME 111.6.1类型说明 111.6.2实验性文档类型 121.7超文本传输协议 121.7.1请求阶段 131.7.2响应阶段 141.8安全性 151.9Web编程工具箱 171.9.1XHTML概述 171.9.2创建XHTML文档的工具 181.9.3插件和过滤器 191.9.4XML概述 191.9.5JavaScript概述 20Web程序设计计算机科学经典教材全文共41页,当前为第1页。1.9.6Flash概述 20Web程序设计计算机科学经典教材全文共41页,当前为第1页。1.9.7PHP概述 211.9.8Ajax概述 211.9.9Servlet、JavaServerPages和

JavaServerFaces概述 221.9.10ASP.NET概述 221.9.11Ruby概述 231.9.12Rails概述 231.10本章小结 241.11复习题 251.12练习题 26第2章XHTML简介 292.1HTML和XHTML的起源和

演变 292.1.1HTML和XHTML的版本 302.1.2HTML与XHTML 312.2基本语法 312.3XHTML文档的标准结构 322.4基本的文本标记 332.4.1段落 332.4.2换行 352.4.3保留空白字符 352.4.4标题 362.4.5文本块引用 372.4.6字体样式与大小 382.4.7字符实体 392.4.8水平线 392.4.9meta元素 402.5图片 402.5.1图片格式 402.5.2<img/>标签 412.5.3XHTML文档的验证 432.6超链接 442.6.1链接 452.6.2位于文档内部的目标 472.6.3使用链接 472.7列表 47Web程序设计计算机科学经典教材全文共41页,当前为第2页。2.7.1无序列表 48Web程序设计计算机科学经典教材全文共41页,当前为第2页。2.7.2有序列表 482.7.3定义列表 512.8表格 522.8.1基本的表格标签 522.8.2属性rowspan与colspan 542.8.3属性align与valign 562.8.4属性cellpadding与

cellspacing 572.8.5表格分块 592.9表单 592.9.1<form>标签 592.9.2<input>标签 602.9.3<select>标签 632.9.4<textarea>标签 652.9.5动作按钮 662.9.6一个完整的表单示例 662.10HTML与XHTML之间的

语法差异 692.11本章小结 712.12复习题 722.13练习题 73第3章层叠样式表 753.1简介 753.2样式表的层次 763.3样式说明格式 773.4选择器格式 783.4.1简单的选择器格式 783.4.2类选择器 793.4.3通用选择器 793.4.4id选择器 803.4.5通配选择器 803.4.6伪类 803.5属性值的格式 813.6字体属性 823.6.1字体族 833.6.2字体大小 83Web程序设计计算机科学经典教材全文共41页,当前为第3页。3.6.3字体变体 84Web程序设计计算机科学经典教材全文共41页,当前为第3页。3.6.4字体样式 843.6.5字体粗细 843.6.6简写字体属性 843.6.7文本修饰 873.7列表属性 883.8颜色 913.8.1颜色组 913.8.2颜色属性 923.9文本对齐 933.10盒模型 953.10.1边框 953.10.2内边距和外边距 973.11背景图片 993.12<span>标签和<div>标签 1013.13冲突解决方案 1023.14本章小结 1033.15复习题 1043.16练习题 105第4章JavaScript基础知识 1074.1JavaScript概述 1074.1.1起源 1074.1.2JavaScript与Java 1084.1.3JavaScript的用途 1084.1.4浏览器和XHTML/JavaScript

文档 1094.2面向对象和JavaScript 1104.3一般的语法特征 1114.4基本数据类型、操作和

表达式 1134.4.1基本数据类型 1134.4.2数值型和字符串字面量 1144.4.3其他基本数据类型 1144.4.4声明变量 1154.4.5数值运算符 1154.4.6Math对象 1164.4.7Number对象 117Web程序设计计算机科学经典教材全文共41页,当前为第4页。4.4.8字符串连接运算符 117Web程序设计计算机科学经典教材全文共41页,当前为第4页。4.4.9隐式类型转换 1184.4.10显式类型转换 1184.4.11String属性和方法 1194.4.12typeof运算符 1204.4.13赋值语句 1204.4.14Date对象 1214.5屏幕输出和键盘输入 1214.6控制语句 1244.6.1控制表达式 1254.6.2选择语句 1264.6.3switch语句 1274.6.4循环语句 1294.7创建和修改对象 1314.8数组 1324.8.1创建Array对象 1324.8.2Array对象的特征 1334.8.3Array方法 1344.9函数 1364.9.1基础知识 1364.9.2局部变量 1374.9.3参数 1384.9.4复习sort方法 1404.10示例一 1404.11构造函数 1424.12利用正则表达式进行模式

匹配 1424.12.1字符和字符类模式 1434.12.2锚 1454.12.3模式修饰符 1454.12.4String对象中的其他模式

匹配方法 1464.13示例二 1464.14脚本中的错误 1484.15本章小结 1494.16复习题 1514.17练习题 152Web程序设计计算机科学经典教材全文共41页,当前为第5页。第5章 155Web程序设计计算机科学经典教材全文共41页,当前为第5页。5.1JavaScript的执行环境 1565.2文档对象模型 1565.3在JavaScript中访问元素 1595.4事件与事件处理 1625.4.1事件处理的基本概念 1625.4.2事件、属性和标签 1635.5处理主体元素的事件 1655.6处理按钮元素的事件 1665.7处理文本框和密码框元素的

事件 1715.7.1focus事件 1715.7.2验证表单输入 1735.8DOM2事件模型 1785.8.1事件传播 1795.8.2事件处理程序的注册 1805.8.3DOM2事件模型示例 1815.9navigator对象 1835.10DOM树的遍历和修改 1855.10.1DOM树的遍历 1855.10.2DOM树的修改 1855.11本章小结 1855.12复习题 1865.13练习题 187第6章利用JavaScript开发

动态文档 1896.1简介 1896.2元素定位 1906.2.1绝对定位 1906.2.2相对定位 1936.2.3静态定位 1946.3移动元素 1946.4元素可见性 1976.5修改颜色和字体 1986.5.1修改颜色 1986.5.2修改字体 1996.6动态内容 201Web程序设计计算机科学经典教材全文共41页,当前为第6页。6.7堆叠元素 203Web程序设计计算机科学经典教材全文共41页,当前为第6页。6.8定位鼠标光标 2066.9响应鼠标单击 2086.10缓慢移动元素 2096.11拖放元素 2126.12本章小结 2166.13复习题 2166.14练习题 217第7章XML简介 2197.1简介 2197.2XML语法 2217.3XML文档结构 2237.4文档类型定义 2257.4.1元素声明 2257.4.2属性声明 2277.4.3实体声明 2287.4.4一个DTD的示例 2287.4.5内部和外部DTD 2297.5名称空间 2307.6XML架构 2327.6.1架构的基本原理 2327.6.2架构的定义 2337.6.3定义架构实例 2347.6.4数据类型概述 2357.6.5简单类型 2357.6.6复杂类型 2367.6.7架构实例的验证 2387.7 2397.8通过CSS显示XML文档 2407.9XSLT样式表 2417.9.1XSLT概述 2427.9.2用于表现的XSL转换 2437.10XML处理器 2497.10.1XML处理器的用途 2497.10.2SAX方式 2497.10.3DOM方式 2507.11Web服务 250Web程序设计计算机科学经典教材全文共41页,当前为第7页。7.12本章小结 251Web程序设计计算机科学经典教材全文共41页,当前为第7页。7.13复习题 2537.14练习题 254第8章Flash简介 2578.1Flash的起源与用途 2578.2初步了解Flash创作环境 2588.3绘图工具 2628.3.1预定义图形 2628.3.2线条和徒手画 2678.3.3文本 2678.3.4元件和库 2688.4静态图形 2698.5动画和声音 2748.5.1动画简介 2748.5.2移动图形 2748.5.3更多动画 2768.5.4形状动画 2788.5.5声音 2808.6用户交互 2828.6.1动作 2838.6.2Flash组件 2838.6.3示例 2838.7小结 2868.8复习题 2878.9练习题 288第9章PHP简介 2899.1PHP的起源和用途 2899.2PHP概述 2909.3基本语法特征 2919.4基本数据类型、操作和

表达式 2919.4.1变量 2929.4.2整数类型 2929.4.3双精度类型 2929.4.4字符串类型 2929.4.5布尔类型 2939.4.6算术运算符和表达式 293Web程序设计计算机科学经典教材全文共41页,当前为第8页。9.4.7字符串操作 294Web程序设计计算机科学经典教材全文共41页,当前为第8页。9.4.8标量类型转换 2959.4.9赋值运算符 2969.5输出 2969.6控制语句 2989.6.1关系运算符 2989.6.2布尔运算符 2989.6.3选择语句 2989.6.4循环语句 2999.6.5示例 2999.7数组 3019.7.1创建数组 3019.7.2访问数组元素 3029.7.3数组处理函数 3029.7.4数组元素的按序访问 3049.7.5数组排序 3069.8函数 3079.8.1函数的基本特征 3079.8.2参数 3089.8.3变量的作用域 3099.8.4变量的生命周期 3109.9模式匹配 3119.10表单处理 3139.11文件 3189.11.1打开和关闭文件 3189.11.2读取文件 3199.11.3文件写入操作 3209.11.4文件加锁 3209.12cookie 3209.12.1cookie简介 3219.12.2PHP对cookie的支持 3229.13会话跟踪 3229.14本章小结 3239.15复习题 3249.16练习题 325第10章Ajax简介 32910.1Ajax概述 329Web程序设计计算机科学经典教材全文共41页,当前为第9页。10.1.1Ajax的历史 329Web程序设计计算机科学经典教材全文共41页,当前为第9页。10.1.2Ajax技术 33010.1.3实现Ajax 33110.2Ajax基础知识 33210.2.1应用程序 33210.2.2表单文档 33210.2.3请求阶段 33410.2.4响应文档 33610.2.5接收器阶段 33710.2.6跨浏览器支持 33910.3返回文档的格式 34010.3.1HTML和XHTML 34010.3.2XML 34110.3.3 34210.4Ajax工具包 34310.4.1Dojo 34410.4.2示例 34610.4.3Prototype 34810.5安全性与Ajax 34910.6本章小结 35010.7复习题 35110.8练习题 351第11章JavaWeb软件 35311.1servlet简介 35311.1.1概述 35311.1.2详解 35411.1.3servlet容器 35711.2NetBeans集成开发环境 35811.3调查表示例 36511.4在客户端存储信息 37211.4.1cookie 37211.4.2 37311.4.3示例 37411.5JSP 38011.5.1开发JSP的动机 38011.5.2JSP文档 38011.5.3表达式语言 383Web程序设计计算机科学经典教材全文共41页,当前为第10页。11.5.4JSTL中用于控制的动作

元素 385Web程序设计计算机科学经典教材全文共41页,当前为第10页。11.6JavaBean 38911.7模型-视图-控制器应用

体系结构 39211.8JSF 39311.8.1内核标签库和HTML

标签库 39411.8.2JSF事件处理 39511.8.3示例应用程序 39511.9本章小结 40011.10复习题 40111.11练习题 402第12章ASP.NET简介 40512.1.NETFramework概述 40512.1.1背景 40612.1.2.NET语言 40612.1.3公共语言运行库 40612.1.4公共语言基础结构 40712.2C#简介 40812.2.1起源 40812.2.2基本数据类型和表达式 40812.2.3数据结构 40912.2.4控制语句 40912.2.5类、方法和结构 41012.2.6异常处理 41112.2.7输出 41112.3ASP.NET简介 41212.3.1基本知识 41212.3.2ASP.NET文档 41312.3.3代码隐藏文件 41512.4ASP.NET控件 41712.4.1Web控件 41712.4.2简单的ASP.NET文档的

生命周期 41812.4.3VisualStudio 42212.4.4ASP.NET事件 427Web程序设计计算机科学经典教材全文共41页,当前为第11页。12.4.5用代码创建控件元素 428Web程序设计计算机科学经典教材全文共41页,当前为第11页。12.4.6控件的响应输出 42912.4.7列表控件 42912.4.8验证控件 43312.4.9主文档 43912.5ASP.NETAJAX 44212.6Web服务 44712.6.1构建Web服务 44712.6.2使用Web服务 45012.6.3传播Web服务 45412.7本章小结 45412.8复习题 45512.9练习题 457第13章基于Web的数据库访问 45913.1关系数据库 45913.2结构化查询语言简介 46213.2.1SELECT命令 46213.2.2连接 46213.2.3INSERT命令 46413.2.4UPDATE命令 46413.2.5DELETE命令 46413.2.6DROP命令 46513.2.7CREATETABLE命令 46513.3数据库访问的体系结构 46613.3.1 46613.3.2MicrosoftODBC

体系结构 46613.3.3PHP和数据库访问 46713.3.4JavaJDBC体系结构 46713.4MySQL数据库系统 46813.5使用PHP和MySQL

实现数据库访问 47013.5.1特殊字符的潜在问题 47013.5.2连接MySQL并选择

数据库 47113.5.3请求MySQL操作 47113.5.4PHP-MySQL示例 472Web程序设计计算机科学经典教材全文共41页,当前为第12页。13.6使用JDBC和MySQL

实现数据库访问 477Web程序设计计算机科学经典教材全文共41页,当前为第12页。13.6.1JDBC和MySQL 47713.6.2元数据 48013.6.3示例 48113.7使用ASP.NET和MySQL

实现数据库访问 48413.7.1MySQL和ADO.NET 48413.7.2数据绑定 48513.7.3连接字符串 48613.8本章小结 49013.9复习题 49113.10练习题 492第14章Ruby简介 49314.1Ruby的起源与用途 49314.2标量类型及其操作 49414.2.1数值与字符串字面量 49414.2.2变量和赋值语句 49514.2.3数值运算符 49614.2.4String的方法 49714.3简单的输入输出 50114.3.1屏幕输出 50114.3.2键盘输入 50114.4控制语句 50314.4.1控制表达式 50314.4.2选择语句和循环语句 50414.5数组基础 50714.5.1for-in语句 50814.5.2数组和列表的内置方法 50914.5.3示例 51114.6散列 51214.7方法 51414.7.1基础知识 51414.7.2局部变量 51514.7.3参数 51514.8类 51714.8.1类的基础知识 517Web程序设计计算机科学经典教材全文共41页,当前为第13页。14.8.2访问控制 519Web程序设计计算机科学经典教材全文共41页,当前为第13页。14.8.3继承 52114.9块和迭代器 52214.10模式匹配 52414.10.1模式匹配的基础知识 52414.10.2存储匹配 52614.10.3替换 52614.11本章小结 52714.12复习题 52714.13练习题 528第15章Rails简介 52915.1Rails概述 52915.2文档请求 53115.2.1静态文档HelloWorld 53115.2.2动态文档 53515.3使用数据库的Rails

应用程序 53715.3.1构建基本应用程序 53815.3.2完成应用程序 54615.3.3修改数据库 55015.3.4布局和样式表 55215.4采用Ajax技术的Rails 55315.4.1初始的表单文档 55415.4.2触发Ajax 55615.4.3控制器 55815.5本章小结 56015.6复习题 56115.7练习题 561附录AJava简介 563附录B颜色名及其十六进制值 577附录CJavaApplet 581Web程序设计计算机科学经典教材全文共41页,当前为第14页。Web程序设计计算机科学经典教材全文共41页,当前为第14页。基础知识随着万维网的出现,工业化国家的绝大部分居民和非工业化国家的一部分居民的生活已经发生了永久性的变化。虽然万维网也带来了一些负面影响例如,访问色情信息和参与赌博变得更容易了,有害思想的传播也有了更便捷的通道但是,万维网带来的巨大影响总体上是正面的。很多人都在日常生活中使用Internet和万维网,包括通过E-mail和社交网站来联系亲朋好友和商业伙伴,在任何地方都几乎可以购买任何商品,搜索无数的各种各样的信息,这些信息包括从电影院的放映时间表到几乎全球所有城市宾馆的住宿价格,甚至还包含一些偏远少数民族的历史文化特色。创建用于提供所有这些信息的软件和数据需要用到几种不同的技术,如标记语言和元标记语言,以及利用多种不同编程语言的编程技术,其中有一些是专门针对万维网的,另一些则是专为通用计算而设计的。为了能够获取构建万维网站点所需的知识和技术,本书提供了必要的背景和基础知识,使构建的万维网站点不仅可以呈现用户所需的信息,还能发布商业广告。本章是本书其余章节的基础。首先介绍Internet和万维网的一部分发展历史。接下来ResourceLocator,URL),URL为Web中的可用资源指定了地址。接下来将介绍多用途网际邮件扩充协议(MultipurposeInternetMailExtension,MIME),它定义具有不同类型内容的文件的文件类型和文件扩展名。此后将讨论超文本传输协议(HypertextTransferProtocol,HTTP),它提供了浏览器和Web服务器之间连接的通信接口。本章最后将简单介绍Web程序员常用的一些工具,包括XHTML、XML、JavaScript、Flash、Servlet、JSP、JSF、ASP.NET、PHP、Ruby、Rails以及Ajax。所有这些工具都将在本书的后续章节中详细介绍(第2章和第3章将讨论XHTML;第4章、第5章和第6章将讨论JavaScript;第7章将讨论XML;第8章将讨论Flash;第9章将讨论PHP;第10章将讨论Ajax;第11章将讨论Servlet、JSP和JSF;第14、15章将讨论Ruby;第15章将讨论Rails)。1.1Internet简介Web程序设计计算机科学经典教材全文共41页,当前为第15页。本书讨论的所有主题都与Internet有关。因此,首先简单讨论一下Internet本身。Web程序设计计算机科学经典教材全文共41页,当前为第15页。1.1.1起源20世纪60年代,美国国防部(DepartmentofDefense,DoD)开始对开发一些新的大规模计算机网络产生兴趣。开发这样的一个网络,其目的在于为从事与国防相关合同项目的研究人员提供通信、程序共享和远程计算机访问等功能。这种网络的一个基本要求是必须足够可靠,即使当其中的某些节点由于破坏、战争和其他正常原因而失去作用后,整个网络还可以继续运行。DoD的高级研究计划局(AdvancedResearchProjectsAgency,ARPA)1ARPA在1972年更名为美国国防高级研究计划局(DefenseAdvancedResearchProjectsAgency,DARPA)。提供经费支持了第一个这种网络的构建,这个网络将ARPA支持的大约12个实验室和大学连接在一起。该网络中的第一个节点是1969年在UCLA建立的。1ARPA在1972年更名为美国国防高级研究计划局(DefenseAdvancedResearchProjectsAgency,DARPA)。由于这个网络是由ARPA提供经费支持的,因此被命名为ARPAnet。尽管最初的设计目标很多,但是这个网络的初衷主要是通过E-mail进行基于文本的简单通信。由于ARPAnet只是在ARPA资助的实验室和大学中可用,因此绝大部分教育机构并没有连接进来。所以,20世纪70年代后期和80年代早期又开发了很多其他网络,其中包括BITNET和CSNET。BITNET是BecauseIt’sTimeNetwork的缩写,是由纽约城市大学(CityUniversityofNewYork)首创。该网络的初衷是提供电子邮件和文件传输功能。CSNET是ComputerScienceNetwork的缩写,它将特拉华大学(UniversityofDelaware)、普渡大学(PurdueUniversity)、威斯康星大学(UniversityofWisconsin)、兰德公司(RANDCorporation)、Bolt、Beranek以及Newman(马萨诸塞州坎布里奇市的一家研究公司)连接在一起。该网络最初的设计目标是提供电子邮件功能。由于各种不同的原因,BITNET和CSNET都没有发展为占有绝对优势的全国性网络。1986年出现了一个新的全国性的网络NSFnet,顾名思义,这是由美国国家科学基金会(NationalScienceFoundation,NSF)出资赞助的。NSFnet最初连接了NSF赞助下的位于5个大学中的超级计算机中心。但是,在该网络建立后不久,其他学术机构和实验室也开始使用该网络。到1990年,NSFnet在绝大部分非军事领域应用中已经取代了ARPAnet,大量组织成为NSFnet中的节点到1992年,NSFnet已经连接了全球中一百万台以上的计算机。1995年,NSFnet中的一小部分网络重新成为学术网络。其余部分就成为著名的Internet,虽然这一术语很早就已经在ARPAnet和NSFnet中使用过了。1.1.2Internet的含义Web程序设计计算机科学经典教材全文共41页,当前为第16页。Internet是在一个通信网络中连接的计算机的大规模集合。这些计算机的大小、配置和制造商都是我们熟知的。实际上,连接到Internet中的一些设备如绘图机和打印机根本就不是计算机。能够使所有这些不同的设备通过Internet进行通信的创新之举是一个单独的、低层的协议,即传输控制协议/Internet协议(TransmissionControlProtocol/InternetProtocol,TCP/IP)。TCP/IP在1982年成为计算机网络连接的标准协议,它允许某台计算机中的程序通过Internet直接和另一台计算机中的程序进行通信。但在绝大多数情况下,在TCP/IP之上还要运行一个较高层的协议。即便如此,TCP/IP为连接到Internet的计算机(及其他设备)提供了低层的通信接口也是非常重要的TCP/IP并非Internet所采用的唯一通信协议——Web程序设计计算机科学经典教材全文共41页,当前为第16页。TCP/IP并非Internet所采用的唯一通信协议——有时也选用UDP/IP。一般情况下,同一个组织中的多台计算机并不是直接连接到Internet中的每台计算机上的,而是相互连接构成了一个局域网,然后这个局域网中的一个节点物理连接到Internet中。因此,Internet实际上并不是计算机的网络,而是网络的网络。很明显,必须可以唯一地标识出所有连接到Internet的设备。1.1.3IP地址对于我们来说,Internet节点是通过名称进行标识的;而对于计算机来说,它们是通过数字地址进行标识的。这种机制类似于程序中的变量名和变量的数字内存地址之间的关系。我们是通过变量名来标识变量,计算机则是通过变量的数字形式的内存地址来标识变量。计算机接入到Internet的IP地址是一个唯一的32位数字。通常IP地址会写为(或者认为)是由4个8位数字,中间用西文句点分隔而成的。IP地址中的这4个部分则分别由不同的Internet路由计算机解析,然后确定某个消息下一步必须去往何处才能最终到达目的地。不同的组织分配了不同的IP块,然后再细分给所有需要接入到Internet的计算机此时的机器大部分指的是计算机。例如,一个较小的组织可能分配了256个IP地址,可能是~55。一些大型组织,如美国国防部,可能分配了1600万个IP地址,这些IP地址的第一个8位数是特殊的,如~55。虽然人们几乎总是在浏览器中输入域名,但并不影响IP的正常工作。例如,美国联合航空公司(UnitedAirline,其网站地址是)的IP地址是3。因此,如果在浏览器中输入http://3,就能连接到美国联合航空公司的网站。1998年底,一个新的IP标准IPv6出台,但它尚未广泛实现。IPv6最重要的变化是将IP地址从32位扩展为128位。这个变化是非常必要的,因为剩下的尚未启用的IP地址数量正在快速减少。这个新标准IPv6规范所在的位置为/in-notes/rfc2460.txt。1.1.4域名由于我们很难直接处理和记住数字,因此Internet中的机器必须要有一个文本格式的名称。名称中首先是一个主机的名称,接下来是范围越来越大的机器集合的名称,称之为域(domain)。一般可能有两个、三个甚至多个域名。第一个域名紧靠主机名称的右侧,表明主机是这个域的一部分。第二个域名给出了第一个域所在的域。最后的域名表示主机所属的组织类型,这是站点名称中最大的域。对于美国的组织来说,edu表示教育机构,com表示公司,gov表示美国政府机构,org表示其他类型的组织。对于其他国家,最大的域一般是国家的缩写例如,瑞典(Sweden)的缩写为se,哈萨克斯坦(Kazakhstan)的缩写为kz。请分析下面这个简单的地址示例:Web程序设计计算机科学经典教材全文共41页,当前为第17页。Web程序设计计算机科学经典教材全文共41页,当前为第17页。其中,movies指的是主机名称,comedy是movies所在的本地域,而它又是marxbros域的一部分,同样,marxbros域是com域的一部分。主机名称和所有的域名合称为完全限定域名。由于IP地址是Internet内部使用的地址,因此,由浏览器用户为消息指定的目的地的完全限定域名必须在通过Internet将消息传递给目的地之前转换为一个IP地址。此转换操作由一个名为“域名服务器”的软件系统来完成,该域名服务器实现了域名系统(DomainNameSystem,DNS)。域名服务器是为Internet上的一组机器服务,并由负责这些机器所连接的Internet部分的组织机构来运转。所有来自浏览器的文档请求都被发送到最近的域名服务器。该域名服务器将尝试是否能够将完全限定域名转换为IP地址,如果可以,则进行转换。否则,该服务器将这个完全限定域名发送给另外的域名服务器以实现转换操作。与IP在发送到一个适当的Web服务器之前是如何转换为IP地址的。图1-1域名转换确定某个Web站点IP地址的一种方式是在完全限定域名之前使用telnet命令。参见1.7.1节。到20世纪80年代中期,已经出现了很多种基于TCP/IP运行的协议,以支持基于Internet的各种不同应用。其中最常见的是telnet,它使得Internet上某台计算机的用户可以登Internet上各个计算机之间的文件传输;Usenet用于实现电子公告板;mailto允许Internet上某台计算机的用户将消息发送给Internet上其他计算机的用户。这些不同的协议有着各自不同的用户接口,并且只能用于实现本身的设计目标,用户只有学习所有这些不同的用户接口才能够体验Internet的优势。这就限制了Internet的发展。但不久后,一个更好的方法出现了,那就是万维网。1.2万维网Web程序设计计算机科学经典教材全文共41页,当前为第18页。本节将简单介绍万维网的演变。Web程序设计计算机科学经典教材全文共41页,当前为第18页。1.2.1起源1989年,CERN(ConseilEuropéenpourlaRechercheNucléaire或EuropeanOrganizationforParticlePhysics的简称,欧洲粒子物理研究所)中由TimBerners-Lee领导的小组提交了一个针对Internet的新协议和一个使用该协议的文档系统3虽然Berners-Lee获得的学位(来自牛津)是物理学,但他在CERN的第一份工作却是一个软件咨询工程师。Berners-Lee在伦敦出生并长大。。该小组将这个新系统命名为WorldWideWeb,它的目的在于使全球的科学家能够利用Internet3虽然Berners-Lee获得的学位(来自牛津)是物理学,但他在CERN的第一份工作却是一个软件咨询工程师。Berners-Lee在伦敦出生并长大。这个新系统被设计为允许Internet上任意一个用户都可以从许多文档服务计算机的数据库中搜索和获取文档。 到1990年末,个新系统的基本框架已经在CERN中的一台NeXT计算机中开发出来并实现了。1991年,该系统移植到了其他计算机平台并正式发布。该系统的文档使用超文本的形式,超文本是一组包含了嵌入式链接的文本,这些文本可以链接到其他文档的文本,并支持非连续显示文本格式的材料。超文本的概念出现得更早一些,在20世纪80年代中期,它就已经在Xerox公司的NoteCards和Apple公司的HyperCard中使用了。从现在开始,本书将WorldWideWeb简称为Web。Web中的信息单元有几个不同的名称,其中,最常用的是页面(Page)、文档(Document)和资源(Resource)。这三个名称中最常用的是文档,虽然它看起来好像只能描述文本。页面的应用范围也比较广泛,但经常会引起误解,因为Web信息单元通常会涵盖构成印刷媒体的多种页面类型。此处将这些单元称为资源是比较合适的,因为这可以涵盖可能包含的非文本信息。虽然本书有的地方或多或少地将文档和页面互换使用,但在绝大部分情况下,应该优先使用文档这一名称。有时候文档只表示文本,通常包含一些指向其他文档的嵌入式链接。但是,文档也可能包含图片、音频或者其他类型的媒体。如果一个文档包含了非文本信息,就称为超媒体。从抽象意义上讲,Web仅是一个由文档组成的超大规模集合,其中通过链接相互联系。这些文档是由Web服务器提供,可以通过浏览器进行访问。有关Web浏览器的信息请参见1.3节,Web服务器的信息请参见1.4节。1.2.2Web还是Internet需要指出的是,Web和Internet并不是一回事。Internet是计算机和其他设备的集合,它们通过装置连接起来,相互之间可以通信。Web则是一组软件和协议的集合,Internet中的绝大部分(甚至全部)计算机都安装了这些软件和协议。其中有些计算机运行Web服务器,用来提供文档,但大多数计算机运行Web客户机或浏览器,用来从服务器请求文档,并将文档显示给用户。在Web问世之前,Internet就非常有用;即使没有Web,Internet也仍然非常有用。但是,目前的情况是绝大部分用户都通过Web来使用Internet。1.3Web浏览器Web程序设计计算机科学经典教材全文共41页,当前为第19页。Web程序设计计算机科学经典教材全文共41页,当前为第19页。Web服务器中的文档是由浏览器进行请求的,浏览器是运行在客户机上的程序。由于用户可以利用它来浏览服务器中的可用资源,因此称为浏览器。最初的浏览器是基于文本的它们不能显示任何类别的图形信息,也没有图形用户界面(GraphicalUserInterface,SupercomputerApplications,NCSA)开发的。那些既不是科学家也不是软件开发人员的人能够借助于这个图形用户界面很方便地访问Web。Mosaic的第一个发布版本是利用XWindow系统运行在UNIX系统上。到1993年晚期,又发布了可以运行在AppleMacintosh和MicrosoftWindows系统上的Mosaic版本。这样,接入到Internet的计算机用户拥有了一件非常强大的工具,能够在地球的任何地方访问Web中的任何资源。Mosaic带来的这种强大功能和便利,直接导致了Web使用的爆炸性增长。浏览器是Web中的客户机,这是因为它启动了与服务器的通信,服务器在等待浏览器的请求之前不会做任何事情。一种最简单的情况就是浏览器向服务器请求一个静态文档。服务器接到请求后定位这个文档,然后发送给浏览器,浏览器将文档显示给用户。但是,较复杂的情况更为常见。例如,服务器可能会提供一个文档,请求用户通过浏览器输入信息。在用户完成了请求输入后,浏览器将这个请求输入传递给服务器,服务器可能利用这一输入信息进行计算,然后向浏览器返回一个新的文档,并将计算结果通知给用户。有时候浏览器可能还会直接请求执行服务器中存储的某个程序。程序执行的结果将返回给浏览器。虽然Web支持很多不同的协议,但最为常用的还是超文本传输协议(HypertextTransferProtocol,HTTP)。HTTP提供了一种标准的浏览器和Web服务器之间的通信格式。1.7节将简单介绍HTTP。最常用的浏览器是MicrosoftInternetExplorer(IE)和Firefox浏览器,其中,IE只能运行在安装了MicrosoftWindows操作系统的PC机上4实际上,IE4和IE5还能够在Macintosh计算机中使用,IE4还能够在UNIX系统中使用。但是,后来的IE版本只能适用于Windows平台。,Firefox浏览器则可用于几种不同的计算平台,包括Windows、MacOS和Linux。还有其他一些可用的浏览器,如Firefox的“近亲”和NetscapeNavigator,另外还有Opera浏览器和Apple的Safari浏览器。但是,因为当前使用的绝大部分浏览器是IE或Firefox,因此本书将重点讨论这两种浏览器。4实际上,IE4和IE5还能够在Macintosh计算机中使用,IE4还能够在UNIX系统中使用。但是,后来的IE版本只能适用于Windows平台。1.4Web服务器Web服务器是可以向发出请求的浏览器提供文档的程序。服务器是一种被动程序:只有当Internet上运行在其他计算机中的浏览器发出请求时,服务器才会响应。Web程序设计计算机科学经典教材全文共41页,当前为第20页。在线站点总量超过23.8亿。些其他类型服务器的使用率是比较平均的(处于第三位的服务器是,这是来自中国公司的一种产品,使用率大约为13%)6这些统计数据来自于。Web程序设计计算机科学经典教材全文共41页,当前为第20页。在线站点总量超过23.8亿。6这些统计数据来自于。1.4.1Web服务器操作虽然客户机和服务器是一种自然的信息分发模式,但是,这种配置模式还是为Web带来了其他一些好处。一方面,服务器中的信息处理并不需要耗费太长时间;另一方面,在客户机屏幕上显示信息却非常花费时间。由于Web服务器不参与信息的显示过程,因此,服务器可以同时处理很多个客户机的请求。这样,利用少量的服务器为大量的客户机提供文档就是一种既合乎自然规律又有效的资源配置方式。URL可以指定以下两种不同资源的某一种:存储在服务器中某个数据文件的地址,该文件将发Web客户机和Web服务器之间的所有通信都使用标准的Web协议HTTP,1.7节中将讨论该协议7实际上,有些通信使用的是HTTP的安全版本HTTPS。。7实际上,有些通信使用的是HTTP的安全版本HTTPS。当Web服务器开始运行时,会通知所处的操作系统它已经做好了准备,可以接受通过主机中某个端口接入的网络连接。当处于这种运行状态时,服务器将作为操作系统环境中的后台进程运行。Web客户机或者浏览器打开一个与Web服务器的网络连接,向服务器发送请求信息或者某些可能的数据,并接收服务器返回的信息,最后关闭连接。当然,网络连接中浏览器和服务器之间还存在其他机器 特别是网络路由器和域名服务器。但是,本节只关心Web通信中的一个部分:服务器。简单地讲,Web服务器的主要任务就是监控主机的通信端口,通过该端口接受HTTP命令,并运行该命令指定的操作。所有HTTP命令都包含一个URL,其中包含主机名称。当接收到这个URL之后,Web服务器就将其转换为一个文件名称(向客户机返回一个文件)或者程序名称(执行该程序,并将运行结果返回给客户机)。这听起来非常简单,但和其他听起来非常简单的很多过程一样,其中包含了大量复杂的细节。Web程序设计计算机科学经典教材全文共41页,当前为第21页。所有当前这些Web服务器都有一个共同起源:最早出现的两种服务器,其中一种是欧洲CERN开发的,另一种是美国伊利诺斯大学的NCSA开发的。目前,最常用的服务器配置是运行在不同UNIX操作系统版本上的Apache。Web程序设计计算机科学经典教材全文共41页,当前为第21页。1.4.2服务器的一般特性不管起源是什么和运行于何种平台,绝大部分Web服务器都有一些共同的特性。本节将简单介绍其中的一些特性。Web服务器的文件结构中有两种目录。其中一种目录的根目录称为文档根目录。文件层次结构以文档根目录为起点来存储服务器能够直接访问到的Web文档,Web文档一般情况下是为客户机提供的。另一种目录的根目录称为服务器根目录。此目录与其派生的目录一起用来存储服务器及其支持软件。客户机能够直接通过顶层URL来访问存储在文档根目录中的文件。通常,客户机不能直接访问URL中指定的文档根目录,而是通过服务器将请求的URL映射为文档根目录,客户机并不知道文档根目录所在的位置。例如,假定有一个基于UNIX系统的名为的站点(这不是一个真实的站点,至少目前还不是)。进一步假设其文档根目录为topdocs,存储在/admin/web目录下,topdocs/bulbs/tulips.html来搜索文件tulips.html。许多服务器允许一部分文档集合存储到文档根目录之外的路径中。这种提供文档的辅助性区域称为虚拟文档树。例如,服务器的初始配置可能是在服务器主机的主系统磁盘中存储所有文档。随着时间推移,服务性文档集合的大小可能会超过磁盘空间。在这种情况下,一部分文档可能需要存储到辅助磁盘中。辅助磁盘可能位于服务器主机中,也可能位于本地局域网的其他机器中。为了支持这种布局,可以将服务器配置为把带有特殊文件路径的URL定向到文档根目录之外的存储区域。有时,一些包含不同内容类型的文件,如图片,会存储在文档根目录之外。早期服务器的功能一般只限于处理请求的文件,或者输出请求程序执行的结果。在过去几年,服务器附加的服务功能一直在稳定增加。现代的服务器是既庞大又复杂的系统,能够提供很广泛的客户机服务。许多服务器能够支持在一台计算机上建立多个站点,这样可以降低每个站点的成本,并使站点的维护更加方便。这样的辅助主机称为虚拟主机。有些服务器可以提供Web上其他主机的文档根目录中的文档,这种服务器称为代理服务器。虽然Web服务器的最初设计目标只是支持HTTP协议,但是,目前有许多服务器可以支持ftp、gopher、news以及mailto协议。此外,几乎所有Web服务器都支持通过通用网关接口(CommonGatewayInterface,CGI)程序和服务器端脚本与数据库系统进行交互。1.4.3ApacheWeb程序设计计算机科学经典教材全文共41页,当前为第22页。Apache源自于NCSA服务器httpd,该服务器添加了一些功能后就成为了Apache。美国有一个名为Apache的土著部落,但是,服务器Apache与该部落没有任何关系。它来自于其第一个版本的特征,该版本是服务器httpd的一个修订版本。从本节前面的统计数据中了解到Apache是目前应用最广泛的Web服务器。其中主要原因如下:无论从速度还是从可靠性角度来讲,它都是一款优秀的服务器。而且,还是开放源代码软件,这就意味着它是免费的,有一个巨大的志愿者团队对其提供支持,系统维护过程既有效又有力。最后,它是基于UNIX系统最好用的服务器之一,而UNIX是最为流行的Web服务器操作系统。Web程序设计计算机科学经典教材全文共41页,当前为第22页。除了为客户机提供文档这一基本服务之外,Apache还提供了大量的其他服务。当Apache开始执行时,首先从一个文件中读取配置信息并根据其中的参数启动。一个新的Apache副本包含了针对“典型”操作的默认配置信息。站点管理员通过修改默认的配置信息来满足自己的特殊要求和习惯。由于历史的原因,一个Apache服务器中包含了以下三个配置文件:httpd.conf、srm.conf以及access.conf。只有文件httpd.conf中包含了真正用来控制Apache服务器行为的指令。其他两个文件指向文件httpd.conf。文件httpd.conf中包含了一个指令列表,用于指定服务器的操作。/docs/2.2/mod/quickreference.html对这些指令做了描述。1.4.4IIS虽然Apache已经可以移植到Windows平台,但是,它并不是各种Windows操作系统中最流行的服务器。由于MicrosoftIIS服务器是作为Windows系统的一部分而一起提供的,而且由于它本身也是一个很好的服务器,因此,绝大部分基于Windows的Web服务器使用的是IIS。Apache和IIS提供的各种服务十分类似。从站点管理员的观点看,Apache与IIS最大的区别在于,Apache是通过一个配置文件进行控制,管理员可以通过编辑这个文件来修改Apache的行为。对于IIS而言,服务器时控制IIS和ftp。站点管理员可以通过该程序来设定服务器的参数。在WindowsXP和Vista下,可以按照“控制面板”|“管理工具”|IISAdmin的顺序来启动IIS管理单元。在最后一个选项上单击启动相应窗口,利用该窗口可以启动、停止或暂停IIS。当服务器停止后,可以通过该窗口修改IIS的参数。1.5统一资源定位符统一资源定位符(Uniform/Universal8资源地址通常也称为URL,因此,究竟是uniform还是universal无关紧要。ResourceLocator,URL)用于标识Internet中的文档(资源)。Internet中有许多不同类型的资源,可以通过不同格式的URL标识它们。8资源地址通常也称为URL,因此,究竟是uniform还是universal无关紧要。1.5.1URL的格式所有的URL都遵循以下通用格式:Web程序设计计算机科学经典教材全文共41页,当前为第23页。scheme:object-addressWeb程序设计计算机科学经典教材全文共41页,当前为第23页。其中,scheme一般指的是通信协议。常用的通信协议包括http、ftp、gopher、telnet、file、mailto以及news。不同的通信协议对应的object-address格式也不同。本书主要介绍HypertextMarkupLanguage,XHTML)文档。当URL中的scheme为HTTP时,object-address应该为如下格式://完全限定域名/文档路径我们感兴趣的另一个协议是file协议。file协议用于表示正运行浏览器的计算机中的文档。要知道Web中的某些文档是否可用,可利用该协议进行测试,而不需要将这些文档共享给所有的浏览器,因此,该协议是非常有用的。当URL中的scheme为file时,完全限定域名就可以省略了,整个URL应该为如下格式:file://文档路径由于本书只讨论XHTML文档,因此接下来对URL的讨论将仅限于HTTP协议。服务器计算机的名称就是该计算机的主机名称,文档就存储在服务器计算机中(以便其他计算机访问)。对于将消息传递给主机这一操作,必须指定主机中的一个进程进行处理。这样的进程是通过对应的端口号进行标识的。Web服务器默认的端口号为80。如果某个服务器配置为使用其他的端口号,就必须在URL中将这个端口号附加到主机名称之后。例如,如果一个Web服务器配置为使用端口800,那么必须将“:800”附加到主机名称之后。9实际上,某些浏览器会错误地接受URL中的空格,但这并不是一种标准行为。URL/URI_Overview.html给出了有关URL的详细介绍。9实际上,某些浏览器会错误地接受URL中的空格,但这并不是一种标准行为。1.5.2URL路径HTTP协议指定文档路径的方式与操作系统中文件系统指定文件或目录路径的方式类似:都是由目录名称和文件名称组成的一组序列,名称之间通过分隔符进行分隔,不同的操作系统对应的分隔符也是不一样的。对于UNIX服务器而言,路径是通过“/”隔开的;对于Windows服务器而言,路径是通过“\”隔开的。绝大多数浏览器都能够接受用户输入不正确的分隔符例如,在Windows服务器中采用“/”作为文档文件路径的分隔符,如下所示。/files/f99/storefront.htmlWeb程序设计计算机科学经典教材全文共41页,当前为第24页。URL指定的路径可能与文件路径有所不同,这是因为URL并不需要包含文件路径中的所有目录。按照顺序包含了所有目录的路径称为完整路径。绝大部分情况下,服务器配置文件中指定了某个基础路径,URL指定的文档路径是相对于该基础路径而设定的。这样的路径称为部分路径。例如,如果服务器的配置文件将存储文件的根目录指定为files/f99,那么上面的URL可以修改为:Web程序设计计算机科学经典教材全文共41页,当前为第24页。/storefront.html如果指定的文档并不是一个真正的文档,而是一个目录,那么只需要在该目录名的后面添加一个“/”即可,如下所示:/departments/有时可能指定了一个目录(通过在后面附加一个“/”),但并未给出名称,例如:/此时,服务器将在存储文档的顶层目录中进行搜索,直到搜索到一个服务器认为是主页的文件。按照惯例,主页文件名称一般为index.html。主页中通常包含了一些链接,用户可以通过链接来请求服务器中的其他文件。如果服务器未在根目录中找到一个合适的主页文件,它将构造出目录列表并将其返回给浏览器。1.6MIME浏览器需要一些方法来确定从Web服务器中接收的文档是哪种格式。如果不了解文档的格式,浏览器将无法正确显示该文档,因为不同的文档格式要求使用不同的显示工具。这些文档的格式是通过多用途网际邮件扩充协议(MIME)指定的。1.6.1类型说明档可能包含各种类型的文本、视频数据或者音频数据。由于Web也存在这方面的需求,因此,Web中也采用了MIME来指定所传递的文档类型。Web服务器在一个将要发送到浏览器的文档头部附加了MIME的格式说明。当浏览器从Web服务器中接收到这个文档时,就根据其中包含的MIME格式说明来确定下一步的操作。例如,如果文档内容为文本,则MIME格式说明将通知浏览器文档的内容是文本,并指明具体的文本类型。如果文档内容为音频,那么MIME格式说明将通知浏览器文档的内容是音频,并给出音频格式的具体描述,以便浏览器选用合适的播放程序来正确播放收到的音频文件。MIME说明的格式如下所示:类型/子类型Web程序设计计算机科学经典教材全文共41页,当前为第25页。子类型为plain和html。最常用的图片子类型为gif和jpeg。最常用的视频子类型为mpeg和quicktime。每个Web服务器中的配置文件中都包含了一个MIME说明列表。在本书剩余的内容中,只要提到文档类型,指的就是文档类型及其子类型。Web程序设计计算机科学经典教材全文共41页,当前为第25页。名.html意味着服务器应该在将文档发送给浏览器之前为文档附加text/html10这种说法并不完全准确。XHTML文档也使用.html文件扩展名,严格来说,它应该使用不同的MIME类型。10这种说法并不完全准确。XHTML文档也使用.html文件扩展名,严格来说,它应该使用不同的MIME类型。浏览器中还有一个对应的转换表,用于通过文档的文件扩展名来查找文档类型。但是,这个转换表只有当服务器没有指定文档的MIME类型时才使用,可能只有一些较老的服务器才会出现这种情况。在其他情况下,浏览器都可以从服务器提供的MIME头获取文档类型信息。1.6.2实验性文档类型video/x-msvideo。任何Web提供商如果想要添加一个实验性子类型,只需在服务器的MIME说明列表中添加一个该子类型的名称即可。例如,某个Web提供商可能有一个自定义的数据库,并希望通过Web与其他人共享该数据库中的内容。这样就涉及到了浏览器如何显示该数据库的内容的问题。Web提供商必须提供一个程序,浏览器可以调用该程序来显示数据库中的内容。这种程序可以位于浏览器的外部,此时称为辅助应用程序;也可以以代码模块的形式嵌入到浏览器中,此时称为插件。MIME说明为text/plain(纯文本)和text/html(HTML文件)。一些特殊的浏览器有时无法处理某些文档类型,即使这些文档类型的应用比较广泛也是如此。此时,浏览器按照前面讨论的实验性类型的处理方式来处理这些无法处理的类型。浏览器通过检查自身的配置文件来确定所需的辅助应用程序或者插件,这个配置文件中规定了文件类型和辅助应用程序或插件之间的对应关系。如果浏览器找不到显示文档所需要的应用程序或插件,则给出错误消息。浏览器还可以向服务器指定它适合接收的文档类型,参见1.7节。1.7超文本传输协议HTTP的规范。在万维网联盟(WorldWideWebConsortium,W3C)的Web站点中可以找到RFC2616。本节将简要介绍HTTP。HTTP包含两个阶段:请求阶段和响应阶段。浏览器和Web服务器之间的每次HTTP通信(请求或者响应)都包含两部分:头部和主体。头部包含了与通信有关的信息;主体则包含了通信的数据,当然,前提是存在这样的数据。1.7.1请求阶段Web程序设计计算机科学经典教材全文共41页,当前为第26页。HTTP请求的通用格式如下所示:Web程序设计计算机科学经典教材全文共41页,当前为第26页。(1) HTTP方法URL中的域名部分HTTP版本(2)头部字段(3)空行(4)消息主体以下是一个HTTP请求的首行的示例:GET/storefront.htmlHTTP/1.1HTTP中只定义了为数不多的几种请求方法,而且一般只使用其中的一小部分。表1-1中列出了几种最常用的方法。表1-1HTTP请求方法方法描述GET返回指定文档的内容HEAD返回指定文档的头部信息POST利用随附的数据来执行指定的文档PUT利用随附的数据来替换指定文档DELETE删除指定文档在表1-1给出的这些方法中,GET和POST是最常用的两个方法。POST方法最初的设计目标是完成诸如向新闻组发送新闻等任务。现在,POST最常见的应用是从浏览器向服务器发送表单数据,同时还发送一个请求来执行服务器中的某个程序,该程序可以处理这些表单数据。HTTP通信的首行之后是任意数目的头部字段,其中绝大部分是可选的。头部字段的格式是由字段名称和字段值构成的,字段名称和字段值之间使用冒号隔开。一共有以下4类头部字段:(1)General:针对普通信息,如日期等(2)Request:包含在请求头部中(3)Response:针对响应头部(4)Entity:请求头部和响应头部中都使用该字段一个常用的请求字段为Accept字段,它指定了浏览器针对被请求文档的MIME类型的首选项。如果浏览器可以接受多种格式的文档,那么可以指定多个Accept字段。例如:Accept:text/plainAccept:text/htmlAccept:image/gif可以使用通配符“*”来指定任何形式的MIME子类型。例如,如果可以接受所有类型的文本,字段Accept可以写为:Web程序设计计算机科学经典教材全文共41页,当前为第27页。Accept:text/*Web程序设计计算机科学经典教材全文共41页,当前为第27页。Host:hostname请求字段用于指定主机名称。Host字段对于HTTP1.1来说是必须的。If-Modified-Since:date请求字段指定了一个日期,只有当请求的文件在该日期后被修改时,才应该发送该文件。如果请求包含一个主体,那么必须通过Content-length字段指定该主体的长度,该字段以字节为单位来表示响应主体的长度。由于POST方法请求需要向服务器发送数据,因此必须使用该字段。请求的头部之后必须有一个空行,该空行用于将请求的主体和头部分隔开来。使用了GET、HEAD和DELETE方法的请求没有请求主体。因此,这种情况下,空行是请求结束的标记。浏览器未必与Web服务器进行通信,这种情况下,也可以使用telnet协议。例如,在任何广泛使用的操作系统的命令行中输入以下命令行:>telnethttp该命令创建了与服务器的http端口之间的一个连接。服务器对此作出以下响应11需要注意的是,这个telnet请求返回服务器的IP地址。:11需要注意的是,这个telnet请求返回服务器的IP地址。Trying0…ConnectedtoblancaEscapecharacteris'^]'.此时,与服务器之间的连接已经完成,服务器可以接收HTTP命令。例如:GET/~user1/respond.htmlHTTP/1.1Host:1.7.2节中将介绍该请求对应的响应的头部。1.7.2响应阶段HTTP响应的通用格式如下:(1)状态行(2)响应头部字段(3)空行(4)响应主体状态行中包含了所用HTTP的版本号,此外还包括一个三位数表示的响应状态码和针对状态码的一个简短的文本解释。例如,大部分响应都是以下面的状态行开头的:HTTP/1.1200OKWeb程序设计计算机科学经典教材全文共41页,当前为第28页。状态码是以1、2、3、4或5开头的。分别以这五个数字作为开头的状态码的一般意义如表1-2所示。Web程序设计计算机科学经典教材全文共41页,当前为第28页。表1-2HTTP状态码的开头数字开头数字类别1信息2成功3重定向4客户端错误5服务器错误404NotFound是一个最常见的状态码,同时也是用户最不希望看到的,它意味着无法找到请求的文件。当然,200OK是用户想要看到的,因为它意味着请求得到处理,没有发生任何错误。500码则意味着服务器遇到了问题,且不能完成请求。服务器在发送状态行后,接下来发送响应头部,响应头部可能包含多行有关响应的信息,每条信息都对应一个字段。响应头部中必须使用的字段只有一个,即Content-type。与1.7.1节最后那个示例所发出的请求对应的响应头部如下所示:HTTP/1.1200OKDate:Sat,25July200922:15:11GMTServer:Apache/2.2.3(CentOS)Last-modified:Tues,18May200416:38:38GMTETag:"1b48098-16c-3dab592dc9f80"Accept-ranges:bytesContent-length:364Connection:closeContent-type:text/html,charset=UTF-8响应头部之后必须有一个空行,这与请求头部是一致的。空行之后才是响应数据。在上例中,响应主体是一个HTML文件respond.html。在HTTP1.1之前的版本中,当服务器完成了向客户端发送响应的操作后,服务器和浏览器之间的通信连接也就关闭了。但是,HTTP1.1中的默认操作是当发送动作结束后,服务器和浏览器之间仍然保持连接状态。这样,客户端就可以在很短的时间内连续发送多个请求而无须重新建立与服务器的连接。HTTP1.1中的这一变化极大地提高了Web效率。1.8安全性Web程序设计计算机科学经典教材全文共41页,当前为第29页。不用多想,就能意识到Internet和Web是滋生安全问题的沃土。在Web服务器端,拥有计算机和浏览器并连接到Internet的任何人都能够请求在服务器计算机上执行软件,也能访问服务器计算机上存储的数据和数据库。在浏览器端,问题是相似的:浏览器指向的任何服务器都能够下载要在浏览器主机上执行的软件。这样的软件有可能访问此机器的部分内存和存储设备,而原始的浏览器请求并不需要访问这些内存和存储设备。实际上,无论在客户机还是服务器端,都如同允许大量陌生人拥入您的房间,但要防止他们将任何东西遗忘在房间里、带走任何东西或改变房间里的任何东西。房间设计得越大越复杂,要阻止这些活动就越困难。Web服务器和浏览器也是这样:它们越复杂,要阻止安全破坏就越困难。当今的浏览器和Web服务器确实是庞大而复杂的软件系统,因此在Web应用程序中安全是一个很大的问题。Web程序设计计算机科学经典教材全文共41页,当前为第29页。Internet和Web安全的主题既广泛又复杂,讨论这一问题的书籍很多。本书只用一小节篇幅来讨论,因此只能简单粗略地讨论一些安全子主题。Web安全的一个方面是在得到某人从浏览器发送到服务器的数据,并使服务器将数据交付回浏览器的过程中,任何人或任何设备都不会沿途截获或破坏数据。只考虑最简单的情形,将一个信用卡号传送到从那里购买过东西的公司。这一事务的安全问题如下所示:(1)私密性(Privacy)——信用卡号在传送到公司服务器的途中不可能被窃取。(2)完整性(Integrity)——信用卡号在传送到公司服务器的途中不可能被修改。(3)可验证性(Authentication)——买卖双方必须能够确定对方的身份。(4)不可否认性(Nonrepudiation)——必须能够合法地证明确实发送和接收了消息。支持私密性和完整性的基本工具是加密。要传送的数据被转换或加密成一种不同的格式,这种格式对于无权访问数据的人或计算机来说实际上是不可能解密的。因此,即使在Internet节点间传输途中截获数据,截获者也不可能使用该数据,因为他无法解密数据。加密和解密都是用一个密钥和一个过程(将密钥应用于数据)来完成的。加密最开始并不是为Internet开发的一个过程。凯撒将军在战争期间对他发送给战地将领的消息采用原始的加密过程。直到20世纪70年代中期,加密和解密都使用相同的密钥。因为发送和接收双方使用相同的密钥,所以最初的问题是如何将密钥从发送者传送到接收者。这一问题于1976年由斯坦福大学的WhitfieldDiffie和MartinHellman解决,他们研制出了公钥加密。在公钥加密中使用公钥和私钥,公钥用来加密消息,私钥用来解密消息。通信者,比方说Joe,拥有一对反向相关密钥,即一个公钥和一个私钥。公钥可以分发到有可能发送消息给Joe的所有组织。他们都可以使用这一公钥来加密发送给Joe的消息,而Joe能够用自己匹配的私钥来解密消息。这是可行的,因为绝不需要传送私钥,且根据公钥计算私钥实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论