本书是对Java EE各种技术之间互相协作的概览和补充。
本书还展示了如何编写JavaServer Page(JSP)页面或者企业级JavaBean(EJB):探讨了何时何处使用这些API,它们各自的优缺点以及如何使用它们进行最佳实践。此外本书还包含下面的内容:
● 使用JSP页面、JSF(JavaServer Face)和Servlet创建动态的客户端。
● 在Web应用中使用Java数据库连接功能(JDBC)来连接和使用数据库。
● 用EJB实现业务层。
● 在企业应用中使用各种Java EE模式来避免产生软件缺陷。
● 在企业应用中使用Web服务和XML。
本书的内容主要集中在企业级Java项目所需的重要的API和工具上,提供了手把手的教程、清晰的讲解和可运行的代码例子,以便于你进入下一阶段的学习,从编写客户端桌面应用到开发企业级应用。你还将学到在Java EE 5平台中如何使用一些API,并且如何将这些API结合起来创建自己的企业级应用。
本书适合有经验的程序设计和开发人员参考。
无
关于编程的最令我激动的事情莫过于可以把一些想法通过软件变成现实。我喜欢开发一些软件能让其他人工作起来更加轻松和愉快。当然,我也喜欢与其他程序员一同分享我所掌握的知识。因此,我要感激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)查看修订内容。如果我们发布了勘误表, 那么你可以在以上网页上找到修订的链接, 点击这个链接你将看到相关代码或文字的错误列表以及更正的内容。
如果你在修订页面上没有发现你遇到的问题, 那么请在该主页上找到一个提交错误的链接。如果你再三核查了你的问题而且还无法解决, 那么请点击提交错误链接, 把关于问题的描述发送给我们。一旦问题得到解决, 我们将第一时间在修订页面上进行答复。
本书是对Java EE各种技术之间互相协作的概览和补充。 本书还展示了如何编写JavaServer Page(JSP)页面或者企业级JavaBean(EJB):探讨了何时何处使用这些API,它们各自的优缺点以及如何使用它们进行最佳实践。此外本书还包含下面的内容: ● 使用JSP页面、JSF(JavaServer Face)和Servlet创建动态的客户端。 ● 在Web应用中使用Java数据库连接功能(JDBC)来连接和使用数据库。 ● 用EJB实现业务层。 ● 在企业应用中使用各种Java EE模式来避免产生软件缺陷。 ● 在企业应用中使用Web服务和XML。 本书的内容主要集中在企业级Java项目所需的重要的API和工具上,提供了手把手的教程、清晰的讲解和可运行的代码例子,以便于你进入下一阶段的学习,从编写客户端桌面应用到开发企业级应用。你还将学到在Java EE 5平台中如何使用一些API,并且如何将这些API结合起来创建自己的企业级应用。 本书适合有经验的程序设计和开发人员参考。
Kevin Mukhar Chris Zelenak James L.Weaver Jim Crume:Kevin Mukhar: 是Colorado Springs公司的一位软件开发人员。过去七年间,他曾运用多种Java企业技术开发了许多软件系统,还与他人合著过多本著作,包括《Beginning Java Database:JDBC,SQL,J2EE,EJB,JSP,XML》(Wrox, 2001年出版;ISBN 1861004370)和《The Ultimate Palm Robot》(Osborne/McGrawHill,2003年出版;ISBN 0072228806)。除了日常的开发软件的工作,他正在攻读计算机科学硕士学位。他的个人主页是http://homeearthlinknet/~kmukhar/。
Chris Zelenak: 是Learning Assistant技术公司的一位程序员,他参与开发了服务器端的Cocoon和Rail应用、Java和NET客户端应用还有大量的恶魔式辨护(Devils Aadvocacy,DA)。最近他刚从Indiana Wesleyan大学计算机系毕业,而且为本书撰写了前言部分。
James L.Weaver: 是Learning Assistant技术公司(www.lat.inc.com)的创始人之一,这家公司致力于学习软件和医疗软件的开发。
Jim Crume: Jim Crume(jcrume@fusionalliancecom)是Fusion Alliance公司的一位Java软件架构师,这家公司位于印第安纳波利斯市,致力于Web应用软件开发方面的技术咨询。Jim具有多年的技术咨询经验,尤其善长体系结构和基于Web系统开发方面的技术。过去七年间,Jim利用J2EE技术出色地完成了许多软件系统。
窦巍 顾玲 等:暂无简介
Java EE 5规范在2006年5月1日全票通过并正式发布了!J2EE规范自从1998年诞生以来历经了曲折的发展之路。过去几年,J2EE发展非常快速而且正在走向成熟,但是这时期内也出现了许多其他的框架,比如NET和Ruby on Rails,它们不断蚕食着J2EE的市场份额。Java企业版社团绝地反击,借鉴并吸取了一些优秀的思想,改善了Java EE平台并贡献出Java EE 5这个主要版本。这次SUN将J2EE 15更名为Java EE 5,凸现了Java EE 5与以往J2EE规范的跨度,也可以把它看成一种新的技术而不是J2EE的延续。Java EE不失时机地打开了开发企业应用的方便之门,可以预见Java EE对于整个产业的影响,可能是J2EE这个概念自诞生以来比较有力量的一次震撼,它对Java企业开发过程的影响是深远的。
Java EE 5中设计了一些重要特性以简化开发人员的工作。JCP组织总结了过去J2EE实践中的经验和教训,在Java EE 5规范中对J2EE技术做了相当大的调整。首先影响最大的就是EJB规范。过去EJB给人的感觉过重,且开发过程复杂和不易维护,因此很多实际项目中很少使用EJB。Java EE 5对平台进行了重新定义,使得EJB的开发方式发生了彻底改变,不再使用Home,Remote接口等概念,而是使用轻量级的开发方式,通过大量采用在Java 50中引入的元数据标注(annotation)作为EJB描述工具。另外实体bean的角色被重新定位,采用POJO(普通Java对象)使其单纯担负起O/R Mapping的作用。Java EE 5平台提供了一个新的持久化应用开发接口,设计这个应用开发接口的目的是为了解决既要遵循EJB规范又要遵循Java数据对象所涉及的实现持久性方面的冲突的问题。所有这些举措都是为了使企业应用的开发过程更加简单、效率更高、维护更方便。其次,在Java EE中,对Web服务的支持仍然是一个重要主题。Java企业版平台中的Web服务主要围绕着两个应用开发接口:XML Web服务的Java API (JAXWS)20,它是JAXRPC和JAXB的延续。再有,在Web开发方面,Java EE 5增加了新的JSF规范,这是一个Web开发框架。JSF基于事件及UI组件模型的开发方式颠覆了传统的Web开发习惯,使用JSF开发表现层更像Swing编程,基于UI组件的模型能够把Web界面定制的很多工作独立出来,厂商可以针对具体的目标定制更多更好用的组件。
本书涵盖了Java EE 5中大多数技术;诚然在一本书中不可能完全透彻地讲述Java EE所有的技术,但是作者却恰到好处地将最基本和重要的部分展示给了读者。这本书的讲解是循序渐进的。第一步先讨论什么是多层体系结构,然后细致入微地介绍了前端技术(JSP/JSF),接下来介绍中间层技术(Servlet和会话bean),最后集中探讨后端技术(实体bean和JDBC)。本书还介绍了系统交互和服务(MDB和Web服务)。本书的EJB部分非常精彩地讲述了三种类型的bean,并提供了具体的例子;这一部分讨论了无状态会话bean和有状态会话bean、CMP和BMP实体bean、EJB QL和EJB的关系以及EJB的设计模式。本书采用JBoss和Sun Java EE的参考实现作为实践工具,贯穿每章都有相应的例子,此外每章最后还附带有练习题供读者使用。
在译者看来,本书作为Java EE入门书籍做得已经足够好,堪称经典。本书的语言简练且不乏幽默,引用了很多比喻来解释枯燥的术语,并适时将作者自己的经验以提示的方式糅合在书中各处。但是作为译者,我们也有责任指出本书的不足之处以供国内读者阅读时参考。首先,由于本书的原著是在Java EE 5规范正式发布之前出版的,因此有个别地方与正式发布的相关规范稍有出入,比如本书虽然覆盖了JDBC,但是没有考虑Java 5结果集(resultSet)的新变化。另外,虽然在MDB部分解释了JMS,但是并不深入。本书介绍了MDB和JMS方面的内容,但提供的例子较为简单。再者,在JAX(Java API for XML)方面的介绍也略显轻描淡写。如果要深入学习上述主题还应参考其他资料。但是瑕不掩玉,本书非常值得Java EE初学者入门阅读,也可以作为有经验的读者的案边参考。
参加本书翻译工作的有窦巍、顾玲、赵睿、刘克俭、马钦、赵辉等,并由窦巍统一全稿。机械工业出版社华章分社的编辑对全书进行了细致的审校,提供了大量宝贵的修改意见和指导,在此表示衷心的感谢。
在翻译过程中,译者尽量采用已被业界广泛接受的技术术语,并忠实于作者的原意,限于水平,译文难免有疏漏之处,恳请读者批评指正。
第1章Java EE基础
11什么是Java EE
111Java EE和J2SE有什么关系
112为什么使用Java EE
12多层体系结构
121单层系统
122客户端/服务器(两层)体系结构
123n层体系结构
13不依赖于Java EE厂商
14可扩展性
15Java EE的主要特性和概念
151Java EE客户端和服务器端
152容器
153Java Servlet
154JSP技术
155JSF技术
156JDBC
157EJB
158XML支持
159Web服务
1510事务支持
1511安全性
16Java EE体系结构的例子
161应用客户端和EJB
162JSP客户端和EJB
163applet客户端和JSP及数据库
164应用集成的Web服务
17小结
第2章做好准备
21安装JBoss
22测试JBoss的安装
221启动服务器
222JBoss服务器的安装问题和解决办法
23编译和部署一个JSP页面
231创建一个应用程序例子
232学会说“Hello”
233创建应用过程中的问题和解决办法
24小结
第3章JSP
31JSP初步
311JSP开发
312基本的JSP生命周期
32JSP的构成元素
321指令元素
322脚本元素
323操作元素
324注释和模板数据
33创建和部署JSP的Web应用
331编写JSP Web应用
332在Java EE中部署Web应用
333在Tomcat中部署Web应用
334解释或编译的错误处理
335JSP的初始化和终止
336JSP的作用域
34使用内置对象
341request对象
342response对象
343out对象
344session对象
345config对象
346exception对象
347appcliation对象
348在JSP页面中使用标准操作和内置对象
35解释和编译
36错误和异常处理
361通过page指令处理异常
362在部署描述文件中处理异常
363在JSP页面中添加异常处理
37JSP页面的include和forward
371include操作
372forward操作
373向JSP页面中加入include和forward操作
38小结
39练习
第4章JSP进阶
41表达式语言
411无脚本的JSP
412EL语句的语法
413EL语句中的错误和默认值
414使用EL的JSP页面例子
42定制操作和标签处理程序
421定制操作如何工作
422简单标签处理程序
423标准标签处理程序
424定制操作的多样化
43JSP 标准标签库
431获得一个JSTL实现
432JSTL中的操作
433在JSP中使用JSTL
44小结
45练习
第5章JSF
51JSF序言
511JSF和其他Java EE技术之间的关系
512请求处理的生命周期
52JSF的安装
53在JSP页面中使用JSF
531创建一个简单的JSF应用
532分析这个例子应用的JSF生命周期
54运用可管理bean
541配置可管理bean
542在JSP页面中使用值绑定表达式
543在JSP页面中使用方法绑定表达式
544扩展JSF例子应用
55控制页面导航
551静态导航和动态导航
552导航规则
553为JSF例子应用增加动态导航
56访问bean的环境数据
57数据的转换
571利用标准转换器
572利用定制转换器
58输入的验证
581使用标准的验证器
582使用定制的验证器
583忽略验证
59使用消息文件
510小结
511练习题
第6章Servlet
61HTTP和服务器端程序
611请求方法
612服务器端如何处理请求
62Servlet模型和HttpServlet
621基本的Servlet设计
622处理POST请求的Servlet
623request对象
624response对象
625部署描述文件
626Servlet的生命周期
627Servlet中的事件日志
628Servlet中的多线程
63异常处理
631异常处理的问题
632错误页面
64会话管理
641创建和使用会话
642用Cookie代替session对象
65过滤器
651实现Filter接口
652修改部署描述文件
66MVC体系结构
661Model 1和MVC
662MVC的组成
663Servlet控制器
664创建MVC应用
67小结
68练习
第7章数据库访问
71连接数据库
711用数据源进行连接
712在Java EE中配置数据源和连接
713在Tomcat中配置数据源和连接
714关闭连接
715设置登录超时
72异常处理
73DataSource的日志处理
74创建和使用Statement对象
741执行单个Statement
742执行批量更新
743释放Statement
744使用Statement在数据库中插入数据
75使用ResultSet类
751访问ResultSet
752从ResultSet读取数据
753空值的处理
754使用可更新的ResultSet
755维持ResultSet的打开状态: ResultSet的可保持性
76小结
77练习
第8章JDBC进阶
81预处理语句
811用预处理语句的原因
812创建Prepared Statement对象
813使用Prepared Statement
82可调用语句
821为何要用存储过程
822创建可调用语句
823调用存储过程
83事务
831终止事务
832管理事务
833存储过程使用事务
834使用分布式事务
84锁机制和隔离
841设置隔离等级
842使用悲观锁机制和乐观锁机制
85小结
86练习
第9章EJB基础与会话bean
91理解EJB
911为何要用EJB
912EJB规范
913三种EJB
914应当用哪种类型EJB
92剖析会话bean
93开发一个会话bean
931使用无状态会话bean
932选用有状态bean或无状态bean
933使用有状态会话bean
94小结
95练习
第10章EJB实体bean
101实体bean与会话bean如何合作
102剖析实体bean
1021实体bean类
1022容器管理的持久性和EntityManager接口
1023主键
1024bean管理的持久性
103开发CMP实体bean
1031建立CMP实体bean应用
1032编译CMP实体bean应用
1033部署CMP实体bean应用
1034运行这个CMP实体bean应用
1035分析例子CMP实体bean
1036分析这个例子的会话bean
104开发BMP实体bean
1041建立BMP实体bean的应用
1042部署BMP实体bean的应用
1043运行BMP实体bean应用
1044分析例子BMP实体bean
105EJB查询语言
1051EJB QL查询
1052建立和部署这个EJB QL查询应用
1053运行EJB QL查询应用
1054分析会话bean的查找方法
106小结
107练习
第11章EJB关系、EJB QL和JDBC
111实体bean的关系
1111一对多和多对一关系
1112多对多关系
1113用EJB QL查询获得数据子集
112容器管理的关系和EJB QL
1121用CMR建立应用
1122编译这个CMR应用
1123部署这个CMR应用
1124为数据库填充数据
1125运行此CMR应用
1126分析此CMR应用
113EJB实体bean和JDBC
1131EJB应用实现JDBC
1132StockList bean使用JDBC[HJ5/9〗114小结
115练习
第12章EJB与设计模式
121更好的设计
122应用设计模式
1221利用设计模式建立应用
1222编译和运行这个使用设计模式的应用
1223解释这个应用的设计模式
123结合EJB使用JSP和Servlet
1231建立修改过的JSP/Servlet客户端
1232回顾修改过的JSP/Servlet客户端
124小结
125练习
第13章消息驱动bean
131消息驱动bean概述
1311描述MDB
1312MDB环境
1313MDB事务
1314侦听器的调用
132Java消息服务API
133EJB 定时服务
134结合使用MDB、 JMS和EJB 定时服务
1341创建MessageTimerApp例子
1342构建和运行MessageTimerApp
1343分析MessageTimerApp例子
1344MessageTimerApp小结
135小结
136练习
第14章Web服务与JAXWS
141理解Web服务
1411Web服务标准和模型
1412为什么要用Web服务
1413Web服务的协议栈
142用Java开发Web服务
1421介绍JAXWS
1422下载CVS工具
1423创建Web服务
1424构建、 测试和运行此Web服务
143小结
144练习
附录ATomcat
附录BSQL与EJB QL
附录CJava EE术语表