前言:
关于编程的最令我激动的事情莫过于可以把一些想法通过软件变成现实。我喜欢开发一些软件能让其他人工作起来更加轻松和愉快。当然,我也喜欢与其他程序员一同分享我所掌握的知识。因此,我要感激Apress的编辑让我有此机会编写本书。我希望本书的内容能让你有所收获。
编写本书的这一版大概花了一年多的时间,在这一年中,我的妻子和我在一起面对了许多机遇和挑战。非常感谢这一年多来给予我们帮助的人们:Tom和Marg Gimmy,Harrogate医疗中心的医生和护士,Dave和Kris Johnson,我的全家和Anne的全家,芝加哥医院的医生和护士,Maria医生,Richard Meinig医生,Brian Toolan医生,Dawn Girard,Don Haase,Tedd Dawson,Judy French,Sondra Wenzel,Jenn Masamitsu,UCCS大学的秋季CS330班全体,以及Apress出版社的全体成员。
最后,本书特别要献给我的妻子Anne和我的女儿Christine。
Kevin Mukhar
如果没有Jim Crume极其专业的帮助,我是不可能完成本书的,他快速地为我提供代码并具有出色的理解力,这些对我的修订工作都是必不可少的。非常感谢Kevin Mukhar,感谢他信任我这样一个初出茅庐的程序员承担这本书的修订工作。我还要感谢Apress出版社的朋友,他们在本书的准备工作中也展现了无比的耐心,特别感谢Laura Brwon(她的儿子Daniel Brown刚出生)、Steve Anglin、Sofia Marchant、Dilip Thomas、Marilyn Smith和Laura Cheu。另外还要感谢互联网上的朋友们以及我的家人,我希望尽可能把我要感谢的人列在这里:Michelle和Derek、来自CARE Auto Auction的Becky和John,Russell和Boggstown,Chorna,AJ,Keith和我的兄弟Matt——你们好像在我需要帮助的时候就出现了。最重要的是要感谢我的父母——John和Lynn Zelenak,你们给予了我关心和理解。还有Jim Weaver,你对我的信任使我能够得以完成本书的修订工作,而且在此过程中,我们成了很好的朋友。
Chris Zelenak
谨以此书献给我的妻子Julie、我的女儿Lori和Kelli;“儿子”Marty以及我的孙子Kaleb James。感谢你们一贯的爱和支持。还要感谢Ken Prater,我们深深怀念他。感谢Merrill和Barbara Bishir、Marilyn Prater和Walter Weaver提供这么多的好例子。另外还要感谢Laura Lee和Steve Brown,Jill Weaver,Shari和Doug Beam,Wade和Dawn Weaver,Dan和David Wright,Jerry和Cheryl Bishir,以及Pastor Steve和Cheri Colter。特别感谢Chris Zelenak为本书付出的不懈努力以及Apress出版社对我的鼓励。Isaiah 26∶3。
James Weaver
谨以此书献给我挚爱的妻子;我的儿子Chris和他的妻子Michelle;以及我的女儿Liz,感谢他们给予我的理解和关心。我爱你们!Joshua 24∶15。
Jim Crume
迄今为止,本书作者曾经阅读了不少软件设计和开发方面的著作,其中不乏一些佳作,但也有不尽如人意者,这个过程曾耗费了我们不少的时间和财力,于是我们考虑到有必要把一些有价值的内容进行提炼整理,本书就是我们辛勤努力的成果。首先,本书的作者和你一样,都是软件工程师,而且参与了不少相关的项目,所以理解大多数开发者并不愿在新技术的入门上花费太多的时间,因而作者希望本书能够为你提供简明扼要的技术指南,并附有一些有价值的开发资源。
首先,这本书主要涵盖了利用Java平台企业版(Java EE)进行分布式软件实践开发的各个方面。企业版Java是一种博大精深的技术,初学起来就像大海捞针。行成于思,行胜于言,所以我们采取先实践的策略,然后再花90%甚至更多的时间来探讨每个主题的基础理论。
当我们阅读一本软件开发方面的书时,或从头到尾通读,或直奔自己感兴趣的主题。本书主要介绍Java EE技术,如果你按顺序阅读每一章,将学习到相对完整的Java EE知识,当阅读进行一段时间后再回顾先前的某一章节,就会发现对相应的概念已经比较熟悉。此外,我们尽力使本书的每个主题都自成体系,并且对应有简明扼要的例子。
类似于Java标准版,Java EE架构(Framework)也是由许多包(package)组成,每个包定义了一些类和接口。想必你已经熟悉J2SE,并且逐个主题地学习了J2SE架构;而我们也将采用同样的方式来讨论Java EE。
对于编程语言而言,能够快速地设计和开发组件并提供给用户使用是其最具吸引力之处。可以说Java EE 5就具备了这些优点,在本书出版的时候其规范已经到了开发和评审的后期。本书将利用JBoss的预实现版本来演示Java EE的功能,从而尽可能展示这个规范的全貌。有趣的是,这个规范还处于开发状态,常常发生变动,因此,本书涉及的主题主要覆盖那些不大可能发生变化的概念。尽管如此,我们并不能百分之百保证不会变化,因此强烈建议你浏览本书在Apress网站上的主页(wwwapresscom/book/bookDisplayhtml?bID=420), 上面会列出相关的修改或替换方案。若想第一时间知道规范的变化, 请随时关注Java EE 5规范的开发页面http://jcporg/en/jsr/detail?id=244)、 JBoss网站(wwwjbosscom/developers/index)和TheServerSidecom网站(wwwtheserversidecom)。
该书已由机械工业出版社引进出版。——编辑注。
本书适用读者范围
本书主要面向那些已经具备Java标准版的相应知识或已经掌握小型桌面客户端应用程序开发技术的读者。如果你已经阅读过一些入门书籍, 比如Ivor Horton编著的《Java 2入门经典》(Beginning Java 2)(Wrox, 2004年出版; ISBN 0764568744), 那么现在就可以开始学习用Java EE开发服务端的应用程序了。
本书假定你已经知道如何使用开发环境来编译类文件并创建JAR文件。如果你偏好用vi和命令行工具, 则假定你知道如何设置类路径并使用javac来编译文件。如果你用的是集成开发环境(IDE), 那么假定你知道如何使用这个IDE来创建、 编译项目和部署这些项目。或许你采用的是Jakarta Ant来构建(build)系统, 那么假定你会创建和运行你自己的Ant构建脚本, 用它来进行应用程序的编译、 打包和部署。不管你用哪种系统, 我们都认为你已经熟悉了编写和编译代码的过程。
如果你以前用过其他的面向对象的语言, 比如C++或C#, 而现在希望用Java来开发企业级的应用, 那么你也将会从本书中受益。因为它们在编码的概念、 原则和结构方面都是相似的—— 你只需关注语法的不同之处以及各种Java EE技术领域中不同的代码体系结构。
本书涉及的内容
本书涉及的内容将从基本的Java语言到创建可复用和可扩展的Java EE组件, 比如JSP页面、 企业JavaBean(EJB)和Web服务(service)。
下面简明扼要地介绍一下本书的各个章节:
第1章: Java EE基础
这一章展示了Java EE的概貌, 介绍了什么是Java EE和如何开发基于Java EE的应用程序。通过本章的介绍, 你将了解到Java EE有哪些主要的组成部分以及它们是如何进行协作的。
第2章: 做好准备
若要运行本书的例子代码, 则需要正确配置你的机器。因此, 本章介绍了一些Java EE核心组件的安装、 配置和测试方法。
第3章: JSP
这一章介绍了使用JSP页面进行服务端的Web编程, 包括如何编写一个简单的JSP页面、 基本的JSP技术基础以及如何在Web应用程序中使用JSP。
第4章: JSP进阶
本章继续讨论JSP的内容, 包括一些更高级的技术和功能, 比如表达式语言、 定制操作和JSP标准标签库(JSTL)。
第5章: JSF
本章介绍一种用于创建基于组件的用户界面的框架JavaServer Faces(JSF)。你将学习如何结合JSP页面来使用JSF创建功能丰富的用户界面。
第6章: Servlet
这一章探讨了Java EE Web应用程序中常用的一种组件: Servlet。Servlet主要用于扩展服务端功能和提供动态的行为。
第7章: 数据库访问
在开发Java EE应用时很可能要在某一数据源中存储和操作数据。这时就需要用到JDBC。
第8章: JDBC进阶
在第7章介绍了数据访问的基本功能之后, 本章将深入探讨JDBC, 包括预处理语句和存储过程、 事务和锁机制。
第9章: EJB基础与会话bean
本章将开始讨论Java EE中用来体现应用程序业务逻辑的一个重要功能: 企业JavaBean(EJB)。本章主要介绍了EJB技术并具体探讨了会话bean技术。
第10章: EJB实体bean
本章讨论了第二种类型的EJB: 实体bean, 并介绍了实体bean与其他类型的bean的关系以及如何协作。此外还讨论了两种不同类型的持久性, 并介绍了EJB 查询语言(EJB QL)。
第11章: EJB关系、 EJB QL和JDBC
本章有两个主题, 即如何创建容器管理的关系, 以及如何结合使用JDBC和EJB。另外还继续上一章讨论EJB QL的选择方法。
第12章: EJB与设计模式
本章主要介绍了什么是设计模式、 如何在EJB应用中使用设计模式, 以及使用设计模式带来的好处。
第13章: 消息驱动bean
这是本书关于EJB的最后一章, 主要探讨了消息驱动bean(MDB)。MDB为Web应用程序提供了响应外部事件的手段。
第14章: Web服务与JAXWS
本章主要讲述如何利用Web服务开发分布式应用程序。内容包括Web服务基础, 设计原则和一些好的实践, 还有在创建Web服务时应该知道的一些其他问题。
附录 A: Tomcat
该附录简要介绍了一种代替JBoss的完备的应用服务器Tomcat。包括如何获取、 安装和运行Tomcat Web容器。本书在第3章和第8章用到了Tomcat。
附录B: SQL与EJB QL
该附录简要介绍了两种Java EE编程中可能用到的数据访问技术: 结构化查询语言(SQL)和企业JavaBean查询语言(EJB QL)。第7章和第8章用了SQL, 而第10章和第11章用了SQL和EJB QL。
附录C: Java EE 术语表
该附录列出了一些重要的Java EE术语及其定义。
所需的软件
为了学习本书, 必备的系统和软件并不是很多。因为你已经具备了一定的Java基础, 所以在机器上安装某个版本的J2SE SDK对你来说应该不成问题。
本书将使用最新的标准版SDK, 在编写本书时是J2SE 5。本书全部用的是微软的Windows操作系统, 但是因为Java具有“编写一次, 到处运行”的特征, 所以可以选用其他的操作系统平台, 比如Solaris或Linux, 而绝大多数代码都不需要修改。
另外还需要一个Web容器和某种应用服务器软件。本书将用最新发布的Tomcat Web容器和JBoss应用服务器。在本书成书时, JBoss是唯一支持EJB 30规范的应用服务器。第3章到第8章用的是单机版的Tomcat, 因为这些章节的例子不需要用到JBoss的所有功能。但是, 因为JBoss使用Tomcat作为它的Web容器, 所以本书的所有例子都应该能在JBoss应用服务器中运行。
此外, 你也可以选用别的支持Java EE 5规范及其他Java EE技术规范的应用服务器。本书中涉及的代码示例都遵循了最新的规范, 并且避免使用Tomcat或JBoss特有的功能。所有这些示例应该无须修改就可以运行在任何Java EE应用服务器中。但是不同的应用服务器的部署步骤可能有所不同, 所以请注意参考相应的服务器文档。
版式约定
本书采用了一定的版式约定和字体以帮助你区分不同类型的内容。这一节列出了所采用的一些版式并加以解释。
本书将以两种不同的方式展示代码: 在文字中插入代码和单独列出代码清单。当需要在正文中提到关键字和其他编码注意事项时(例如, 讨论有关ifelse结构或beans包), 我们使用等宽字体(如上一行括号中的字体所示)。如果展示完整的代码块, 则采用如下方式:
清单 92SimpleSessionBeanjava
如果这段代码清单是某个例子的一部分, 那么这段代码将有一个清单编号和标题。另外一种方式只是简单列出代码片断。
有时需要在命令行中输入一些命令, 则采用下面的字体: 这里用“>”表示提示符, 后面是输入的命令。
提示: 建议、 提示和背景信息采用这种类型的格式进行展示。重要的信息也是用这种格式。根据信息类型的不同, 分别用词汇“提示”、 “技巧”和“注意”表示。“提示”主要是指一些定义、 解释或与主题相关的细节。“技巧”是指一个编程的窍门。例如, 使用某种功能可通过另一种方法, 但和主题关系不大, 这时就用“技巧”来说明。“注意”是指出潜在的问题, 例如用来警告如果发生误用可能会导致应用服务器崩溃。
下载本书的代码
请浏览本书在Apress网站的主页http://wwwapresscom/book/bookDisplayhtml?bID=420), 然后点击源代码链接(在页面右边的“Book Extras”区域)下载本书所有源代码。
关于XML文件中的URL
Java平台企业版50(Java EE 5)的一个主要特点是利用XML文件来配置Web应用程序和Web组件。贯穿本书, 这些XML文件中的元素通常有统一资源定位符(URL)的属性值。例如, 有一种称为部署描述文件(deployment descriptor)的XML文件, 它的开头的元素如下所示:
本书不遗余力地保证所用到的每一个URL都是正确的——我们聘请了作者、 很多编辑、技术评审人和校对人员以及随机遇见的程序员来复查每个URL。尽管经过再三努力, 但仍然可能存在隐含的问题。
如前所述, 我们希望本书能带给你更多有价值的实践信息, 所以本书的目标之一就是保证所涉及的技术都是可用的。但是在编著本书时, Sun还没有最后发布本书预先讨论的技术规范, 所以很有可能从本书出版直至你读到本书的这段期间, 相关的规范又做了修改, 而且这将影响全书, 而不仅仅是这些XML文件中的URL。
因而, 当你开始验证本书的示例或者开始实践JSP、 Servlet和EJB时, 应该查看所用的应用服务器的文档和应用服务器支持的规范, 以保证在Web应用程序中使用的是正确格式的XML文件。
遇到问题该怎么办
尽管我们再三努力, 尽管本书拥有多名目光犀利的编辑, 但错误可能在所难免, 敬请谅解。
如果你遇到任何关于文字或代码例子的问题, 首先请到本书的网页(wwwapresscom/book/bookDisplayhtml?bID=420)查看修订内容。如果我们发布了勘误表, 那么你可以在以上网页上找到修订的链接, 点击这个链接你将看到相关代码或文字的错误列表以及更正的内容。
如果你在修订页面上没有发现你遇到的问题, 那么请在该主页上找到一个提交错误的链接。如果你再三核查了你的问题而且还无法解决, 那么请点击提交错误链接, 把关于问题的描述发送给我们。一旦问题得到解决, 我们将第一时间在修订页面上进行答复。
| 回书目 |
|
· SQL Server入门到精通.. · 交换技术配置手册技术.. · 超级网管员——网络应.. · 网络服务器配置与应用.. · Linux集群技术自测试题.. · JavaSript核心技术自测.. |
· ARP攻击与防范技术自测.. · 国庆挑战自己参加自测 .. · 《网管员必读—网络应.. · 历次技术自测 获奖网友.. · 51CTO国庆七天技术自测.. · 9.2.2 无线AP |
|
|||
| · 网管系统介绍 · 网络管理系统如何支撑I.. · CISSP认证成长之路 · 51CTO国庆充电专题之好.. · 网络技术经典基础教程 · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. |
· 51CTO技术自测 挑战自.. · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 · 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · C#技术开发指南 · Solaris 10 配置管理 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·体验Windows Server 2008.. ·将超星图书转成PDF文档 |
·使用 Office Communicati.. ·VMware Workstation 6.01.. |
| ·强烈质疑“步行1公里就能.. ·国庆期间新闻回顾:微软.. |
·9月第3周回顾:微软和英.. ·9月第2周回顾:四核之战.. |
| · 华为、贝恩资本22亿美元.. · NGN:下一代网络 · 网络访问中断大排查 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· Google推出唯一硬件——.. · 硬盘之父获得诺贝尔物理.. · 理性面对四核服务器选购 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 硬盘之父获得诺贝尔物理.. · 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. |