
本书是一本全面讲述构建基于浏览器-服务器三层架构应用系统的教材,所采用的技术路线是流行的Java Web技术。本书是复旦大学软件学院在计算机应用系统教学研究方面的最新成果,全书共分10章,全面讲述了利用编程语言(Java)构建实用应用系统的方法。
本书分为4个部分:
* 第一部分是第1章,介绍了基于Web的应用系统的一些基本概念;
* 第二部分是第2章~第4章,深入讲述了基于Web的应用系统中浏览器层的主要技术,包括XHTML、CSS、JavaScript;
* 第三部分是第5章~第8章,较为深入地讲述了基于Web的应用系统中服务器端技术。本书采用Java JSP作为实现Web服务器端应用程序的设计语言。这一部分也可以被进一步细分为两小部分:应用服务程序设计(第5章、第7章、第8章)和数据库程序设计(第6章);
* 第四部分是第9章和第10章,介绍了应用系统构建中一些新颖和热门的技术,包括XML技术(第9章)和Ajax技术(第10章)。
本书采用精简而全面的原则进行编著,总结了在大学本科教学中的实践经验,精选了一些对于初学者难以理解并且十分重要的概念进行深入细致的讲解,而对于一些较为简单的技术则简要介绍,力求在有限的篇幅内将构建基于浏览器-服务器三层架构应用系统的技术精髓展现在读者面前。本书也是适于初涉Web应用系统开发的程序员的一本不可多得的教材。
应用系统是信息技术与商业应用需求结合的产物,是最能体现信息技术价值的所在。通用的应用系统构建往往采用两种架构:客户-服务器的两层架构和浏览器-服务器的三层架构。由于基于浏览器服务器的三层架构的应用系统具有便于维护、对客户端的性能要求较低、安全性较高的优点而受到开发人员和企业的广泛欢迎。
本书以三层架构为主线,以Java Web技术为基础,全面讲述应用系统的构建过程和方法。
关于本书
作者在2003年进入大学计算机教学领域,发现当前的Web应用系统开发方面的教学材料和内容相对比较匮乏。
软件工程方面的学生往往在学习完程序设计语言后,不知道如何将所学的知识应用到实际的应用系统开发中。如利用Java如何构建一些常见的应用系统。
学生在进入大学高年级以后,往往只能通过自学或者师长们的带教来学习基于Web的应用系统构建,在学习过程中往往会遇到大量的问题,从而走过一些弯路。比如在Web应用系统开发中,有大量程序设计语言、层出不穷的开发技术,初学者往往不清楚哪些该学习而哪些不该学习。初 学者往往在碰到大量的选择的时候无所适从而产生畏难情绪,影响学习积极性。
本书就是为解决这一问题而编写的。本书是为具有初步编程基础的学生学习Web应用开发技术而编写的,指出了应该学习哪些技术、学习这些技术时会遇到哪些难点及其如何解决、如何配置开发环境和应用程序运行环境等。本书选择流行的Java Web技术作为应用程序开发语言。2006年,本书申请了教育部普通高等教育“十一五”国家级规划教材资助并得到了批准。
通过本书的学习,可以较为全面地了解Web应用系统开发方面的各种基本技术,并以此为基础进而通过网络学习更新的开发技术。
内容导读
本书分为10章,深入浅出地介绍了Web应用技术的方方面面:
第1章 Internet和World Wide Web(WWW,Web)简介,简单介绍Internet的发展历史和相关技术,并介绍Web应用的一些关键概念,如HTTP、URL、Request/Response机制。通过第1章的学习可以了解到WWW和Internet的区别以及Web应用的优势。
第2章 可扩展超文本标记语言(XHTML),介绍可扩展文本标记语言中的重要标记的意义和用法。
第3章 层次样式表(CSS),介绍了CSS的语法以及在XHTML中的调用方法,并介绍重要的属性的意义和用法。
第4章 JavaScript,介绍JavaScript的语法和用法。JavaScript是Web应用系统客户端编程的难点,因此第4章采用了较大篇幅讲解JavaScript技术。
第5章 Servlet和JSP初步,是应用程序开发中服务端技术的初步介绍,利用Servlet和JSP可以开发出初步的动态的客户端服务器交互页面。第5章讲述Servlet的基本概念,包括线程池、Session等。尤其是Session,是三层架构程序设计的难点,书中采用一个较为简单而现实的例子进行讲解。接下去介绍JSP编程的基本语法,及其与JavaBean集合的程序设计方法:利用单元测试测试JavaBean的方法,利用JSP调用JavaBean的方法以实现业务处理和页面表现逻辑的分离。
第6章 数据库初步,讲述关系数据库技术,主要是SQL的历史和用法。SQL语言本身是相当复杂的,本书力求用最简洁的方法将一些关键的命令和用法介绍给读者。
第7章 JDBC和数据库连接池,是第5章讲述的Servlet/JSP技术和第6章讲述的数据库技术的衔接技术,即将Servlet/JSP的处理和数据库的存储有效地结合在一起。JDBC通过一套标准接口为Servlet/JSP提供了将数据存储到数据库中的方法,并实现了高效的查询。数据库连接池可以很好地管理应用程序到数据库的连接,从而提高涉及数据库的Web应用的效率。
第8章 Servlet/JSP高级特性,是第5章内容的延续,主要讲解如何将页面处理进行功能分离的技术,并介绍线程安全概念和JSTL等概念。
第9章 可扩展标记语言(XML),讲述XML技术的概念和用法,包括XML技术的基本语法、DTD的语法、XML文档的显示,及XML技术的应用等。
第10章 Ajax技术简介,讲述当前最为热门的Web编程技术——Ajax技术,力求以最简单的方法将该技术介绍给读者。
本书有3个附录:
附录A 推荐的开发环境,介绍了本书中涉及编程的开发环境。
附录B Tomcat的配置,介绍了Tomcat的配置方法。
附录 C MyEclipse中的Servlet/JSP开发,介绍了如何在MyEclipse中配置开发Servlet/JSP。
对读者的要求
本书适合具有初步编程能力的初学者,包括如下读者:
* 大中专Web应用开发课程的学生;
* 对Web应用开发具有浓厚兴趣的读者。
使用本书所需要具备的基础
本书需要读者具备:
* 较为扎实的Java编程技术;
* 对计算机的使用较为熟练。
致谢
这里首先要感谢复旦大学软件学院的同学对本课程的支持,本书的编写紧密地依靠作者在学院课程教学过程与同学交流过程中获得的经验。
其次要感谢严强、张海立、贾雪瑶、黄朋朋、郭峰、沈剑平等同学在本书编写过程中的努力,他们负责了一些章节的资料收集和整理工作。
最后要感谢清华大学出版社的同志在申请本书作为“普通高等教育‘十一五’国家级规划教材”项目的教材中所做的努力。
技术支持
相关的代码和电子教案可以在清华大学出版社(http://www.tup.com.cn)下载,或者发送电子邮件到weijj@tup.tsinghua. edu.cn索要。
编者
2007年7月
IV
应用系统开发导论
V
第一部分 绪 论
第1章 Internet和World Wide Web简介 2
1.1 Internet简介 2
1.1.1 Internet的定义 4
1.1.2 ISO/OSI 7层协议和TCP/IP 4
1.1.3 IP地址和域名 7
1.1.4 端口和套接字 8
1.1.5 基于Internet的应用系统 10
1.1.6 网络基础结构的发展趋势——三网合一 12
1.2 World Wide Web简介 13
1.2.1 超文本标记语言——HTML 14
1.2.2 URI、URL和URN 15
1.2.3 超文本传输协议——HTTP 15
1.2.4 浏览器(Browser) 17
1.2.5 Web服务器(Web Server) 18
1.3 基于Web的应用系统架构 19
1.3.1 Client/Server两层体系架构 19
1.3.2 Browser/Server三层体系架构 20
1.3.3 分布式体系架构的新方向——Rich Client架构 20
1.4 本书的组织 21
1.5 术语 21
1.6 习题 22
第二部分 浏览器端技术
第2章 可扩展超文本标记语言(XHTML) 24
2.1 标记语言 24
2.1.1 标记与标记语言 24
2.1.2 SGML、HTML、XML和XHTML 25
2.2 HTML的基本组成结构 25
2.2.1 “Hello World” 25
2.2.2 HTML文档的书写规则 26
2.3 基本布局元素 27
2.3.1 基本格式化元素 27
2.3.2 文本格式化 31
2.4 列表 34
2.4.1 无序列表 34
2.4.2 有序列表 35
2.4.3 定义列表 37
2.4.4 列表的嵌套 37
2.5 超链接 38
2.5.1 相对链接和绝对链接 39
2.5.2 页内跳转 40
2.6 Web中的颜色图像 40
2.6.1 Web中的颜色 40
2.6.2 Web中的图像 42
2.7 表格 43
2.7.1 基本表格元素 43
2.7.2 表格标题与列标题元素 44
2.7.3 不规则表格 45
2.8 表单 46
2.8.1 表单元素 47
2.8.2 控件元素 47
2.8.3 表单元素与其他布局元素的综合使用 52
2.9 XHTML和HTML的区别 53
2.10 术语 54
2.11 习题 54
第3章 层次样式表(CSS) 56
3.1 层次样式表基础 56
3.1.1 层次样式表的起源和优点 56
3.1.2 层次样式表基本语法 56
3.2 XHTML与样式表结合的三种方法 57
3.2.1 外部式样式表 57
3.2.2 内嵌式样式表 58
3.2.3 行内样式表 59
3.3 层次样式表高级语法 59
3.3.1 样式表的组合 60
3.3.2 带上下文的样式表 61
3.3.3 样式类 62
3.3.4 样式表的继承和覆盖 65
3.4 层次样式表特性举例 67
3.4.1 颜色与背景 67
3.4.2 元素框属性 69
3.4.3 字体与文本 72
3.4.4 元素绝对定位 75
3.5 术语 75
3.6 习题 76
第4章 JavaScript 77
4.1 JavaScript概述 77
4.1.1 欢迎来到JavaScript的世界 77
4.1.2 JavaScript溯源 78
4.1.3 样例:鼠标跟踪 79
4.1.4 JavaScript特性 82
4.1.5 学习JavaScript必备技能 83
4.2 JavaScript核心 86
4.2.1 基本语法特征 86
4.2.2 JavaScript中的数据 88
4.2.3 JavaScript中的语法 97
4.2.4 常用的库函数示例 102
4.3 JavaScript客户端编程基础 106
4.3.1 浏览器中使用JavaScript的方法 106
4.3.2 浏览器顶层对象window 108
4.3.3 经典文档对象模型(DOM0) 112
4.3.4 标准文档对象模型(W3C DOM) 121
4.3.5 事件与事件处理 126
4.3.6 JavaScript常见错误 133
4.4 JavaScript参考资料 138
4.5 术语 139
4.6 习题 139
第三部分 服务器端技术
第5章 Servlet和JSP初步 142
5.1 回顾B/S架构 142
5.1.1 ASP/ASP .NET 142
5.1.2 PHP 143
5.1.3 Servlet/JSP的优势 143
5.2 Servlet 144
5.2.1 Servlet概述 144
5.2.2 Servlet的一个例子 149
5.2.3 Servlet编程 152
5.3 JSP(Java Server Page) 159
5.3.1 JSP概述 159
5.3.2 JSP基本语法 163
5.3.3 JSP中的JavaBean编程 171
5.3.4 一个简单的JSP例子——Login 178
5.4 Servlet/JSP引擎——Tomcat简介 181
5.5 术语 182
5.6 习题 183
第6章 数据库初步 184
6.1 数据库简介 184
6.2 SQL语言 186
6.2.1 SQL的历史 187
6.2.2 SQL的特点 187
6.2.3 表格创建和删除 188
6.2.4 INSERT语句 189
6.2.5 DELETE语句 190
6.2.6 UPDATE语句 190
6.2.7 SELECT语句 190
6.2.8 聚集函数 191
6.2.9 复杂查询语句的设计 193
6.3 MySQL简介 194
6.3.1 MySQL与其他标准数据库的差异 194
6.3.2 MySQL数据库的基本操作 195
6.4 事务 196
6.4.1 事务的概念 196
6.4.2 事务处理的SQL语句 197
6.4.3 MySQL的事务处理 199
6.4.4 事务和多用户处理 199
6.4.5 锁 200
6.5 MS SQL Server简介 200
6.6 术语 201
6.7 习题 202
第7章 JDBC和数据库连接池 204
7.1 JDBC简介 204
7.1.1 JDBC与ODBC的比较 204
7.1.2 两层模型和三层模型 205
7.1.3 JDBC驱动程序的类型 205
7.2 使用JDBC连接数据库 206
7.2.1 管理数据库连接 206
7.2.2 语句(statement) 207
7.2.3 结果集(ResultSet) 210
7.2.4 JDBC中的事务(transaction)处理 211
7.3 数据库连接池与实现 212
7.3.1 数据库连接池简介 212
7.3.2 配置开发环境 212
7.3.3 数据库连接池的实现 214
7.3.4 Tomcat中的数据库连接池 226
7.4 术语 231
7.5 习题 231
第8章 Servlet/JSP高级特性 233
8.1 JSP中的一些高级指令和标记 233
8.1.1 include指令 233
8.1.2 <jsp:include> 标记 235
8.1.3 <jsp:forward> 标记 237
8.1.4 Web应用中的使用 239
8.2 Servlet中的线程安全 242
8.2.1 Servlet的多线程机制 243
8.2.2 Servlet的线程安全问题 243
8.2.3 设计线程安全的Servlet 245
8.3 JSP中的线程安全 248
8.4 JSTL简介 249
8.4.1 JSTL的优点 249
8.4.2 利用JSTL的一个例子 250
8.5 术语 250
8.6 习题 251
第四部分 应用系统开发的新技术
第9章 XML 254
9.1 XML简介 254
9.1.1 SGML和XML 254
9.1.2 XML和XHTML 255
9.2 XML的语法 256
9.2.1 XML的结构 256
9.2.2 元素 258
9.2.3 属性 260
9.2.4 其他数据类型 261
9.2.5 格式正确性和有效性 264
9.2.6 命名空间 264
9.3 XML DTD 269
9.3.1 创建元素和内容模式 269
9.3.2 属性的声明 274
9.3.3 实体的声明 279
9.3.4 DTD的类型 283
9.4 XML Schema 285
9.4.1 XML Schema的由来 285
9.4.2 XML Schema的发展 285
9.4.3 初识XML Schema 285
9.4.4 XML Schema语法 286
9.4.5 XML Schema的应用 287
9.5 XML文档的显示 287
9.5.1 使用CSS 287
9.5.2 XSLT简介 287
9.6 XML文件的处理 289
9.6.1 DOM 290
9.6.2 SAX 290
9.7 XML技术的小结 291
9.8 术语 292
9.9 习题 293
第10章 Ajax技术简介 294
10.1 老技术,新技巧 295
10.1.1 Ajax的定义 295
10.1.2 Ajax的应用模型 295
10.1.3 Ajax应用实例 297
10.2 XMLHttpRequest对象入门 299
10.2.1 XMLHttpRequest实例的创建 299
10.2.2 XMLHttpRequest对象的方法和属性 301
10.2.3 建立一个简单的Ajax框架 304
10.3 实现与服务器的通信 306
10.3.1 处理服务器响应 306
10.3.2 请求参数的发送 311
10.3.3 服务器端请求处理 312
10.4 Ajax的可用性问题 316
10.5 术语 316
10.6 习题 316
附录A 推荐的开发环境 318
附录B Tomcat的配置 319
附录C MyEclipse中的JSP/Servlet开发 321
X
应用系统开发导论
XI