本书是一本全面讲述构建基于浏览器-服务器三层架构应用系统的教材,所采用的技术路线是流行的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/IP4
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 超文本标记语言——HTML14
1.2.2 URI、URL和URN15
1.2.3 超文本传输协议——HTTP15
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和XHTML25
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章 JavaScript77
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 浏览器顶层对象window108
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 .NET142
5.1.2 PHP143
5.1.3 Servlet/JSP的优势143
5.2 Servlet144
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例子——Login178
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 标记235
8.1.3 标记237
8.1.4 Web应用中的使用239
8.2 Servlet中的线程安全242
8.2.1 Servlet的多线程机制243
8.2.2 Servlet的线程安全问题243
8.2.3 设计线程安全的Servlet245
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章 XML254
9.1 XML简介254
9.1.1 SGML和XML254
9.1.2 XML和XHTML255
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 DTD269
9.3.1 创建元素和内容模式269
9.3.2 属性的声明274
9.3.3 实体的声明279
9.3.4 DTD的类型283
9.4 XML Schema285
9.4.1 XML Schema的由来285
9.4.2 XML Schema的发展285
9.4.3 初识XML Schema285
9.4.4 XML Schema语法286
9.4.5 XML Schema的应用287
9.5 XML文档的显示287
9.5.1 使用CSS287
9.5.2 XSLT简介287
9.6 XML文件的处理289
9.6.1 DOM290
9.6.2 SAX290
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
目录