本书从Java技术的背景和企业系统开发过程开始谈起,然后着眼于J2EE应用开发中需要做的工作,并谈到了一些关键技术。包括Java命名和目录接口、轻型目录访问协议、Java数据库连接、Java服务器端小程序(servlet)、Java服务器页面(JSP)、模型-视图-控制器(MVC)和企业JavaBeans(EJB)。然后又论述了J2EE应用的专用组件,主要集中在JavaMail、Java消息服务(JMS)和可扩展标记语言(XML)。最后还讨论了启用和部署程序所涉及的许多问题。 全书包括19章及三个附录,内容非常全面实用,是企业构建基于Web的应用和分布式应用时非常宝贵的参考资源。
使用J2EE开发应用程序同开发其他类型的应用程序非常相似,但却有自己独特的优势。相似是因为开发过程中的迭代步骤是相同的;真正的优势是指J2EE提供了过程标准,就像数据库标准SQL一样。 J2EE标志着技术成为标准的时刻。同数据库开发中的SQL一样,软件开发供应商大多支持J2EE作为开发企业应用程序的标准。 本书讨论范围 本书的作者都是纽约金融部门计算机解决方案供应商的顾问,平均有12年的开发经验。随着技术发展,我们需要不断汲取新技术,并应用之。 在本书中,我们尝试在多层面上讨论J2EE,为使用J2EE构建基于Web和分布式企业系统提供操作性很强的指导。 本书的组织结构 本书从Java技术的背景和企业系统开发过程开始谈起。然后着眼于J2EE应用开发中需要做的工作,并谈到了一些关键技术,包括Java命名和目录接口(JNDI, Java Naming and Directory Interface)、轻型目录访问协议(LDAP,Lightweight Directory Access Protocol)、Java数据库连接(JDBC,Java Database Connectivity)、Java服务器端小程序(Java Servlet)、Java服务器页面 (JSP,JavaServer Pages)、模型-视图-控制器(MVC, Model-View-Controller)和企业JavaBeans(EJB)。然后又论述了J2EE应用的专用组件,主要集中在JavaMail、Java消息服务(JMS,Java Message Service)和可扩展标记语言(XML,eXtensible Markup Language)。最后几章讨论了启用和部署程序所涉及的许多问题。附录中包含了支持本书内容的参考资料(包括配置本书使用的商业和范例软件的说明),并提供了其他参考信息以扩展所学内容。每章内容概述如下: 第1章为“Java、分布式计算和J2EE”。从Java的背景谈起,谈到了当前Web应用开发的需求,也提到了J2EE规范和认证考试,这些可以验证供应商平台的兼容性。本章概要讨论了J2EE应用程序的打包方式,介绍了本书后面章节要研究的范例应用程序。 第2章为“J2EE应用设计和开发”。从J2EE结构总体开始谈起,进行了开发方法和过程的分析。本章讨论了开发环境,其中包括当前可用的各种集成开发环境(IDE,Integrated Development Environment)。本章还讨论了J2EE应用程序安全方面的问题,以及在设计、创建、组装和部署J2EE应用程序时需要的各种角色。 第3章为“设计J2EE应用”。首先讨论了建模工具的历史,其中建模工具包括数据库、过程和对象建模工具。然后解释了建模的重要性,以及建模和Java如何完美结合。本章着眼于如何从建模中生成EJB和其他类型的类,还解释了范例应用程序中使用的模型。 第4章为“构建J2EE应用程序的任务列表”。任务列表可以用在J2EE开发项目的起始阶段。本章包含了建立对数据库的访问,以及开发数据定义语言 (DDL,Data Definition Language)和数据操作语言(DML,Data Manipulation Language)的各个步骤。还包含了构建应用程序的业务逻辑和数据库访问的各个步骤,包括工具类、会话bean和实体bean。它还包含导航和应用程序流的映射,例如Struts、XML文件、servlet和JSP页面的使用。 第5章为“建立资源访问:JNDI和LDAP”。描述了普通的命名服务,重点讨论了Java命名和目录接口。本章讨论了JNDI的结构和接口,解释并举例演示了分布式应用程序的组件如何使用JNDI相互定位。另外,本章还介绍了目录服务,详细讨论了轻型目录访问协议。 第6章为“建立数据访问:JDBC”。解释了Java数据库连接技术,这是Java平台不可分割的一部分。本章根据Core程序包讨论了JDBC,包括驱动程序类型、数据库连接、处理查询结果、把SQL类型映射到Java,以及获取数据库的相关信息。还讨论了JDBC 2.0可选程序包API,包括使用JNDI的数据库命名机制、连接池、分布式事务、数据集(RowSet)和高级数据类型。还介绍了在SilverStream应用服务器中使用JDBC的代码范例,包括SilverStream连接池,以及在SilverStream应用服务器中从会话bean访问JDBC。 第7章为“建立控制流:servlet”。论述了Java Servlet。对构建交互式Web应用来说,Java servlet是当前最流行的选择。本章介绍了Java Servlet,讨论了对于企业Web应用开发和部署来说,servlet在J2EE框架中所处的角色。本章介绍了Servlet API,集中讨论如何构建Java Servlet来产生HTTP请求的响应。 第8章为“Java服务器页面:介绍”。介绍了Java服务器页面,从解释它们的含义和所处结构开始,覆盖了可以使用JSP的各种模型,包括模型1和模型2。并结合Java服务器页面关联的视图部分讨论了模型-视图-控制器结构。本章还把JSP同Java servlet做了一番比较。 第9章为“Java服务器页面:使用标签库进行实际开发”。讨论了JSP页面的语法,包括对象作用域、隐含创建的对象、注释、声明、表达式、脚本和指令。本章包含创建JSP的各个步骤,包括如何使用JavaBean组件。还讨论了异常处理和HTML表单处理,最后讨论了标签库,其中标签库封装了可以在许多页面上重复使用的动作。 第10章为“为应用构建用户界面”。描述了本书使用的范例程序的用户界面部分。本章还提供了与模型-视图-控制器相关的其他信息,以及在Struts标签库中的实现方法。 第11章为“企业JavaBeans:介绍”。从企业JavaBeans和分布式程序设计开始,演示了EJB如何紧密结合到分布式计算结构中,以及如何把对象组织成合适的程序包层次结构。本章介绍了EJB容器、EJB会话bean、EJB 实体bean和EJB消息驱动bean。讨论了EJB的各个属性,包括持久性、状态和事务能力。本章还提及在EJB的创建和部署中涉及的各种角色(开发者、组装者和部署者)。 第12章为“企业JavaBeans:构建会话bean”。集中讨论了构建EJB会话bean中需要的步骤和问题,其中包括会话bean的有状态和无状态实现之间的比较。本章引导读者学习bean的创建和相关的Home和Remote接口。还提供了调用会话bean的范例代码。 第13章为“企业JavaBeans:构建实体bean”。讨论了构建实体bean过程中涉及的步骤和问题。其中包含定义实体bean、创建主关键字类、创建实体bean类、实现Home和Remote接口,以及实现实体bean的方法。本章还比较了bean管理持久性(BMP,bean-managed persistence)与容器管理持久性(CMP,container-managed persistence)之间的区别,讨论了实体bean的打包和部署。 第14章为“使用电子邮件传递信息:JavaMail”。在讨论JavaMail API的细节和主要功能之前,概述了普通的信息传递机制,论述了JavaMail的结构,以及发送和接收邮件需要用到的主要类。在此过程中,本章还讨论了服务供应商、Java启动框架(JAF,Java Activation Framework),以及Message和MimeMessage对象。 第15章为“应用间的消息通信:Java消息服务”。解释了Java消息服务(JMS,Java Message Service),这是为Java开发人员提供的API,可以用来创建、发送、接收和读取企业信息传递系统的消息。本章讨论了消息机制的基础,以及用来生成和销毁消息需要的JMS组件,还提供了许多点对点(point-to -point)和发布/订阅(publisher/ subscribe)JMS应用程序的真实范例。 第16章为“使用XML进行数据交换”。讨论了可扩展标记语言的基本原理,包括XML文档的结构、解析后的数据、处理指令、文档类型定义(DTD,Document Type Definition)、模式,以及使用样式表来显示XML数据。还讨论了文档对象模型 (DOM,Document Object Model)、XML简化API(SAX, Simple API for XML),以及这两种格式的解析器。 第17章为“验证应用”。讨论了测试的基本原理,包括问题的判断方法和解决方案,查找问题时应该考虑到的方面,以及一些可以用来测试软件的工具。 第18章为“执行应用”。讨论了应用程序的性能和调整问题,从执行调整的准备阶段开始,包括了诊断和修复性能问题指南,还为Java Servlet、JSP和EJB提供了一些提高性能的提示。还讨论了影响Java性能的因素,以及应该避免使用哪些Java语法。最后讨论了数据库监控和调整工具的范例。 第19章为“部署应用”。讨论了把J2EE应用程序部署到J2EE应用服务器的各个步骤。其中讨论了Java的WORA观点,并讨论了全部存档文件类型,包括JAR、WAR、CAR和EAR。还讨论了XML部署描述符和XML部署计划,这两个方面被用来定义资源引用和XML部署计划,其中XML部署计划被用于解析资源引用。并介绍了部署J2EE应用程序的工具,比较了当前部分J2EE应用服务器。 附录A为“示例应用的文档”。提供了本书使用的范例程序的信息和文档。 附录B为“相关工具”。包含了第三方软件供应商和相关工具的信息。 附录C为“快速参考资料”。可以作为参考指南,其中包括J2EE API参考、J2EE安装、命名规范和其他辅助资料。 告诉我们你的想法 作为本书的读者,你是我们最重要的批评家和评论员。我们重视你的建议,并企盼得知我们的优点、需要改善的地方、读者期望阅读的图书领域,以及其他你希望传达给我们的任何观点。 来信时请确保注明了本书的标题和作者的名字,以及你的名字和电话号码或传真号码。我会仔细阅读你的评价,并同本书的作者和其他编辑分享这些内容。
(美)Joseph J.Bambara Paul R.Allen等:暂无简介
刘堃 等:暂无简介
Java 2平台的企业版(J2EE, Java 2 Enterprise Edition)定义了开发多层企业应用程序的标准。就像SQL一样,J2EE通过提供标准化、模块化的组件,并为这些组件提供完整的服务,以及自动处理应用程序行为的许多方面,简化了企业应用程序的开发。 Java 2平台的企业版具有标准Java 2的许多特色优势,例如“Write Once,Run Anywhere”(编写一次,随处运行)的可移植性、数据库访问的JDBC API、同现有企业资源进行交互的CORBA技术。在这个基础上,J2EE添加了对企业JavaBeans组件、Java Servlet API、JavaServer页面和XML技术的支持。J2EE标准包括完整的规范和一致性测试,确保应用程序可以运行在大多数支持J2EE的现有企业系统中。这种可移植性正是SQL成功的关键因素。 本书从Java技术的背景和企业系统开发过程开始谈起。然后着眼于J2EE应用开发中需要做的工作,并谈到了一些关键技术。最后几章讨论了启用和部署程序所涉及的许多问题。附录中包含了支持本书内容的参考资料(包括配置本书使用的商业和范例软件的说明),并提供了可以用来扩展本书内容的其他参考信息。在本书中,作者尝试在多层面上讨论J2EE,为使用J2EE构建基于Web的和分布式企业系统提供操作性很强的指导。本书的作者都是纽约金融部门计算机解决方案供应商的顾问,平均有12年的开发经验。从根本上来说,本书是非常实用的,是企业构建基于Web的应用和分布式应用时非常宝贵的参考资源! 现在,我们很荣幸能够有机会承担本书的翻译工作。在翻译过程中,我们经常为一句话、一个术语进行反复的讨论,到处查找资料,力图使本书的翻译能正确、贴切地反映原文的意思,同时注意使句子、段落符合中国人的语言习惯。我们真挚地希望读者能够从本书中有所收获,这是作者的初衷,也是我们的愿望! 本书由刘等组织翻译,万方工作室的全体同仁都参加了本书的翻译、校正和输入等工作。具体参加本书翻译、录排、校对工作的其他人员为:刘、潘德宏、田蕴哲、丁天、牛志奇、王小将、刘砚、黄建春、刘胜利、蒋雯丽、葛丽、罗贤锋、罗天浩、王若宾、潘文凯、夏宣哲、李树玲、孙志楠、聂宛析、龚露娜、马志强、李秀芬、田野、牛献忠、金百湘、薛杰、叶欣哲、邓南燕、邢倩、王煜、李满军、刘思敏、钱凯、赵智策、江南、李昌、王霄、李林等。本书的出版是集体劳动的结晶,在此特别感谢万方工作室的全体工作人员。 由于时间仓促,且译者经验和水平有限,译文难免有不妥之处,恳请读者批评指正! 万方工作室 2002年1月
第1章 Java、分布式计算和J2EE 1 1.1 Java背景知识 4 1.1.1 应用开发的各项能力 4 1.1.2 Java是应用开发的粘合剂 5 1.2 公司必须为网络经济进行改造 6 1.2.1 公司日益需要Internet来参与竞争 6 1.2.2 企业应用开发的挑战 7 1.3 Web结构的要求 9 1.3.1 速度的比较 9 1.3.2 服务有效性 10 1.3.3 连接到现有数据 10 1.3.4 扩展的用户概念:客户、职员和 合伙人 10 1.3.5 灵活的用户交互 10 1.3.6 灵活的事务组件模型 11 1.4 Web应用的生存周期 11 1.4.1 多个开发人员角色 11 1.4.2 迭代式开发 12 1.4.3 简化的结构和开发 13 1.4.4 方便地映射到应用功能 13 1.4.5 基于组件的结构 14 1.4.6 对客户端组件的支持 14 1.4.7 对事务逻辑组件的支持 15 1.5 J2EE API和认证 16 1.5.1 Java 2 平台企业版规范 17 1.5.2 J2EE兼容性测试套件 17 1.5.3 J2EE中的Sun BluePrints设计指南 18 1.5.4 将来的企业标准 18 1.6 XML和J2EE 18 1.6.1 为什么使用XML 19 1.6.2 电子数据交换和电子商务 19 1.6.3 电子数据交换 20 1.6.4 企业应用集成 20 1.6.5 软件开发和XML 20 1.6.6 XML技术和Java平台 21 1.6.7 Java 平台的XML技术标准扩展 21 1.7 J2EE应用的打包 22 1.8 本书研究的应用范例 22 1.9 小结 23 第2章 J2EE应用设计和开发 24 2.1 J2EE层次 24 2.1.1 客户层 25 2.1.2 表示层 25 2.1.3 业务逻辑层 25 2.1.4 数据层 26 2.2 J2EE应用组件 26 2.2.1 客户组件 26 2.2.2 Web组件 28 2.2.3 业务组件 28 2.3 J2EE结构 29 2.3.1 容器和服务 29 2.3.2 容器类型 30 2.4 开发的方法和过程 30 2.4.1 建模工具 31 2.4.2 开发工具 31 2.4.3 J2EE应用的内容 32 2.4.4 J2EE应用的开发阶段 33 2.5 范例应用程序简介 38 2.6 小结 38 第3章 设计J2EE应用 39 3.1 建模工具的历史 39 3.2 概况 39 3.3 设计应用 39 3.3.1 为什么创建模型 40 3.3.2 实体关系基础 41 3.3.3 CASE工具 43 3.3.4 逆向工程 44 3.3.5 实体建模 46 3.3.6 关系建模 47 3.3.7 支持的数据库 49 3.4 为Web应用建模 49 3.5 系统建模 51 3.6 统一建模语言 52 3.6.1 UML的目标和原则 53 3.6.2 规范和术语 53 3.7 为Web页面建模 56 3.7.1 表单 59 3.7.2 框架 59 3.8 EJB UML映射 59 3.8.1 Java社团应该遵循规范 60 3.8.2 将要开发的规范,以及它如何满足 当前的需求 60 3.9 工具支持 61 3.10 小结 61 第4章 构建J2EE应用程序的任务列表 62 4.1 完成前提任务 62 4.1.1 后勤前提条件 62 4.1.2 物理前提条件 64 4.2 设计数据库 65 4.2.1 确定应用实体 65 4.2.2 提炼每个实体和属性 66 4.2.3 确定关系 66 4.3 创建表和列 66 4.3.1 选择数据类型 67 4.3.2 创建关键字 68 4.3.3 完成数据库物理设计 68 4.3.4 估计数据库大小 69 4.3.5 建立数据库开发环境 69 4.4 定义应用程序 70 4.5 创建后端接口 71 4.5.1 初始数据的加载 71 4.5.2 创建EJB类和数据库存储过程 72 4.5.3 数据库调整和修复的批处理工具 72 4.5.4 备份和恢复的批处理工具 72 4.6 创建界面 72 4.6.1 选择应用的用户界面风格 73 4.6.2 为界面风格设置TAGLIB类库 73 4.7 构建页面 74 4.7.1 确定页面类型 74 4.7.2 为页面或子页面添加控件 75 4.7.3 设计菜单交互动作 76 4.8 创建数据访问对象 76 4.9 验证代码 76 4.9.1 决定使用调试器的时机 76 4.9.2 选择断点代码 77 4.10 提炼代码 77 4.11 创建可执行程序 77 4.12 小结 78 第5章 建立资源访问:JNDI和LDAP 79 5.1 命名和目录服务 79 5.2 什么是JNDI 79 5.3 寻找应用范例资源 80 5.3.1 JNDI的好处 80 5.3.2 JNDI和J2EE 80 5.3.3 JNDI服务提供者 81 5.4 JNDI结构 82 5.4.1 JNDI程序包 83 5.4.2 命名 83 5.4.3 上下文 83 5.4.4 命名空间 84 5.5 JNDI操作 85 5.6 轻型目录访问协议 85 5.7 JNDI/LDAP实用范例 86 5.8 小结 88 第6章 建立数据访问:JDBC 89 6.1 介绍 89 6.1.1 什么是JDBC 90 6.1.2 JDBC的好处 90 6.2 JDBC结构:API和驱动 91 6.3 JDBC API 93 6.4 获得和更新数据 97 6.4.1 语句 97 6.4.2 ResultSet 100 6.5 SQL-to-Java 数据类型 101 6.5.1 处理Null 102 6.5.2 存储过程 102 6.6 JDBC异常类型 103 6.6.1 SQLException 103 6.6.2 SQLWarning 104 6.6.3 DataTruncation警告 104 6.7 元数据 104 6.7.1 ResultSetMetaData对象 104 6.7.2 DatabaseMetaData接口 105 6.8 可滚动的结果集 105 6.8.1 可滚动结果集方法 106 6.8.2 可滚动结果集范例 106 6.8.3 可更新结果集 107 6.8.4 创建可更新结果集 107 6.9 更新行 107 6.9.1 删除行 108 6.9.2 插入行 108 6.10 事务支持 109 6.11 批处理语句 109 6.12 JDBC 2.1新数据类型 111 6.12.1 BLOB和CLOB 111 6.12.2 ARRAY 112 6.12.3 STRUCT 113 6.12.4 REF 113 6.13 JDBC 2.0可选程序包API:javax.sql 113 6.13.1 使用JNDI进行数据库访问 113 6.13.2 连接池 114 6.13.3 分布式事务 115 6.13.4 JDBC RowSets 115 6.14 范例研究:SilverStream应用服务器 115 6.14.1 SilverStream的数据库连接 115 6.14.2 SilverStream内部的JDBC 116 6.14.3 从SilverStream数据库中的会话bean 访问JDBC 117 6.14.4 从会话bean访问JDBC 118 6.14.5 在会话bean中定义资源引用查找 118 6.14.6 建立JDBC调用 118 6.14.7 建立连接 119 6.14.8 建立、编译和执行SQL Select 语句 119 6.14.9 创建环境入口 120 6.14.10 把资源引用映射为SilverStream 数据库 120 6.15 小结 121 第7章 建立控制流:servlet 122 7.1 什么是servlet 122 7.1.1 第一代—CGI 123 7.1.2 第二代—ISAPI/NSAPI 123 7.1.3 Java替代品—servlet 124 7.2 servlet的优点 124 7.3 在MVC和应用范例中用做控制器 124 7.4 基本HTTP 125 7.5 servlet容器 127 7.6 Servlet API 127 7.7 服务方法细节 128 7.7.1 把数据传递给客户端 128 7.7.2 设置MIME类型 129 7.8 HTML客户 130 7.8.1 表单 130 7.8.2 经常使用的