首页>参考读物>计算机科学与技术>软件与程序设计

J2EE服务器端高级编程
作者 : (美)Subrahmanyam Allamaraju 等著
译者 : 闻道工作室
出版日期 : 2001-09-01
ISBN : 7-111-08944-8
定价 : 128.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 1333
开本 : 16开
原书名 : Professional Java Server Programming J2EE Edition
原出版社:
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书主要讲解了开发者如何使用J2EE体系结构为各事务组件编写关键逻辑。通过对Java servlet、JavaServer页面及EJB技术的理解,本书示例了如何设计和构建安全且可扩展的Java n层应用。内容包括:如何使用JSP页面分割事务和表示逻辑;如何使用EJB创建可扩展的应用;及如何使用CORBA、XML和Java Message Service与其他系统集成。 本书需要读者对Java编程语言的知识及分布式开发基础比较熟悉,主要面向用J2EE开发分布式企业级应用的专业Java开发者。

图书特色

Subrahmanyam Allamaraju Subrahmanyam是BEA Systems的Senior Engineer。他获得了电子工程专业博士学位,主要的兴趣在于面向对象的程序设计建模,并且致力于分布式计算和软件体系结构的领域。在他的工作历程中,他先在Indian Institute of Technology,然后到了Computervision和Wipro Infotech,后来到了BEA Systems。有关他在工作方面当前的活动请见http://www.Subrahmanyam.com。 Karl Avedal 自从1995年公开发布Java语言之后,Karl Avedal就一直是一个Java开发者。随着像servlet这样的Java服务器端技术的发展,他在1998年第一次接触EJB之前,迅速地转向了服务器端的开发,并且使用大量CORBA来从事他的开发工作。他现在是Orion Application server开发组(http://www.oricnserver.com)的成员。并且他作为标准的专家组的成员,参与了J2EE 1.3规范、JSP 1.2和Servlet 2.3规范的制定和开发。 感谢Anna-My的一贯支持。 Richard Browett Richard Browett目前是Persistence Software Inc.的European Technical Director,他的主要工作地在伦敦,但他经常往返于各地。 Richard已经在在各种计算机系统上工作了25年,在最近的5年中,他主要从事设计、创建大规模、高性能、分布式的系统,并且解决了其中的许多主要的疑难问题。 Jason Diamond Jason Diamond喜欢你们。 John Griffin John Griffin是在大规模的分布式应用结构和开发方面的资深的软件顾问。在1997年,John创建了Aries Software Technologies, Inc.,这是一个咨询公司,主要为金融和卫生行业提供软件解决途径和测试服务。John已经为大约500家公司使用CORBA和/或Java设计、创建和部署了n层应用程序,其中涉及的平台从手持式平台到大型的主机结构平台。 Mac Holden Mac Holden在信息技术领域已经有15年的经验。在最近的10年中,他一直运营着自己在东南亚的软件公司。他的公司最初集中在客户-服务器系统的开发和实现方面,然后很快地转入了用Java来开发基于Web的应用程序。他最初对于Java的兴趣是把他从像矿地和石油开采地那样的远程位置连接到他们的总部。Mac还是一个名叫JdJ Servlet Builder的纯的Java应用开发工具的主要设计者和开发者,该工具用来从HTML表单中创建能感知到数据库的servlet。 Andrew Hoskinson Andy Hoskinson是US Interactive的高级技术主管,该公司是一个主要的Internet专业服务公司。他使用不同的技术来开发企业级的类、n层Internet结构和无线应用程序,使用的技术包括J2EE。在加入US Interactive之前,他是Plural, Inc.的网络工程师,并且也是乔治华盛顿大学中心的兼职教员,任职于职业教育信息技术专业。Andy是Sun认证的Java程序员,并且帮助出版了许多不同的技术出版物。Andy的E-mail地址为andy@hoskinson.net。 Rod Johnson Rod Johnson是企业级Java工程师,特长在于可扩展的Web应用程序方面。他目前正在为欧洲最大的商业港口FT.com设计J2EE方案解决途径。 在音乐艺术和计算机科学取得学位以后,他在进入软件开发领域之前还完成了音乐学方面的博士学位。 自从Java发布之后,Rod就一直从事客户端和服务器端的Java开发工作,并且自1996年以来主要集中在Internet开发方面。他的主要兴趣是J2EE体系结构、EJB和OO Web应用开发。 Rod的E-mail地址为rod.johnson@bigfoot.com。 Tracie Karsjens Tracie Karsjens是Javelin Solutions的顾问,Javelin Solutions是一个位于Minneapolis的咨询公司。她自从1996年以来就用Java工作,她在企业级Java应用程序的各个层都有许多的经验。她对于一些重要的程序设计实践问题做出了贡献,如为提高代码的质量而实施的回归测试和单元测试。她是Sun认证的Java程序员和工程师。她要感谢她的丈夫在她编写本书的过程中给予的支持和理解。 Larry Kim Larry Kim是Allaire Corporation的JRun Server的产品管理者。他已经在Waterloo大学取得了电子工程专业的肄业学位,并且目前正在攻读分布式计算专业的研究生学位。 他对Clement Wong、Dan Smith、Tom & Paul Reilly、Edwin Smith、Spike Washburn和Scott Stirling做出了贡献。 Andrew Longshaw Andy Longshaw是Content Master Ltd.的主要技术培训者。他的主要工作就是负责制定各种类型的培训内容,如培训教程和白皮书。Andy在Java、XML、组件系统和电子商务方面设计、创建和实施了许多技术培训和咨询。他也在Java、XML和中间层组件体系结构方面举办了会谈。一个未经证实的消息就是某些人都是在会谈中明白许多技术问题的。可以通过andy@contentmaster.com或andy@longshaw.demon.co.uk与他联系。 Tom Myers Tom Myers在成为全职的程序员(他现在偶尔也在Colgate大学教一、两门课程)之前,在Delaware大学和Colgate大学教计算机科学课程。他是Equations、Models和Programs的作者:A Mathematical Introduction to Computer Science (Prentice Hall 1988 )和一些理论性文章。 Alexander Nakhimovsky Alexander Nakhimovsky在1995年成为了Colgate大学计算机科学系的教员。他是几本俄语教科书的作者,也编写了另外的书和一些有关语言的文章,并且发表了有关计算机语言的几篇论文,并在其领域之内经常与Alice Nakhimovsky合作。 Daniel O誄onnor Daniel O誄onnor是一个独立的软件开发者,他目前的工作集中在使用EJB技术来开发管理应用程序。他是jBoss的主管之一,jBoss是一个开放源码的应用服务器,其中用到了EJB包容器。他的经验包括,辅助Friedman Corporation的应用服务器在ERP产品方面的开发,并且参与了Cutting Edge, Inc.(现在为GGT的子公司)的CAD/CAM软件的开发。 Sameer Tyagi Sameer规范地编写了联机文档和出版物。他在软件设计和开发领域已经有4年的经验,特别是在基于Java的服务器端分布式应用程序(N层体系结构、JDBC、JNDI、EJB、JMS、RMI、JSP、Servlets等等)的设计和开发方面。他取得的电子工程专业的学士学位,并且还取得了其他许多的资格证书。 他是一个Java的极端拥护者,他的头脑里面充满了把源代码编译成字节码的内容,并且这要归咎于这种新的技术领域,把这种对他的头脑的影响叫做Javasphere。 Geert Van Damme Geert Van Damme和他的妻子Sofie与年幼的儿子一起生活在Leuven(比利时)。他研究Mathematical Psychology和Philosophy,但最终他在一段时间以后转到了IT行业。在1997年,他开办了自己的开发和咨询公司,目前集中在服务器端的Java开发方面。从那时开始,他就是一个独立的顾问,参与了许多项目。他主要在自己的家里办公,联系地址为geert.vandamme@ darling.be。 读者可以访问相关的主页,在http://www.gojasper.be/wall.jsp。 Gordon van Huizen Gordon van Huizen为Website generation、分布式电子集成系统、基于网络的对象认证和实时数据融合与影象系统设计和开发解决途径。作为Progress Software的产品经理,他负责了Progress的基于JMS的消息服务器、Progress SonicMQ系统工程,并且目前主要负责公司在消息技术应用程序方面的产品策略。 Mark Wilcox Mark Wilcox是North Texas大学的Web管理员。他也经常在提出和评论各种各样的Internet主题。他的联系地址为mark@jwilcox.com。 Stefan Zeiger Stefan Zeiger自1997年以来就一直是一个Java程序员,并且从1996年开始就在Darmstadt的Technical大学学习计算机科学。他是NetForge Web服务器软件和流行的指导学习servlet联机初学指导Servlet Essentials的作者。

