描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787302384243丛书名: (国外计算机科学经典教材)
◆ Web编程基础知识
◆ XHTML和CSS
◆ JavaScript的核心内容
◆ Flash开发环境
◆ PHP和Ajax技术
◆ Ruby编程语言和Rails框架
◆ Android软件开发与ASP.NET简介
◆ Java和Java applet
1.1 Internet简介
1.1.1 起源
1.1.2 Internet的含义
1.1.3 IP地址
1.1.4 域名
1.2 万维网
1.2.1 起源
1.2.2 Web还是Internet
1.3 Web浏览器
1.4 Web服务器
1.4.1 Web服务器操作
1.4.2 服务器的一般特性
1.4.3 Apache
1.4.4 IIS
1.5 统一资源定位符
1.5.1 URL的格式
1.5.2 URL路径
1.6 多用途网际邮件扩充协议
1.6.1 类型说明
1.6.2 实验性文档类型
1.7 超文本传输协议
1.7.1 请求阶段
1.7.2 响应阶段
1.8 安全性
1.9 Web编程工具箱
1.9.1 HTML概述
1.9.2 创建HTML文档的工具
1.9.3 插件和过滤器
1.9.4 XML概述
1.9.5 JavaScript概述
1.9.6 Flash概述
1.9.7 PHP概述
1.9.8 Ajax概述
1.9.9 Servlet、JavaServer Pages和JavaServer Faces概述
1.9.10 ASP.NET概述
1.9.11 Ruby概述
1.9.12 Rails概述
1.10 本章小结
1.11 复习题
1.12 练习题
第2章 HTML/XHTML简介
2.1 HTML和XHTML的起源和演变
2.1.1 HTML和XHTML的版本
2.1.2 HTML与XHTML
2.2 基本语法
2.3 HTML文档的标准结构
2.4 基本的文本标记
2.4.1 段落
2.4.2 换行
2.4.3 保留空白字符
2.4.4 标题
2.4.5 文本块引用
2.4.6 字体样式与大小
2.4.7 字符实体
2.4.8 水平线
2.4.9 meta元素的其他用法
2.5 图片
2.5.1 图片格式
2.5.2 元素
2.5.3 XHTML文档的验证
2.6 超链接
2.6.1 链接
2.6.2 位于文档内部的目标
2.6.3 使用链接
2.7 列表
2.7.1 无序列表
2.7.2 有序列表
2.7.3 定义列表
2.8 表格
2.8.1 基本的表格标签
2.8.2 rowspan与colspan特性
2.8.3 表格分块
2.8.4 表格的使用
2.9 表单
2.9.1 form元素
2.9.2 input元素
2.9.3 select元素
2.9.4 textarea元素
2.9.5 动作按钮
2.9.6 一个完整的表单示例
2.10 audio元素
2.11 video元素
2.12 组织元素
2.13 time元素
2.14 HTML与XHTML之间的语法差异
2.15 本章小结
2.16 复习题
2.17 练习题
第3章 层叠样式表
3.1 简介
3.2 样式表的层次
3.3 样式说明格式
3.4 选择器格式
3.4.1 简单的选择器格式
3.4.2 类选择器
3.4.3 通用选择器
3.4.4 id选择器
3.4.5 上下文选择器
3.4.6 伪类
3.4.7 通配选择器
3.5 属性值的格式
3.6 字体属性
3.6.1 字体族
3.6.2 字体大小
3.6.3 字体变体
3.6.4 字体样式
3.6.5 字体粗细
3.6.6 简写字体属性
3.6.7 文本修饰
3.6.8 文本间距
3.7 列表属性
3.8 文本对齐
3.9 颜色
3.9.1 颜色组
3.9.2 color属性
3.10 盒模型
3.10.1 边框
3.10.2 内边距和外边距
3.11 背景图片
3.12 标签和
标签
3.13 冲突解决方案
3.14 本章小结
3.15 复习题
3.16 练习题
第4章 JavaScript基础知识
4.1 JavaScript概述
4.1.1 起源
4.1.2 JavaScript与Java
4.1.3 JavaScript的用途
4.1.4 浏览器和HTML/JavaScript文档
4.2 面向对象和JavaScript
4.3 一般的语法特征
4.4 基本数据类型、操作和表达式
4.4.1 基本数据类型
4.4.2 数值型和字符串字面量
4.4.3 其他基本数据类型
4.4.4 声明变量
4.4.5 数值运算符
4.4.6 Math对象
4.4.7 Number对象
4.4.8 字符串连接运算符
4.4.9 隐式类型转换
4.4.10 显式类型转换
4.4.11 String属性和方法
4.4.12 typeof运算符
4.4.13 赋值语句
4.4.14 Date对象
4.5 屏幕输出和键盘输入
4.6 控制语句
4.6.1 控制表达式
4.6.2 选择语句
4.6.3 switch语句
4.6.4 循环语句
4.7 创建和修改对象
4.8 数组
4.8.1 创建Array对象
4.8.2 Array对象的特征
4.8.3 Array方法
4.9 函数
4.9.1 基础知识
4.9.2 局部变量
4.9.3 参数
4.9.4 复习sort方法
4.10 示例1
4.11 构造函数
4.12 利用正则表达式进行模式匹配
4.12.1 字符和字符类模式
4.12.2 锚
4.12.3 模式修饰符
4.12.4 String对象中的其他模式匹配方法
4.13 示例2
4.14 脚本中的错误
4.15 本章小结
4.16 复习题
4.17 练习题
第5章 JavaScript与HTML文档
5.1 JavaScript的执行环境
5.2 文档对象模型
5.3 在JavaScript中访问元素
5.4 事件与事件处理
5.4.1 事件处理的基本概念
5.4.2 事件、特性和标签
5.5 处理主体元素的事件
5.6 处理按钮元素的事件
5.7 处理文本框和密码框元素的事件
5.7.1 focus事件
5.7.2 验证表单输入
5.8 DOM 2事件模型
5.8.1 事件传播
5.8.2 事件处理程序的注册
5.8.3 DOM 2事件模型示例
5.9 canvas元素
5.10 navigator对象
5.11 DOM树的遍历和修改
5.11.1 DOM树的遍历
5.11.2 DOM树的修改
5.12 本章小结
5.13 复习题
5.14 练习题
第6章 利用JavaScript开发动态文档
6.1 简介
6.2 元素定位
6.2.1 定位
6.2.2 相对定位
6.2.3 静态定位
6.3 移动元素
6.4 元素可见性
6.5 修改颜色和字体
6.5.1 修改颜色
6.5.2 修改字体
6.6 动态内容
6.7 堆叠元素
6.8 定位鼠标光标
6.9 响应鼠标单击
6.10 缓慢移动元素
6.11 拖放元素
6.12 本章小结
6.13 复习题
6.14 练习题
第7章 XML简介
7.1 简介
7.2 XML的用途
7.3 XML语法
7.4 XML文档结构
7.5 名称空间
7.6 XML架构
7.6.1 架构的基本原理
7.6.2 架构的定义
7.6.3 定义架构实例
7.6.4 数据类型概述
7.6.5 简单类型
7.6.6 复杂类型
7.6.7 架构实例的验证
7.7 显示没有格式化的XML文档
7.8 通过CSS显示XML文档
7.9 XSLT样式表
7.9.1 XSLT概述
7.9.2 用于表现的XSL转换
7.10 XML处理器
7.10.1 XML处理器的用途
7.10.2 SAX方式
7.10.3 DOM方式
7.11 Web服务
7.12 本章小结
7.13 复习题
7.14 练习题
第8章 Flash简介
8.1 Flash的起源与用途
8.2 初步了解Flash创作环境
8.3 绘图工具
8.3.1 预定义图形
8.3.2 线条和徒手画
8.3.3 文本
8.3.4 导入图形
8.3.5 元件和库
8.4 静态图形
8.5 动画和声音
8.5.1 动画简介
8.5.2 移动图形
8.5.3 更多动画
8.5.4 形状动画
8.5.5 声音
8.6 用户交互
8.6.1 动作
8.6.2 示例
8.7 小结
8.8 复习题
8.9 练习题
第9章 PHP简介
9.1 PHP的起源和用途
9.2 PHP概述
9.3 基本语法特征
9.4 基本数据类型、操作和表达式
9.4.1 变量
9.4.2 整数类型
9.4.3 双精度类型
9.4.4 字符串类型
9.4.5 布尔类型
9.4.6 算术运算符和表达式
9.4.7 字符串操作
9.4.8 标量类型转换
9.4.9 赋值运算符
9.5 输出
9.6 控制语句
9.6.1 关系运算符
9.6.2 布尔运算符
9.6.3 选择语句
9.6.4 循环语句
9.6.5 示例
9.7 数组
9.7.1 创建数组
9.7.2 访问数组元素
9.7.3 数组处理函数
9.7.4 数组元素的按序访问
9.7.5 数组排序
9.8 函数
9.8.1 函数的基本特征
9.8.2 参数
9.8.3 变量的作用域
9.8.4 变量的生命周期
9.9 模式匹配
9.10 表单处理
9.11 cookie
9.11.1 cookie简介
9.11.2 PHP对cookie的支持
9.12 会话跟踪
9.13 本章小结
9.14 复习题
9.15 练习题
第10章 Ajax简介
10.1 Ajax概述
10.1.1 Ajax的历史
10.1.2 Ajax技术
10.1.3 实现Ajax
10.2 Ajax基础知识
10.2.1 应用程序
10.2.2 表单文档
10.2.3 请求阶段
10.2.4 响应文档
10.2.5 接收器阶段
10.2.6 跨浏览器支持
10.3 返回文档的格式
10.3.1 HTML
10.3.2 XML
10.3.3 JavaScript Object Notation
10.4 Ajax工具包
10.4.1 Dojo
10.4.2 示例
10.4.3 Prototype
10.5 安全性与Ajax
10.6 本章小结
10.7 复习题
10.8 练习题
第11章 Java Web软件
11.1 Servlet简介
11.1.1 概述
11.1.2 详解
11.1.3 Servlet容器
11.2 NetBeans集成开发环境
11.3 调查表示例
11.4 在客户端存储信息
11.4.1 cookie
11.4.2 Servlet对cookie的支持
11.4.3 示例
11.5 JSP
11.5.1 开发JSP的动机
11.5.2 JSP文档
11.5.3 表达式语言
11.5.4 JSTL中用于控制的动作元素
11.6 JavaBean
11.7 模型-视图-控制器应用体系结构
11.8 JSF
11.8.1 标签库
11.8.2 JSF事件处理
11.8.3 示例应用程序
11.9 本章小结
11.10 复习题
11.11 练习题
第12章 ASP.NET简介
12.1 .NET Framework概述
12.1.1 背景
12.1.2 .NET语言
12.1.3 公共语言运行库
12.1.4 公共语言基础结构
12.2 C#简介
12.2.1 起源
12.2.2 基本数据类型和表达式
12.2.3 数据结构
12.2.4 控制语句
12.2.5 类、方法和结构
12.2.6 异常处理
12.2.7 特性
12.2.8 输出
12.3 ASP.NET简介
12.3.1 基本知识
12.3.2 ASP.NET文档
12.3.3 代码隐藏文件
12.4 ASP.NET控件
12.4.1 Web控件
12.4.2 简单ASP.NET文档的生命周期
12.4.3 Visual Studio
12.4.4 ASP.NET事件
12.4.5 用代码创建控件元素
12.4.6 控件的响应输出
12.4.7 列表控件
12.4.8 验证控件
12.4.9 主文档
12.5 ASP.NET AJAX
12.6 Web服务
12.6.1 构建Web服务
12.6.2 使用Web服务
12.6.3 传播Web服务
12.7 本章小结
12.8 复习题
12.9 练习题
第13章 基于Web的数据库访问
13.1 关系数据库
13.2 结构化查询语言简介
13.2.1 SELECT命令
13.2.2 连接
13.2.3 INSERT命令
13.2.4 UPDATE命令
13.2.5 DELETE命令
13.2.6 DROP命令
13.2.7 CREATE TABLE命令
13.3 数据库访问的体系结构
13.3.1 客户端-服务器体系结构
13.3.2 Microsoft ODBC体系结构
13.3.3 PHP和数据库访问
13.3.4 Java JDBC体系结构
13.4 MySQL数据库系统
13.5 使用PHP和MySQL实现数据库访问
13.5.1 特殊字符的潜在问题
13.5.2 连接MySQL并选择数据库
13.5.3 请求MySQL操作
13.5.4 PHP-MySQL示例
13.6 使用JDBC和MySQL实现数据库访问
13.6.1 JDBC和MySQL
13.6.2 元数据
13.6.3 示例
13.7 使用ASP.NET和MySQL实现数据库访问
13.7.1 MySQL和ADO.NET
13.7.2 数据绑定
13.7.3 连接字符串
13.8 本章小结
13.9 复习题
13.10 练习题
第14章 Android软件开发
14.1 概述
14.2 工具
14.3 Android应用程序的体系结构
14.3.1 活动
14.3.2 视图文件
14.3.3 Intent
14.3.4 实现
14.4 Android应用程序的执行模型
14.5 视图组
14.6 简单视图
14.6.1 TextView元素
14.6.2 EditText元素
14.6.3 Button元素
14.6.4 小部件的事件和事件处理程序
14.7 示例应用程序
14.8 在Android设备上运行应用程序
14.9 使用Intent类调用其他活动
14.10 示例应用程序:第二个活动
14.11 更多小部件
14.11.1 ToggleButton
14.11.2 Checkbox
14.11.3 RadioButton
14.12 处理列表
14.12.1 ListView视图组
14.12.2 一个使用ListView和ArrayAdapter的示例
14.13 数据持久化
14.14 调试应用程序
14.15 本章小结
14.16 复习题
14.17 练习题
第15章 Ruby简介
15.1 Ruby的起源与用途
15.2 标量类型及其操作
15.2.1 数值与字符串字面量
15.2.2 变量和赋值语句
15.2.3 数值运算符
15.2.4 String类的方法
15.3 简单的输入输出
15.3.1 屏幕输出
15.3.2 键盘输入
15.4 控制语句
15.4.1 控制表达式
15.4.2 选择语句和循环语句
15.5 数组基础
15.5.1 for-in语句
15.5.2 数组和列表的内置方法
15.5.3 示例
15.6 散列
15.7 方法
15.7.1 基础知识
15.7.2 方法中的局部变量
15.7.3 参数
15.8 类
15.8.1 类的基础知识
15.8.2 访问控制
15.8.3 继承
15.9 块和迭代器
15.10 模式匹配
15.10.1 模式匹配的基础知识
15.10.2 存储匹配
15.10.3 替换
15.11 本章小结
15.12 复习题
15.13 练习题
第16章 Rails简介
16.1 Rails概述
16.2 文档请求
16.2.1 静态文档Hello World
16.2.2 动态文档
16.3 使用数据库的Rails应用程序
16.3.1 构建基本应用程序
16.3.2 完成应用程序
16.3.3 修改数据库
16.3.4 布局和样式表
16.4 本章小结
16.5 复习题
16.6 练习题
附录A Java简介
附录B 命名颜色及其十六进制值
万维网(World Wide Web,WWW)使我们的日常生活发生了翻天覆地的变化。在短短20年中,我们已经学会了利用Web完成各种日常事情——从平常购买机票到一大早起来收集与高风险的短线交易相关的商业信息。
在过去20年中,全球已经出现了数百万个Web站点,这些站点的发展速度可能会使人们误认为网站的开发技术已经达到极限,甚至有人认为在Web出现之前,这些网站开发技术就已经出现并随时可供使用。此外,还有一些人可能认为数以万计的网站开发人员已经处于失业状态,他们正在等待新的就业机会,而且这些人在网站开发技术出现之初就已经拥有了完成此项庞大构建任务所需的知识和能力。实际上,这两种想法都是错误的。不管是当前企业中的企业家,还是正准备创业的创业者,都非常需要新技术。而且,在这个领域中不断有程序员加入,至少在某种程度上,对程序员的需求缺口有很大一部分被刚从高校毕业的新程序员填满了。其中也有很多人拥有软件开发行业的工作经验。无论如何,所有这些程序员都必须学习使用新的语言和技术。
无论是传统书店还是网上书店,都有很多针对Web开发技术的书籍,它们一般都是面向具有实践经验的专业人员。但在大学的Web编程技术的教学过程中遇到的一个困难是没有一本恰当的教科书能够满足教学需求。这方面的绝大多数书籍都是针对专业人员而不是针对大学生来讨论Web编程。这样的书籍一般都是以专业人员为读者对象,而针对专业人员和针对学生的书籍有很大的区别,主要区别在于作者假设读者已有一定的知识和经验。专业人员的知识背景差别很大,很难做出准确的假设。但在面向计算机科学专业的低年级学生撰写书籍时,却可以对读者的知识背景做出准确假设。
本书面向高校学生(不仅是计算机科学专业的学生,也包括学习过至少两门相关编程课程的学生)。尽管本书主要面向学生,但对于那些希望学习Web编程的专业人员也很有帮助。
本书旨在向读者全面介绍建立和维护Web服务器站点所必需的工具和技术,其中大部分技术是用于构建Web站点的。针对这些技术,已经有很多面向专业人员的书籍进行了介绍。比如,现在有很多专门讨论HTML的书籍。实际上,对于其他Web技术来说也是一样的。本书简单介绍了Web的工作原理,并讨论了一些应用广泛的Web技术。
本书的前7版作为科罗拉多大学科罗拉多斯普林司分校(University of Colorado at Colorado Springs)的低年级Web编程课程教材。这门课程的目标是让学生在一个学期内集中掌握不同的编程语言和技术。为了达到这个目标,就必须进行大量的编程练习。首先,在开始阶段,学生必须仅利用HTML来建立一个基本的静态Web站点。在后期可以利用课程中讨论的新技术为这个静态站点添加功能。在学习本书前,学生好已经学习过Java编程、数据结构、C语言和汇编语言,因为这些知识对于本课程的学习很有帮助。事实上,有很多学生在学习这门课程之前就已经自学了HTML的一些相关知识。
学习本书之前,重要的预备知识是要掌握某种语言的编程技术,而这种语言必须能够支持面向对象编程。对其他编程语言和UNIX有所了解也会对本书的学习有益,如果学习中使用了基于UNIX的Web服务器,情况尤为如此。熟悉其他编程语言也能够使新语言的学习变得更加轻松。
第8版中的新增内容
● 第2章 新增了对input元素的新类型特性值的讨论,即url、email和range特性,见2.9.2节。
● 第3章 讨论了新增的4个选择器:first-child、last-child、only-child和empty,见3.4.5节。
● 第5章 扩展了第5.9节“canvas元素”,对该元素的讨论篇幅从原来的13行增加到三页半,并且还新增了3个图。
● 第7章新增了7.2节“XML的用途”,该节简要讨论了XML的一些应用领域。该章删掉了原来的第7.4节“文档类型定义”。
● 第12章新增了12.2.7节“特性”。
● 第14章“Android软件开发”是全新的一章。
本书内容
第1章是本书的基础。主要介绍一些基础知识,包括Internet的历史和本质、World Wide Web、浏览器、服务器、URL、MIME类型和HTTP。该章还简要介绍了本书其余章节中的一些重要主题。
第2章介绍HTML,包括图片、链接、列表、表格、表单、音频和视频元素,有组织的元素,以及时间元素。其中列举了一些小示例来说明本章中的这些HTML元素。
第3章介绍层叠样式表,CSS是对HTML标签中指定的内容应用样式的标准方式。考虑CSS的内容和复杂程度,该章并没有涵盖样式表的所有方面,只介绍了样式表的层次、样式说明格式、选择器格式、属性值和颜色。属性值可以设置字体、列表以及元素边距。该章也列举了一些简短示例来解释这些内容。
第4章介绍JavaScript的核心概念,JavaScript是一种功能非常强大的语言,可用于多种不同的应用程序中。当然,本书只探讨它在Web编程中的应用。虽然JavaScript已经变得非常庞大和复杂,但是,我们将通过学生掌握的其他编程语言知识来促进对JavaScript的学习。因此,该章将用较短的篇幅来介绍这种编程语言。该章涵盖的主题包括JavaScript的对象模型、控制语句、对象、数组、函数、构造函数以及模式匹配。
第5章讨论JavaScript中与HTML文档相关的一些特性。这些特性包括基础知识、DOM 2事件以及事件处理模型,它们可以与HTML文档的一些元素结合使用。该章还介绍了HTML的canvas元素。
JavaScript在Web编程中有趣的应用,可能就是利用文档对象模型来建立动态的HTML文档。第6章将描述如何利用JavaScript和DOM实现各种文档的修改。其中包括元素定位;元素移动;修改元素的可见性;修改文本的颜色、样式与大小;修改标记的内容;修改重叠元素的顺序;缓慢移动元素以及拖放元素。
第7章介绍XML,XML可用于设计与主题相关的标记语言,这些语言可以在一些有着共同爱好的用户中共享。该章涵盖的主题包括XML的语法和文档结构、数据类型定义、名称空间和XML模式。接着将介绍如何显示那些同时利用CSS和XML转换方式来控制格式的XML文档。该章还介绍了Web服务和XML处理器。
第8章介绍Flash开发环境,该环境用于创建各种视频和音频演示文件,特别是包括动画的演示文件。该章用一系列示例演示了开发过程,包括绘制图形、创建文本、使用颜色、创建动作和形状动画、添加音轨到演示文件中,以及设计供用户控制Flash影片的组件。
第9章介绍PHP。PHP是目前广泛流行的一种服务器端脚本语言,尤其是作为Web应用程序的数据库访问语言。该章讨论PHP的基础知识,以及cookie和会话跟踪的用法。PHP作为Web数据库访问语言的应用将在第13章中介绍。
第10章介绍Ajax,这是一种较新的技术,它可以更高效地构建具有大量用户交互的Web应用。除了详细介绍Ajax交互的概念和实现外,该章还讨论了返回文档的格式、Ajax工具包和Ajax安全性,并且通过一些示例演示了Ajax的用法。
第11章讨论Java Web软件。该章介绍构建Java Servlet的原理,并利用几个示例来说明Servlet如何应用于交互式Web文档。同时介绍并在整个章节中使用了NetBeans框架。之后在示例的引导下讲解使用Servlet在客户端中保存信息的方法—— 即cookie,并利用示例加以说明。然后,利用一系列示例来介绍JSP,包括代码隐藏文件的使用。后讨论了JavaBeans和JavaServer Faces,并通过示例说明它们的用法。
第12章介绍ASP.NET。 该章首先简单介绍.NET Framework和C#语言。 接着介绍ASP.NET Web控件和许多ASP.NET事件以及如何处理它们,还讨论了ASP.NET AJAX。后将介绍利用ASP.NET构建Web服务。还介绍了Visual Studio,并使用它们开发所有ASP.NET示例。
第13章介绍基于Web的数据库访问技术。该章首先将介绍关系数据库的本质、数据库访问的体系结构、结构化查询语言(SQL)以及免费的数据库系统MySQL。然后将讨论三种基于Web的数据库访问技术,即利用PHP、Java JDBC和ASP.NET的数据库访问技术。这三种方法都通过完整示例加以演示。本章所有示例程序都使用了MySQL。
第14章介绍Android应用程序的开发。其中介绍了视图文档的基础知识与活动(activity),前者采用基于XML的标记语言编写,后者采用Java编写。该章通过几个相对简单的示例来说明这种为移动设备构建Web应用程序的新方法。
第15章介绍Ruby编程语言。该章的内容包括标量类型及其操作、控制语句、数组、散列、方法、类、代码块、迭代器以及模式匹配。当然,Ruby的内容不止这些。但是,该章涵盖的内容足以帮助学生使用Ruby构建简单程序和Rails应用程序。
第16章介绍Rails框架,通过此框架可以较为便捷地构建Web应用程序。该章的内容包括简单文档请求(包括静态和动态)和使用数据库的应用程序(包括使用scaffolding)。
附录A针对熟悉C++语言和面向对象编程的读者介绍了Java语言。不懂Java的学生可以从该附录中学到一些Java方面的知识,这些知识已经足以帮助学生理解本书中的Java applet、Servlet、JSP和JDBC。
附录B列出了140多种命名颜色及其十六进制编码。
可用资源
Pearson的网站www.pearsonhighered.com/sebesta中提供了本书的一些附加材料。本书所有读者都可以使用的资源包括:
● PowerPoint文件格式的一系列讲稿,这一系列讲稿是根据本书内容针对课堂教学而开发的。
● 示例程序的源代码。
其他一些可用资源,包括本书部分习题的答案和书中的图,只对教师们是可用的。
可用软件
本书介绍的绝大部分软件系统都可供学生们免费使用。如浏览器,实际上它是JavaScript解释器和XML解析器。同样,PHP、Ruby和Java语言处理器,以及Rails框架、支持Servlet的Java类库、Java JDBC和Android Development系统都是免费可得的。 ASP.NET所需的.NET框架支持也可从Microsoft中获取。Visual Studio的非商用版本Visual Web Developer 2013可以从Microsoft免费获取。Flash开发环境可以从Adobe获得并可以免费试用30天。
第8版和第7版的区别
本书的第8版与第7版存在以下显著区别。
第2章新增了对input元素的url、email和range特性的讨论。
第3章讨论了新增的4个选择器:first-child、last-child、only-child和empty。
第5章新增了对canvas元素的讨论,对该元素的讨论篇幅从原来的一段增加到三页半,并且还新增了3个图。
第7章新增了“XML的用途”一节,该节简要讨论了XML的一些应用领域。该章删掉了原来的第7.4节“文档类型定义”。
第12章新增了“特性”一节,讨论了C#中的特性。
第14章“Android软件开发”是本书新增的全新章节,介绍了Android应用程序的结构以及开发过程。该章也讨论了调用其他活动和数据持久性的用途。
全书对第7版的内容做了大量细致入微的修改,增加和删除了小部分内容,以便提高内容的准确性和清晰度。
致谢
本书的审阅者们提出了大量的建议和修改意见,从而进一步提高了本书的质量。具体审阅者有:
Lynn Beighley Peter S. Kimble
University of Illinois
R. Blank
CTO, Almer/Blank; Training Director,
The Rich Media Institute; Faculty,
USC Viterbi School of Engineering Mark Llewellyn
University of Central Florida
Stephen Brinton
Gordon College Chris Love
ProfessionalASPNET.com
David Brown
Pellissippi State Technical Community
College Gabriele Meiselwitz
Towson University
Barry Burd
Drew University Eugene A. “Mojo” Modjeski
Rose State College
William Cantor
Pennsylvania State University Najib Nadi
Villanova University
Dunren Che
Southern Illinois University Carbondale Russ Olsen
Brian Chess
Fortify Software Jamel Schiller
University of Wisconsin—Green Bay
Randy Connolly
Mount Royal University Stephanie Smullen
University of Tennessee at
Chattanooga
Mark DeLuca
Pennsylvania State University Marjan Trutschl
Louisiana State
University—Shreveport
Sanjay Dhamankar
President, OMNIMA Systems, Inc. J. Reuben Wetherbee
University of Pennsylvania
Marty Hall Christopher C. Whitehead
Columbus State University
衷心感谢执行编辑Matt Goldstein、编辑助理Kelsey Loanes、产品项目经理Kayla Smith- Tarbox给予我的鼓励,感谢他们帮助我完成本书。
基 础 知 识
随着万维网的出现,工业化国家的绝大部分居民和非工业化国家的一部分居民的生活已经发生了永久性的变化。虽然万维网也带来了一些负面影响——例如,访问和参与赌博变得更容易了,有害思想的传播也有了更便捷的通道——但是,万维网带来的巨大影响总体上是正面的。很多人都在日常生活中使用Internet和万维网,包括通过E-mail和社交网站来联系亲朋好友和商业伙伴,在任何地方都几乎可以购买任何商品,搜索取之不竭的各类信息,这些信息包括从电影院的放映时间表到几乎全球所有城市宾馆的住宿价格,甚至还包含一些生活在偏远地区的少数民族的历史文化特色。近年来,社交网络已被有效地用来组织社会和政治游行,甚至于组织革命。创建用于提供所有这些信息的软件和数据需要用到几种不同的技术,如标记语言和元标记语言,以及利用多种不同编程语言的编程技术,其中有一些是专门针对万维网的,另一些则是为通用计算而设计的。为了能够获取构建万维网站点所需的知识和技术,本书提供了必要的背景和基础知识,使构建的万维网站点不仅可以呈现用户所需的信息,还能发布商业广告。
本章是本书其余章节的基础。首先介绍Internet和万维网的部分发展历史。接下来讨论Web浏览器和服务器的作用和一些特征。然后将描述统一资源定位符(Uniform
Resource Locator,URL),URL为Web中的可用资源指定了地址。接下来将介绍多用途网际邮件扩充协议(Multipurpose Internet Mail Extension,MIME),它定义具有不同类型内容的文件的文件类型和文件扩展名。此后将讨论超文本传输协议(Hypertext Transfer Protocol,HTTP),它提供了浏览器和Web服务器之间连接的通信接口。本章后将简单介绍Web程序员常用的一些工具,包括HTML、XML、JavaScript、Flash、Servlet、JSP、JSF、ASP.NET、PHP、Ruby、Rails以及Ajax。所有这些工具都将在本书的后续章节中详细介绍(第2章和第3章将讨论HTML;第4章、第5章和第6章将讨论JavaScript;第7章将讨论XML;第8章将讨论Flash;第9章将讨论PHP;第10章将讨论Ajax;第11章将讨论Servlet、JSP和JSF;第14章和第15章将讨论Ruby;第15章将讨论Rails)。
1.1 Internet简介
本书讨论的所有主题都与Internet有关。因此,首先简单讨论一下Internet本身。
1.1.1 起源
20世纪60年代,美国国防部(Department of Defense,DoD)开始对开发一种新的大规模计算机网络产生兴趣。开发这样的一个网络,其目的在于为从事与国防相关合同项目的研究人员提供通信、程序共享和远程计算机访问等功能。这种网络的一个基本要求是必须足够可靠,即使当其中的某些节点由于敌方破坏、战争和其他原因而失去作用后,整个网络还可以继续运行。DoD的ARPA(Advanced
Research Projects Agency)提供经费支持了个这种网络的构建,这个网络将ARPA支持的大约12个实验室和大学连接在一起。该网络中的个节点是1969年在UCLA建立的。
由于这个网络是由ARPA提供经费支持的,因此被命名为ARPAnet。尽管初的设计目标很多,但是这个网络一开始主要是通过E-mail进行基于文本的简单通信。由于ARPAnet只是在ARPA资助的实验室和大学中可用,因此绝大部分教育机构并没有连接进来。所以,20世纪70年代后期和80年代早期又开发了很多其他网络,其中包括BITNET和CSNET。BITNET是Because
It’s Time Network的缩写,是由纽约城市大学(City University of New York)首创。该网络的初衷是提供电子邮件和文件传输功能。CSNET是Computer
Science Network的缩写,它将特拉华大学(University
of Delaware)、普渡大学(Purdue
University)、威斯康星大学(University
of Wisconsin)、兰德公司(RAND
Corporation)、Bolt、Beranek以及Newman(马萨诸塞州坎布里奇市的一家研究公司)连接在一起。该网络初的设计目标是提供电子邮件功能。由于各种原因,BITNET和CSNET都没有发展成为占有优势的全国性网络。
1986年出现了一个新的全国性的网络NSFnet,顾名思义,这是由美国国家科学基金会(National Science
Foundation,NSF)出资赞助的。NSFnet初连接了NSF赞助下的位于5个大学中的超级计算机中心。但是,在该网络建立后不久,其他学术机构和实验室也开始使用该网络。到1990年,NSFnet在绝大部分非军事领域应用中已经取代了ARPAnet,大量组织成为NSFnet中的节点—— 到1992年,NSFnet已经连接了全球中一百万台以上的计算机。1995年,NSFnet中的一小部分网络重新成为学术网络。其余部分就成为著名的Internet,虽然这一术语很早就已经在ARPAnet和NSFnet中使用过了。
1.1.2 Internet的含义
Internet是在一个通信网络中连接的计算机的大规模集合。这些计算机的大小、配置和制造商都是我们熟知的。实际上,连接到Internet中的一些设备——如绘图机和打印机——
根本就不是计算机。能够使所有这些不同的设备通过Internet进行通信的创新之举是一个单独的、低层的协议,即传输控制协议/Internet协议(Transmission Control Protocol/Internet Protocol,TCP/IP)。TCP/IP在1982年成为计算机网络连接的标准协议,它允许某台计算机中的程序通过Internet直接和另一台计算机中的程序进行通信。但在绝大多数情况下,在TCP/IP之上还要运行一个较高层的协议。即便如此, TCP/IP为连接到Internet的计算机(及其他设备)提供了低层的通信接口也是非常重要的。
一般情况下,同一个组织中的多台计算机并不是直接连接到Internet中的每台计算机上的,而是相互连接构成了一个局域网,然后这个局域网中的一个节点物理连接到Internet中。因此,Internet实际上并不是计算机的网络,而是网络的网络。
很明显,必须可以地标识出所有连接到Internet的设备。
1.1.3 IP地址
对于我们来说,Internet节点是通过名称进行标识的;而对于计算机来说,它们是通过数字地址进行标识的。这种机制类似于程序中的变量名和变量的数字内存地址之间的关系。我们是通过变量名来标识变量,计算机则是通过变量的数字形式的内存地址来标识变量。
计算机接入到Internet的IP地址是一个的32位数字。通常IP地址会写为(并认为)是由4个8位数字,中间用西文句点分隔而成的。IP地址中的这4个部分则分别由不同的Internet路由计算机解析,然后确定某个消息下一步只有去往何处才能终到达目的地。
不同的组织分配了不同的IP块,然后再细分给所有需要接入到Internet的计算机——
现在几乎所有的计算机都连接到了Internet。例如,一个较小的组织可能被分配了256个IP地址,可能是191.57.126.0~191.57.126.255。一些大型组织,如美国国防部,可能被分配了1600万个IP地址,这些IP地址的个8位数是特殊的,如12.0.0.0~12.255.255.255。
虽然人们几乎总是在浏览器中输入域名,但并不影响IP的正常工作。例如,美国联合航空公司(United Airlines,其网址是www.ual.com)的IP地址是209.87.113.93。因此,如果在浏览器中输入http:// 209.87.113.93,就能连接到美国联合航空公司的网站。
1998年底,一个新的IP标准IPv6获得批准,但它尚未广泛实现。IPv6重要的变化是将IP地址从32位扩展为128位。这个变化是非常必要的,因为剩余的尚未启用的IP地址数量正在快速减少。
1 ARPA在1972年更名为美国国防高级研究计划局(Defense Advanced
Research Projects Agency,DARPA)。
TCP/IP并非Internet所采用的通信协议——有时也选用UDP/IP。
评论
还没有评论。