图书前言

欢迎阅读本书。对于那些阅读过本书第一版的读者来说,他们会发现许多内容都有了变化,而本书距第一版出版时间仅仅一年。 J2EE版 在Java服务器端技术发展中,最显著的变化也许就是Java 2平台企业版的发布(Java 2 Platform,Enterprise Edition,J2EE)。 J2EE代表了一系列的发展过程,在这个过程中,Sun公司力图使Java不仅仅是作为一种有生命力的语言来发展,更重要的是,要作为一种有生命力的企业开发平台来发展。通过本书,可以看到,J2EE并不是一个简单的API的集合,而是定义了一个运行时的体系结构,并用在开发中。这种体系结构对于企业级Java应用开发者而言,它的美妙之处在于,J2EE的主要目标是:通过把在企业级开发中最基本的而又显得零散的、低层次的语义(如连接池和各种事务)封装到一个基于包容器的体系结构中。从而,开发者要去做的工作就是继续编写业务逻辑部分。 因此,这一版不是对第一版的简单更新,而是使得其中的内容完全可以反映出目前有关Java服务器端开发技术的发展变化的状况。 本书面向的读者 本书是面向专业级的Java程序员,读者不必具备丰富的实践经验,但至少要熟悉网络和Web程序设计的基本概念。另外,也应当熟悉Java语言和核心API—关于这方面的内容请阅读Ivor Horton的《Beginning Java 2》,或者其他相似内容的初级书籍。但无论如何,本书中所有与Java服务器端程序设计有关的概念都会被阐述,并不需要预备知识。 另外要说的是:读者最好熟悉一些基本的Java服务器端技术。因为,本书包含了许多这方面的内容,不能保证其中所涉及的所有的概念都能被完全阐述。 本书包含了什么 在本书中,讨论了以下三个方面的内容: 开发者在编写企业级组件时要遵循的技术规范中的规则。 在现实世界中,典型厂商在实现J2EE时所做的补充和限制。 通过使用J2EE技术,现实中的设计所带来的实践结果。 本书的基本结构如下: 本书从对Java企业级开发者的最新的要求和Java(具体说是J2EE)是如何发展来满足这些方面的挑战开始的。从中可以了解到J2EE包容器体系结构的初始概貌。 在讨论了J2EE体系结构后,阐述了一些在企业级开发中采用的基本技术:RMI、JDBC、JNDI和XML。 然后,通过使用Java Servlet开发Web组件来更具体地讲述J2EE。 理解掌握了Servlet技术后,就可以学习JSP(JavaServer Page)是如何应用该技术、进而能够提供更为灵活的创建动态Web内容的方式。 接下来,就是通过讲述有关EJB的复杂组件技术来阐述企业级开发。 讨论了在J2EE中的三种组件技术之后,本书继续阐述在企业领域开发中要涉及的一些问题,如安全性、性能和可扩展性。 最后,讨论了如何把Java应用与其他非Java技术,如COM和CORBA集成起来,如何运用Java消息服务(Java Message Service)来进行基于消息的集成。 在本书的附录部分,包含了一些使用的内容,其中有介绍如何配置和安装所需要用的软件,另外,还涉及到了软件国际化等一些主题。 本书中绝大部分代码在Java 2平台、标准版SDK(JDK 1.3)和Java 2 Platform、Enterprise Edition SDK1.2.1 Reference Zmplementation环境中经过测试。但是,在本书许多章节,这两个引用环境还不够,需要其他的软件,如: Web包容器 为了运行本书中的Web组件,需要一个支持Servlet 2.2和JSP 1.1规范的Web包容器,可以采用: 包含Tomcat3.0的J2EE RI,书中用到了Tomcat 3.1中的一些特征而在3.0中不支持。http://www.apache.org/。 Allaire的JRUN3.0,http://commerce.allaire.com/download/。 参照附录A中的安装和配置指南。 EJB包容器 在EJB章节里面,需要一个支持EJB 1.1规范的EJB包容器,采用: jBoss 2.0 Application Server,http://www.jboss.org。 Orion Application Server,http://www.orionserver.com。 本书中还有一章涉及到了EJB 2.0规范。但是,该规范还处在公开的起草阶段,还没有被广泛实现。少数的应用服务厂商,如BEA,已经在他们的应用服务器上实现了一个支持目前草案规范的beta版patch,但请注意,在规范最终形成前,什么事情都有可能改变。 数据库 有几部分章节需要访问数据库。在这些章节中,用到了下面一些数据库: Cloudscape(随J2EE RI带有一个进程内版),http://www.cloudscape.com。 Microsoft Access 2000。 Microsoft SQL Server。 HypersonicSQL,http://hsql.oron.ch/。 其他的软件 最后,一些章节还需要的几个软件有: Sun公司的JNDI SDK,在JDK1.3中包含有。 XML分析器和XSLT引擎—James Clark的xp和xt,http://www.jclark.com/xml。 用于Java API for XML(JAXP),http://java.sun.com/xml。 IBM的XML分析器和Lotus的XSL处理器,http://alphaworks.ibm.com。 Xalan的XSLT处理器和Xerces的XML Parser,http://xml.apache.org。 Java Secure Sockets Extension(JSSE),1.0.1,http://java.sun.com/products/jsse/。 Allaire Tag Library,http://commerce.allaire.com/download/。 LDAP服务器—Netscape的iPlanet Directory Server version 4.11,http://www.iplanet.com。 消息服务器—SonicMQ,http://www.sonicmq.com。 单元测试框架—JUnit,http://www.junit.org。 SMTP和/或POP3服务。 本书中的代码可以在单机上运行,要具备网络环境(也就是,可以通过本地浏览器访问http://localhost)。 书中的所有源代码可以从下面的站点下载: http://www.wrox.com 英文原书ISBN:1-861004-65-6

作者简介

(美)Subrahmanyam Allamaraju 等著:暂无简介

译者简介

闻道工作室:暂无简介

译者序

Java作为一种新型语言面世时间虽仍很短暂,但由于其独具的魅力,日益受到广大企业应用开发者的青睐,与之相关的技术层出不穷。Sun公司力图使Java不仅仅是作为一种有生命力的语言来发展,更重要的是,要将其作为一种有生命力的企业开发平台。Java服务器端技术涵盖的内容极其丰富,而J2EE的目标就是把在企业级开发中最基本的、而又显得零散的、低层次的语义封装到一个基于包容器的体系结构中,从而使开发者将其主要工作集中于编写与之密切相关的业务逻辑部分,进而减少了巨大的工作量。 本书首先介绍了J2EE体系结构中采用的基本技术:RMI、JDBC、JNDI和XML,然后通过servlet开发的Web组件实例进行详细讲述,进而介绍了JSP利用上述技术创建动态Web内容的方式以及EJB的复杂组件开发技术,最后介绍了一些在企业领域开发过程中涉及的与安全性、性能、可扩展性、与其他非Java技术的集成等相关问题。 本书内容丰富,技术新颖,实例分析紧密结合所学内容,是当前Java服务器端技术前沿领域最新版的技术大全,编程者在实践工作中可能会不自觉地用到本书内容。 本书涉及内容较深,一般面向专业级的Java程序员,要求熟悉网络和Web程序设计的基本概念,另外,读者也应当熟悉Java语言和其核心API。读者最好熟悉一些基本的Java服务器端技术。因为,本书包含了许多这方面的内容,不能保证其中所涉及的所有概念都被完全阐述。 感谢闻道工作室的同事们这几个月的辛勤努力,由于时间仓促,难免有些译文不够精确,希望读者在阅读本书时能够提出宝贵意见,在J2EE的后续版本中我们会不断加以改正。

图书目录

译者序 作者简介 前言 第1章  Java和J2EE平台 1 1.1  企业的今天 1 1.1.1  系统结构 2 1.1.2  答案是Java吗 5 1.2  J2EE平台 7 1.2.1  J2EE运行环境 7 1.2.2  J2EE API 8 1.3  J2EE体系结构—包容器 9 1.4  J2EE技术 14 1.4.1  组件技术 15 1.4.2  服务技术 16 1.4.3  通信技术 17 1.4.4  XML 18 1.5  部署J2EE应用程序 20 1.5.1  J2EE应用开发和部署中的角色 20 1.5.2  应用组件开发 21 1.5.3  把应用组件组合成模块 21 1.5.4  把模块组合成应用 21 1.5.5  应用部署 22 1.6  小结 22 第2章  采用RMI的分布式计算 23 2.1  RMI体系结构 24 2.1.1  Stub和Skeleton层 25 2.1.2  远程引用层 26 2.1.3  传输层 26 2.2  定位远程对象 27 2.3  RMI异常 30 2.4  用RMI开发应用程序 31 2.4.1  定义远程接口 31 2.4.2  实现远程接口 31 2.4.3  编写使用远程对象的客户程序 33 2.4.4  产生Stub和Skeleton 33 2.4.5  注册对象 33 2.4.6  运行客户程序和服务器 35 2.5  RMISecurityManager 35 2.6  在RMI中传递的参数 35 2.6.1  基本类型参数 36 2.6.2  对象类型参数 36 2.6.3  远程对象参数 36 2.7  分布式垃圾回收器 37 2.8  动态加载类 40 2.9  远程回调 44 2.10  对象激活 46 2.10.1  Activation Group 48 2.10.2  使对象为可激活的 50 2.10.3  激活 56 2.11  定制套接字和SSL 57 2.12  RMI、防火墙和HTTP 68 2.12.1  HTTP隧道 69 2.12.2  SOCKS协议 70 2.12.3  可下载的套接字集合 70 2.13  IIOP上的RMI 70 2.13.1  与CORBA的互操作性 71 2.13.2  RMI-IIOP和Java IDL 72 2.13.3  用RMI-IIOP编写程序 72 2.13.4  RMI-IIOP和J2EE 76 2.14  小结 76 第3章  用JDBC进行数据库程序设计 78 3.1  数据库驱动器 79 3.1.1  类型1—JDBC-ODBC桥 79 3.1.2  类型2—部分采用Java,另一部分       采用本地驱动器 80 3.1.3  类型3—中介数据库访问服务器 81 3.1.4  类型4—纯的Java驱动器 81 3.2  JDBC 2.1 Core API 83 3.2.1  加载数据库驱动器和打开连接 84 3.2.2  建立数据库连接 87 3.2.3  创建和执行SQL语句 88 3.2.4  用ResultSet接口来查询数据库 94 3.2.5  准备语句 96 3.2.6  把SQL类型映射到Java类型 98 3.2.7  事务支持 99 3.2.8  可滚动的和可更新的结果集 100 3.2.9  批量更新 106 3.3  JDBC 2.0 Optional Package API 106 3.4  JDBC数据源 107 3.4.1  javax.sql.DataSource接口 108 3.4.2  JNDI和数据源 109 3.4.3  修定后的Movie目录 112 3.5  连接池 112 3.5.1  传统的连接池 114 3.5.2  JDBC 2.0连接池 115 3.6  分布事务 118 3.6.1  什么是事务 118 3.6.2  简单背景知识 119 3.6.3  事务处理—概念 119 3.6.4  事务处理系统的构件模块 120 3.6.5  JDBC 2.0分布事务 121 3.6.6  实现分布事务的步骤 123 3.7  行集 125 3.7.1  javax.sql.RowSet接口 126 3.7.2  行集的类型 128 3.7.3  缓存的行集 128 3.7.4  JDBC行集 130 3.7.5  Web行集 130 3.8  小结 131 第4章  JNDI和LDAP 132 4.1  命名和目录服务 132 4.1.1  命名服务 132 4.1.2  目录服务 133 4.2  进入LDAP 134 4.2.1  访问控制 134 4.2.2  白页服务 135 4.2.3  分布式计算目录 136 4.2.4  LDAP数据 136 4.3  JNDI介绍 139 4.3.1  使用JNDI 141 4.3.2  JNDI服务提供者/JNDI驱动器 141 4.4  基本的LDAP操作 143 4.4.1  标准的LDAP操作 143 4.4.2  连接到LDAP服务器 143 4.4.3  认证或LDAP绑定 144 4.4.4  搜索一个LDAP服务器 146 4.4.5  对LDAP入口进行操作 154 4.5  在LDAP中存储和检索Java对象 161 4.5.1  传统的LDAP 161 4.5.2  串行化的Java对象 162 4.5.3  Java References 162 4.6  DSML 162 4.7  一个银行帐户JNDI应用程序 163 4.7.1  用RMI来使用LDAP 163 4.7.2  应用程序内容 164 4.7.3  JNDIRemoteBankInterface 165 4.7.4  JNDIRemoteBankServer 166 4.7.5  JNDIRemoteBankClient 168 4.7.6  Account类 169 4.7.7  运行应用程序 170 4.7.8  不采用注册表的RMI 171 4.7.9  创建一个对象目录 173 4.8  小结 173 第5章  XML基础 175 5.1  XML初步 175 5.1.1  XML和XML文档 175 5.1.2  XML处理器/分析器说明 178 5.1.3  为什么XML是强大的 178 5.1.4  XML的主要用途 179 5.1.5  Java和XML,J2EE中的XML 179 5.2  XML技术初步 181 5.2.1  标准化过程和W3C的角色 181 5.2.2  SGML和XML 182 5.2.3  DTD和XML Schema 183 5.2.4  XML风格 183 5.2.5  名字空间 184 5.3  形式良好的约束 184 5.3.1  属性引用 184 5.3.2  树结构 184 5.3.3  标记中显式的树结构 185 5.3.4  一个HTML/XHTML/XML例子 185 5.3.5  从HTML到XHTML 186 5.4  XML文档的逻辑结构 187 5.4.1  没有DTD的XML文档 187 5.4.2  具有DTD的XML文档 191 5.4.3  DTD和实体 195 5.4.4  阅读著名的DTD 196 5.5  DTD、分析器和验证 197 5.5.1  分析器和DTD 197 5.5.2  XML Schema 197 5.5.3  DTD验证器 198 5.6  XML名字空间 199 5.6.1  主要思想——前缀和URI 200 5.6.2  重要的说明 200 5.6.3  名字空间声明的范围 201 5.6.4  缺省的名字空间 201 5.6.5  名字空间和属性名字 202 5.6.6  名字空间和DTD 203 5.7  用CSS风格化XML 203 5.7.1  CSS1例子和解释 203 5.7.2  选择子和声明 204 5.7.3  名字空间和CSS 206 5.8  用XSLT风格化XML 207 5.8.1  什么是XPath 207 5.8.2  试用XSLT 208 5.8.3  风格表单概貌 208 5.8.4  一个稍稍不同的改变 211 5.8.5  一点改进 212 5.9  未来的注目点 214 5.10  小结 214 第6章  用DOM和SAX进行XML分析 216 6.1  SAX、JAXP和一个简单的例子 218 6.1.1  SAX概述 218 6.1.2  JAXP的结构 219 6.1.3  一个简单的例子:计数元素 220 6.2  DOM和修改后的例子 222 6.2.1  节点类型 223 6.2.2  节点方法 223 6.2.3  用DOM计数元素 223 6.3  本章中的应用例子概述 225 6.3.1  实用类 225 6.3.2  PropDict类 225 6.3.3  Logger类 229 6.4  一个DOM应用程序 231 6.5  DOM进阶 242 6.5.1  DOM Level 1 242 6.5.2  XML、DOM和语言绑定 243 6.5.3  在XML 1.0规范中没有DOM特征 244 6.5.4  DOM绑定 245 6.6  SAX应用程序 249 6.6.1  SAX回顾 249 6.6.2  Sax2Writer 249 6.6.3  Dom2Sax 253 6.7  Java对象的SAX分析器和SAX筛选器 258 6.7.1  分析不是XML文本的对象 259 6.7.2  一个真实分析的例子 261 6.8  小结 264 第7章  Web包容器简介 265 7.1  HTTP协议 266 7.1.1  HTTP请求方法 266 7.1.2  HTTP应答 267 7.2  Web包容器和Web应用程序 267 7.2.1  Java Servlet 268 7.2.2  JSP 270 7.2.3  部署描述器 271 7.2.4  Web包容器的类型 272 7.3  第一个Web应用程序 273 7.3.1  准备Web包容器 273 7.3.2  创建HTML文件 274 7.3.3  创建servlet 274 7.3.4  编译源代码 275 7.3.5  编写部署描述器 275 7.3.6  测试这个应用程序 276 7.4  Web应用程序的组成 277 7.5  小结 282 第8章  servlet程序设计 283 8.1  Java Servlet API概貌 283 8.2  servlet实现 286 8.2.1  servlet接口 286 8.2.2  GenericServlet类 288 8.2.3  SingleThreadModal接口 288 8.2.4  HttpServlet类 289 8.3  servlet配置 291 8.3.1  ServletConfig接口 291 8.3.2  得到ServletConfig的引用 292 8.4  servlet异常 293 8.4.1  ServletException类 293 8.4.2  UnavailableException类 293 8.5  Servlet生命周期 294 8.6  servlet生命周期—FreakServlet 296 8.6.1  实例化 300 8.6.2  初始化 300 8.6.3  服务 301 8.6.4  消亡 303 8.7  用于请求和应答的API 304 8.7.1  ServletRequest接口 304 8.7.2  HttpServletRequest接口 306 8.7.3  ServletResponse接口 309 8.7.4  HttpServletResponse接口 311 8.8  servlet程序设计—技术支持应用程序 312 8.8.1  建立HTML页面 312 8.8.2  准备数据库 314 8.8.3  创建一个序列器 316 8.8.4  编写Servlet 316 8.8.5  编译源代码 319 8.8.6  部署描述器 319 8.8.7  运行技术支持应用程序的条件 320 8.8.8  数据库连接说明 322 8.9  小结 323 第9章  servlet会话、上下文和协作 324 9.1  无状态和会话 325 9.2  用于会话跟踪的技术 326 9.2.1  URL重写 327 9.2.2  隐藏表单域 328 9.2.3  Cookie 328 9.3  采用Java Servlet API的会话跟踪 330 9.3.1  会话创建和跟踪 330 9.3.2  HttpSession接口 331 9.3.3  绑定和删除会话中的对象 341 9.3.4  使用会话的简单的购物车例子 342 9.4  servlet上下文 346 9.4.1  ServletContext接口 347 9.4.2  使用上下文和会话的聊天应用程序 349 9.5  servlet协作 363 9.5.1  servlet链 363 9.5.2  请求指派 364 9.5.3  修改后的技术支持应用程序 365 9.6  小结 376 第10章  Web部署、认证和包装 377 10.1  Web应用程序的结构 377 10.1.1  目录结构 377 10.1.2  Web档案文件 379 10.2  把请求映射到应用程序和servlet上 380 10.3  Web应用程序的安全 384 10.3.1  程序安全 387 10.3.2  基于表单的认证 387 10.4  部署配置 390 10.4.1  上下文初始化参数 391 10.4.2  servlet初始化参数 392 10.4.3  在启动时加载servlet 392 10.4.4  会话超时 393 10.4.5  MIME映射 393 10.4.6  欢迎文件 394 10.4.7  错误页面 394 10.4.8  分布式应用程序 396 10.5  小结 397 第11章  JSP基础和体系结构 398 11.1  介绍JSP 398 11.2  内容和形式 402 11.2.1  JSP指令 403 11.2.2  脚本元素 407 11.2.3  标准动作 411 11.2.4  隐含的对象 425 11.2.5  范围 426 11.2.6  XML等价标记 428 11.3  JSP设计基础 429 11.3.1  以页面为中心或客户-服务器的        设计 429 11.3.2  Page-View 430 11.3.3  采用Bean的Page-View 430 11.4  “指派者”途径 431 11.4.1  Mediator-View 431 11.4.2  Mediator-Composite View 431 11.4.3  Service to Workers 432 11.5  JSP技术支持 433 11.5.1  应用程序设计 435 11.5.2  欢迎页面 435 11.5.3  处理请求的JSP 436 11.5.4  TechSupportBean 437 11.5.5  注册表单 439 11.5.6  Registration JSP 439 11.5.7  Response和Banner JSP 440 11.5.8  错误页面 441 11.5.9  部署应用程序 441 11.6  小结 442 第12章  JSP标记扩展 443 12.1  标记扩展101 443 12.2  标记扩展剖析 450 12.2.1  标记处理器 450 12.2.2  标记库描述器 457 12.2.3  在JSP页面中使用标记扩展 459 12.2.4  部署和包装标记库 459 12.3  编写标记扩展 462 12.3.1  处理属性 463 12.3.2  体内容 465 12.3.3  引入脚本变量的标记 466 12.3.4  体标记 470 12.3.5  标记嵌套 476 12.3.6  处理错误 481 12.4  标记扩展元语 481 12.5  小结 483 第13章  高级的定制JSP标记 484 13.1  一个XSL风格的标记 484 13.2  Swing模型标记 489 13.2.1  使用Swing ListModel 489 13.2.2  创建名字-值对的映射模型 492 13.2.3  使用Swing TableModel 496 13.3  分发 512 13.4  隐藏的细节内容 513 13.5  第三方的定制标记 516 13.5.1  流控制 516 13.5.2  J2EE技术 518 13.5.3  客户端验证 520 13.5.4  工具支持和未来的方向 521 13.6  小结 521 第14章  编写可维护的JSP页面 523 14.1  目标 523 14.2  在多层体系结构中的JSP 524 14.3  用于编写可维护的JSP的技术 526 14.3.1  请求控制器体系结构 526 14.3.2  在JSP中使用包含 530 14.3.3  使用JSP bean 531 14.3.4  使用标记扩展 534 14.3.5  处理迭代 536 14.3.6  处理条件逻辑 537 14.3.7  使用风格化的XML 538 14.3.8  什么时候为JSP使用定制的超类 539 14.3.9  公共对象的标准抽象 539 14.3.10  处理异常 540 14.3.11  国际化 540 14.4  文档化JSP层 541 14.5  工具支持 542 14.6  可维护的JSP的编码标准 543 14.6.1  设计原则和代码风格 543 14.6.2  格式化JSP页面 545 14.7  DBExplorer应用程序 547 14.7.1  需求 548 14.7.2  设计 550 14.7.3  实现 551 14.7.4  重新来看这个应用程序 583 14.7.5  部署应用程序 583 14.8  小结 585 第15章  JSP和XML—协同工作 586 15.1  JSP和XML 586 15.2  一个配置化的时事通信—一个实例      研究 587 15.2.1  澄清 588 15.2.2  主要的设计特点 588 15.2.3  主要的组件概述 588 15.2.4  试一试 590 15.3  配置组件 594 15.3.1  反射包 595 15.3.2  一个配置文件的例子 596 15.3.3  用于XML配置的Java代码 599 15.3.4  JSP和配置文件 609 15.4  数据库组件 609 15.4.1  DBConnector和它的缺省的实现 610 15.4.2  QueryHandler 611 15.4.3  ResultSetParser 617 15.4.4  UserDataHandler 621 15.5  XML数据访问组件 624 15.5.1  DomSearch查询 624 15.5.2  DomSearch输出 625 15.5.3  实例化DomSearch—DSNext-        Match 625 15.5.4  DomSearch的XML配置数据 626 15.5.5  在一个会话期间使用DomSearch 627 15.6  表示组件 627 15.6.1  注册页面 627 15.6.2  主帧页面和初始化 628 15.6.3  控制和数据帧 629 15.7  控制组件 634 15.7.1  StampPageFactory bean 634 15.7.2  StampPage Bean 638 15.8  对基本功能的扩充 640 15.9  小结 640 第16章  基于XML的JDBC Connector         Servlet框架 641 16.1  实现JDBC Connector Servlet 641 16.1.1  框架的功能需求 642 16.1.2  JCS体系结构 644 16.1.3  JCS脚本框架 645 16.1.4  实现JCS的Java类 650 16.1.5  其他的内容 674 16.1.6  包装J2EE部署的框架 676 16.1.7  把JCS部署到J2EE Servlet包容器中 678 16.2  使用JDBC Connector Servlet 679 16.2.1  Guestbook样本应用程序 679 16.2.2  SQL Server数据库浏览器应用程序 692 16.3  小结 697 第17章  JavaMail 699 17.1  建立指导 699 17.2  JavaMail API 701 17.2.1  javax.mail.Session 701 17.2.2  javax.mail.Authenticator和Password        Authentication 703 17.2.3  javax.mail.Message 704 17.2.4  javax.mail.Part 710 17.2.5  javax.mail.Multipart和BodyPart 714 17.2.6  javax.mail.internet.MimePart 714 17.2.7  javax.mail.internet.MimeMessage 716 17.2.8  javax.mail.internet.MimeMultipart和        MimeBodyPart 717 17.2.9  javax.mail.Service 718 17.2.10  javax.mail.Transport 719 17.2.11  javax.mail.Store 721 17.2.12  javax.mail.Folder 722 17.3  javax.mail.search.* 726 17.4  工作例子 727 17.5  小结 741 第18章  EJB体系结构与设计 742 18.1  什么是EJB 743 18.1.1  bean变体 744 18.1.2  在设计中使用EJB的原因 745 18.2  EJB包容器及其服务 746 18.3  EJB应用 751 18.3.1  客户端开发人员的观点 751 18.3.2  bean程序员的观点 754 18.3.3  EJB组件所禁止的操作 760 18.4  Web中的EJB组件 762 18.5  客户端层至EJB的访问 764 18.6  EJB层设计 765 18.6.1  UML use case 765 18.6.2  分析与实现 767 18.6.3  EJB设计示例 769 18.7  小结 776 第19章  会话bean与业务逻辑 777 19.1  会话bean与状态 777 19.1.1  业务逻辑表示 778 19.1.2  关于会话状态的难点问题 780 19.1.3  会话bean与持久化存储 782 19.2  财政资助计算器bean 782 19.2.1  无状态财政计算器bean 783 19.2.2  有状态财政计算器 bean 789 19.2.3  合并有状态与无状态bean 797 19.3  实现制造应用程序 801 19.3.1  客户端与业务逻辑接口 802 19.3.2  无状态会话bean的实现 815 19.3.3  有状态会话bean的实现 824 19.4  小结 831 第20章  实体bean与持久化 832 20.1  为什么不使用会话bean 832 20.1.1  有状态会话bean应用 832 20.1.2  无状态会话bean应用 835 20.1.3  实体bean的优点 837 20.2  包容器或者bean管理的持久化 838 20.2.1  SportBean实验室 839 20.2.2  完成运动队示例 859 20.3  关系 867 20.4  完成这里的制造应用程序 868 20.4.1  Order bean 868 20.4.2  Product bean 874 20.4.3  完成部署描述器 878 20.4.4  运行制造应用程序 880 20.5  小结 885 第21章  EJB包容器服务 887 21.1  事务 888 21.1.1  无包容器事务 889 21.1.2  事务的声明性语法 896 21.1.3  用户控制的事务 900 21.1.4  隔离级别 901 21.1.5  长事务 904 21.1.6  两阶段提交 905 21.2  安全性 906 21.2.1  确定安全性需求 907 21.2.2  编程性访问控制 910 21.2.3  安全性与应用程序设计 912 21.3  异常 913 21.3.1  应用程序异常 913 21.3.2  系统异常 916 21.4  通信 919 21.4.1  异构服务器之间的通信 919 21.4.2  In-VM方法调用 920 21.5  小结 921 第22章  开发与部署功能 922 22.1  企业级bean提供者 923 22.2  应用程序组装者 934 22.3  部署描述器 941 22.4  系统管理员 944 22.5  包容器/应用程序服务器开发商 946 22.6  制造应用程序的Web接口 947 22.7  关于解决问题的提示 969 22.8  小结 970 第23章  EJB 2.0 972 23.1  EJB 2.0的新特性 972 23.2  EJB 2.0的由包容器管理的持久化 973 23.2.1  cmp-field类型 976 23.2.2  cmr-field类型 977 23.2.3  完整的CMP 2.0部署描述器 983 23.2.4  编写CMP 2.0 bean 988 23.3  EJB 2.0查询语言 995 23.3.1  程序员在哪里指定查询 996 23.3.2  程序员如何指定查询 997 23.3.3  来自于制造应用程序的查询 1001 23.4  消息驱动的bean 1001 23.5  位于本地接口的业务方法 1004 23.6  小结 1011 第24章  J2EE应用程序设计考虑事项 1012 24.1  世事变迁 1012 24.2  设计环境 1013 24.3  体系结构与设计 1015 24.3.1  体系结构的类型 1016 24.3.2  强制、模型和重复 1017 24.4  分布式设计 1019 24.5  从头开始 1020 24.6  增加中间层 1023 24.7  购物 1025 24.8  提交与处理订单 1027 24.9  已经学习过的内容 1030 24.9.1  将模式-视图-控制器应用于用户        接口 1030 24.9.2  JSP设计原则 1030 24.9.3  选择适当的数据格式 1030 24.9.4  减少数据传递量 1031 24.9.5  设计分布式接口 1031 24.9.6  用于同步操作的消息映射 1032 24.9.7  事务规划 1032 24.10  购物订单系统之外的问题 1032 24.10.1  EJB接口设计 1032 24.10.2  分布式事件 1033 24.10.3  处理数据库 1034 24.10.4  状态管理 1035 24.11  体系结构与进程 1036 24.12  小结 1037 第25章  性能与伸缩性 1038 25.1  妥协方案 1039 25.1.1  开发周期 1039 25.1.2  代理的优缺点 1040 25.2  可伸缩性的重要性 1042 25.3  性能 1043 25.3.1  编码问题 1044 25.3.2  性能测试与调试 1045 25.3.3  设计期间的问题 1047 25.4  伸缩性 1060 25.4.1  伸缩性与性能测试 1061 25.4.2  高伸缩性设计 1064 25.4.3  数据流与缓存 1070 25.4.4  由备份实现的伸缩性 1075 25.5  有效性能与伸缩性的项目规划 1077 25.6  小结 1078 第26章  调试Java服务器应用 1079 26.1  Java服务器端编程的不同之处 1079 26.1.1  Java语言 1079 26.1.2  应用运行于服务器 1080 26.1.3  运行过程时间长 1081 26.1.4  健壮性和稳定性 1083 26.1.5  多用户/多线程 1085 26.1.6  性能 1087 26.2  调试工具和技术 1088 26.3  小结 1101 第27章  单元测试J2EE应用 1103 27.1  单元测试的概念 1103 27.2  JUnit框架介绍 1105 27.3  使用JUnit框架 1105 27.4  如何进行单元测试 1106 27.4.1  单元测试步骤 1107 27.4.2  编写可测试代码 1108 27.4.3  进行单元测试的原因 1108 27.5  简单对象的单元测试 1109 27.5.1  单元测试一个实用对象 1109 27.5.2  单元测试一个事务对象 1115 27.6  单元测试servlet 1121 27.7  单元测试数据库访问层 1130 27.8  单元测试JSP 1131 27.9  单元测试EJB和RMI对象 1132 27.10  小结 1136 第28章  Java消息服务 1137 28.1  消息系统 1137 28.2  JMS编程 1138 28.2.1  发布和预定编程 1139 28.2.2  点到点编程 1143 28.2.3  消息 1145 28.2.4  JMS编程技术和问题 1147 28.3  JMS实现 1153 28.4  一个示例应用 1154 28.4.1  代码简介 1154 28.4.2  运行此应用 1159 28.5  JMS基于消息的集成 1159 28.5.1  将JMS和XML作为一种集成平台 1160 28.5.2  集成的体系结构模式 1160 28.5.3  超越集成—设计开放式应用 1162 28.6  小结 1162 第29章  与CORBA的集成 1163 29.1  本章使用工具 1163 29.2  CORBA简介 1163 29.3  IDL入门 1180 29.3.1  基本IDL类型 1180 29.3.2  复杂IDL类型 1180 29.3.3  模块 1181 29.3.4  接口 1181 29.3.5  属性 1182 29.3.6  操作 1182 29.3.7  异常 1183 29.3.8  继承 1184 29.4  J2EE和CORBA 1184 29.5  与J2EE集成 1195 29.5.1  servlet和CORBA对象 1196 29.5.2  JavaServer Page和CORBA对象 1204 29.5.3  EJB和CORBA对象 1208 29.5.4  J2EE用做CORBA客户端简介 1215 29.6  小结 1216 第30章  结合在一起的J2EE应用 1217 30.1  J2EE应用 1217 30.1.1  J2EE模块 1217 30.1.2  应用部署描述器 1218 30.1.3  J2EE应用结构 1220 30.1.4  为什么J2EE应用有些麻烦 1221 30.1.5  J2EE应用的前景 1221 30.2  设计一个J2EE应用 1222 30.3  应用开发周期 1224 30.4  创建一个完整的J2EE应用 1224 30.4.1  需求 1225 30.4.2  设计 1225 30.4.3  组件实现 1226 30.4.4  组件打包/汇编 1232 30.4.5  应用汇编 1234 30.4.6  应用部署 1238 30.4.7  运行应用 1242 30.4.8  使用其他的应用服务器 1243 30.5  小结 1244 附录A  配置Tomcat和JRun 1245 附录B  建立Netscape iPlanet目录        服务器 1256 附录C  HTTP参考 1268 附录D  国际化 1278 附录E  Swing HTML生成 1300 附录F  支持、勘误和P2P.Wrox.Com 1333

教学资源推荐
作者: 宋存利 张雪松 编著
作者: [美]德洛莉丝 M. 埃特尔(Delores M. Etter) 著
参考读物推荐
作者: Nicholas A.Solter, Scott J.Kleper
作者: [德] 彼得?普林茨(Peter Prinz),托尼?克劳福德(Tony Crawford)著
作者: 冯伟兴 梁洪 王臣业 编著