本书详细深入地讲述了servlet和Web编程,展示了Java服务器端专业编程的新特性,内容覆盖XML、EJB、JBDC、JNDC、JavaMail、RMI、CORBA、Jini/JavaSpace和Apache,为在Java平台上编写n-层应用提供了最新的程序设计理论和技术,是一本用servlet、JSP、Jini/JavaSpace等新技术创建n-层Java应用的专业书籍。本书内容详尽,语言精练,编程技术先进,适用于有一定Web编程经验并熟悉Java语言和核心API的开发人员;同时也能为想要理解和掌握Java服务器端编程的读者提供帮助。\r\n 本书提供了5个编程实例和大量的源程序,所有源代码都可以从Internet上免费下载,其地址是http://www.wrox.com,同时也可以从这个站点获得对本书的技术支持。\r\n
译者序\r\n作者简介\r\n前言\r\n\r\n第1章 Web应用开发\r\n\r\n1.1 Web结构\r\n1.1.1 Web浏览器\r\n1.1.2 Web服务器\r\n1.2 n-层应用\r\n1.3 Web应用的体系结构\r\n1.3.1 收集数据\r\n1.3.2 向Web服务器发送请求\r\n1.3.3 执行服务器脚本\r\n1.3.4 将结果返回浏览器\r\n1.4 开发服务器应用\r\n1.4.1 服务器端的技术\r\n1.4.2 Java的特点\r\n1.5 小结\r\n\r\n第2章 servlet简介\r\n\r\n2.1 servlet容器\r\n2.1.1 servlet API\r\n2.1.2 servlet的构造\r\n2.2 简化HTML的生成过程\r\n2.3 关于性能的几点注释\r\n2.4 处理表单数据和发送邮件\r\n2.4.1 建立HTML表单\r\n2.4.2 编写servlet\r\n2.5 小结\r\n\r\n第3章 错误处理和事件记录\r\n\r\n3.1 异常\r\n3.1.1 运行时刻和编译时刻错误\r\n3.1.2 在Java中处理异常\r\n3.1.3 在servlet中处理异常\r\n3.1.4 发送HTTP错误\r\n3.1.5 记录事件\r\n3.1.6 使用servlet异常\r\n3.2 小结\r\n\r\n第4章 会话与会话跟踪\r\n\r\n4.1 会话\r\n4.2 使用传统方法进行会话跟踪\r\n4.2.1 重写URL\r\n4.2.2 隐藏表单字段\r\n4.2.3 cookies\r\n4.3 使用Java Servlet API进行会话跟踪\r\n4.3.1 获得一个会话对象\r\n4.3.2 读写会话数据\r\n4.3.3 使会话对象失效\r\n4.3.4 一个使用会话的简单购物车\r\n4.3.5 方法的选择\r\n4.4 小结\r\n\r\n第5章 使用servlet环境\r\n\r\n5.1 “聊天”应用概述\r\n5.2 servlet环境的配置\r\n5.2.1 servlet环境的唯一URI路径前缀\r\n5.2.2 servlet环境的servlet名称和URI路径映射\r\n5.2.3 优点\r\n5.3 servlet环境状态\r\n5.3.1 初始化servlet环境状态\r\n5.3.2 访问环境状态\r\n5.4 改变环境状态\r\n5.5 运行聊天应用\r\n5.5.1 配置servlet引擎\r\n5.5.2 添加聊天室\r\n5.5.3 聊天\r\n5.6 小结\r\n\r\n第6章 生成动态内容\r\n\r\n6.1 MIME类型\r\n6.1.1 Image/jpeg\r\n6.1.2 Image/gif\r\n6.1.3 Image/png\r\n6.2 返回二进制数据\r\n6.3 创建GIF图像\r\n6.3.1 创建一个不显示的图像\r\n6.3.2 对图像进行编码\r\n6.4 统计图servlet\r\n6.4.1 实用类\r\n6.4.2 servlet本身\r\n6.4.3 图形环境\r\n6.4.4 创建颜色\r\n6.4.5 绘制饼形图\r\n6.4.6 绘制条形图\r\n6.4.7 创建一个嵌入图像的HTML页面\r\n6.4.8 反向链接到页面\r\n6.5 小结\r\n\r\n第7章 JavaServer Pages介绍\r\n\r\n7.1 体系结构概述\r\n7.2 一个简单的JavaServer Page\r\n7.2.1 JavaServer Page的编程元素\r\n7.2.2 JSP伪指令\r\n7.2.3 JSP声明\r\n7.2.4 JSP scriptlet\r\n7.2.5 JSP表达式\r\n7.2.6 编写JSP页面的代码\r\n7.3 使用具有JSP的JavaBean组件\r\n7.4 文件浏览器\r\n7.5 浏览和查询数据库\r\n7.5.1 询问正确的问题\r\n7.5.2 查询数据库\r\n7.5.3 浏览数据库\r\n7.5.4 混合servlet和JSP\r\n7.6 用applet和beau增强用户界面\r\n7.7 小结\r\n\r\n第8章 连接数据库\r\n\r\n8.1 向servlet增加数据\r\n8.1.1 Java数据库连接性\r\n8.1.2 影片数据库\r\n8.2 用预备式语句优化性能\r\n8.3 合并Connection对象\r\n8.4 小结\r\n\r\n第9章 连接池\r\n\r\n9.1 池化资源\r\n9.2 传统的连接池\r\n9.2.1 ConnectionPool类\r\n9.2.2 PoolManager类\r\n9.2.3 例子客户\r\n9.3 JDBC 2.0 Standard Extension连接池\r\n9.3.1 主要概念\r\n9.3.2 带有连接池的DataSource\r\n9.4 将我们的连接池修改得像JDBC 2.0 SE\r\n9.4.1 ConnectionWrapper类\r\n9.4.2 ConnectionPool的修改\r\n9.4.3 例子客户\r\n9.5 小结\r\n\r\n第10章 servlet链接\r\n\r\n10.1 使用别名链接servlet\r\n10.1.1 配置servlet引擎\r\n10.1.2 使用别名的servlet链接\r\n10.2 使用MIME类型过滤servlet结果\r\n10.2.1 配置Web服务器\r\n10.2.2 使用MIME-Type过滤内容\r\n10.3 小结\r\n\r\n第11章 servlet通信\r\n\r\n11.1 从applet中调用servlet\r\n11.2 RequestDispatcher接口\r\n11.3 小结\r\n\r\n第12章 利用servlet进行分布式计算\r\n\r\n12.1 远端方法调用\r\n12.1.1 远端对象\r\n12.1.2 stub和skeleton\r\n12.1.3 RMI注册表\r\n12.1.4 Java客户\r\n12.1.5 实现RMI的步骤总结\r\n12.2 Java 2的安全机制\r\n12.3 建立一个远端对象\r\n12.3.1 创建远端接口\r\n12.3.2 实现远端接口\r\n12.3.3 编译并运行代码\r\n12.3.4 创建RMI客户应用\r\n12.4 建立RMI客户的servlet\r\n12.4.1 安装安全管理器\r\n12.4.2 获得远端接口的引用\r\n12.4.3 调用远端方法\r\n12.5 小结\r\n\r\n第13章 JavaMail和servlet\r\n\r\n13.1 安装JavaMail\r\n13.2 提供者注册表\r\n13.3 使用JavaMail\r\n13.3.1 JavaMail会话\r\n13.3.2 构造一个报文\r\n13.3.3 传输服务\r\n13.4 SendMail servlet\r\n13.5 存储转发服务\r\n13.6 WebMail servlet\r\n13.7 小结\r\n\r\n第14章 XML介绍\r\n\r\n14.1 什么是XML\r\n14.1.1 可扩展性\r\n14.1.2 可结构化\r\n14.1.3 可确认性\r\n14.2 XML像什么\r\n14.3 用Java进行分析\r\n14.4 有效的XML文档\r\n14.5 DTD像什么\r\n14.5.1 名称\r\n14.5.2 数据类型\r\n14.5.3 注释\r\n14.5.4 包含/忽略\r\n14.5.5 数据处理指令\r\n14.5.6 码元声明\r\n14.5.7 属性字声明\r\n14.5.8 实体声明\r\n14.5.9 符号声明\r\n14.6 对有效XML进行分析\r\n14.7 关于分析的更多内容\r\n14.8 SAX\r\n14.9 DOM\r\n14.10 Pizza servlet\r\n14.11 小结\r\n14.12 XML的资源\r\n\r\n第15章 站点Weeds of EI Limon 2\r\n\r\n15.1 站点介绍\r\n15.2 工作原理\r\n15.3 不友好的网络\r\n15.4 工具\r\n15.5 XML、SQL和Java对象\r\n15.5.1 XML文件\r\n15.5.2 XML到SQL的映射\r\n15.6 Weeds类\r\n15.6.1 将关系数据库映射到对象\r\n15.6.2 创建并装入数据库\r\n15.7 URL重写和文件的布局\r\n15.7.1 Web浏览器中的网页\r\n15.7.2 服务器上实际有些什么\r\n15.8 JSP和JavaBean\r\n15.8.1 Index.jsp和Common.jsp\r\n15.8.2 Weed.jsp\r\n15.8.3 Error.jsp\r\n15.9 bean\r\n15.10 从数据库中提取图像\r\n15.10.1 ViewWeed类\r\n15.10.2 InsertImages类\r\n15.11 小结\r\n\r\n第16章 错误跟踪器事例研究\r\n\r\n16.1 工程介绍\r\n16.2 开发过程的选择\r\n16.3 合理统一过程\r\n16.3.1 开始阶段\r\n16.3.2 详细描述阶段\r\n16.3.3 构建阶段\r\n16.3.4 转移阶段\r\n16.3.5 RUP内的活动\r\n16.4 错误跟踪器的开始阶段\r\n16.5 下一步工作\r\n\r\n第17章 错误跟踪器事例研究:详细描述、构建和转移阶段\r\n\r\n17.1 详细描述\r\n17.1.1 原型设计\r\n17.1.2 低精度的用户界面原型设计\r\n17.1.3 技术选择——信息输出\r\n17.1.4 技术选择——对象的分布\r\n17.1.5 技术选择——报文处理\r\n17.1.6 定义应用的体系结构\r\n17.1.7 充实对象模型\r\n17.2 质量工程\r\n17.3 构建\r\n17.3.1 用IDL定义组件\r\n17.3.2 构建业务模型组件\r\n17.3.3 业务模型对象的定义及持续性\r\n17.3.4 建立映射组件\r\n17.3.5 构建业务逻辑组件\r\n17.3.6 构建用户界面组件\r\n17.3.7 构建错误跟踪器的servlet\r\n17.3.8 建立错误跟踪器\r\n17.4 转移阶段\r\n17.4.1 配置运行时刻选项\r\n17.4.2 配置和建立数据库\r\n17.4.3 运行错误跟踪器\r\n17.4.4 运行Web客户\r\n17.5 小结\r\n\r\n第18章 从CGI转移到servlet\r\n\r\n18.1 概述\r\n18.2 获得环境变量\r\n18.3 使用cookie\r\n18.3.1 用Java来处理cookies\r\n18.3.2 举例——用cookies创建一个购物车\r\n18.4 正则表达式\r\n18.5 小结\r\n\r\n第19章 国际化Web站点\r\n\r\n19.1 字符集\r\n19.2 字符编码\r\n19.3 在Java核心API中支持的字符编码\r\n19.4 内容协商\r\n19.5 Servlet API中支持的字符编码\r\n19.5.1 国际化servlet\r\n19.5.2 返回文本文件的变体\r\n19.6 小结\r\n\r\n第20章 智能servlet\r\n\r\n20.1 混合的网络配置\r\n20.2 混合的数据库平台\r\n20.3 混合的处理和操作系统平台\r\n20.3.1 servlet的解决方案:one-to-one\r\n20.3.2 servlet链接的解决方案\r\n20.3.3 智能servlet解决方案\r\n20.4 请求的处理过程\r\n20.5 进程授权\r\n20.6 在企业中实现“智能servlet”\r\n20.6.1 servlet作为任务管理者\r\n20.6.2 授权请求的力量\r\n20.6.3 将进程与servlet分离\r\n20.6.4 尽可能地抽象servlet和ancester类\r\n20.7 智能servlet的扩展性\r\n20.7.1 用Hashtable排除方法参数\r\n20.7.2 不需重新编译servlet而添加功能\r\n20.7.3 使用预先做好的HTML文件进行动态更改\r\n20.8 小结\r\n\r\n第21章 使用JNDI进行服务器编程\r\n\r\n21.1 命名和目录服务\r\n21.1.1 网络就是计算机\r\n21.1.2 命名服务\r\n21.1.3 目录服务\r\n21.2 为什么使用LDAP\r\n21.3 介绍JNDI\r\n21.4 使用JNDI\r\n21.4.1 安装JNDI\r\n21.4.2 JNDI程序包\r\n21.5 JNDI服务提供者和AKA JNDI驱动程序\r\n21.5.1 如何得到JNDI服务提供者\r\n21.5.2 开发自己的服务提供者\r\n21.6 基本的LDAP操作\r\n21.6.1 标准的LDAP操作\r\n21.6.2 用JNDI连接到LDAP服务器\r\n21.6.3 绑定\r\n21.6.4 检索LDAP服务器\r\n21.6.5 确定LDAP的检索范围\r\n21.6.6 检索操作\r\n21.7 LDAP服务器的修改\r\n21.7.1 增加条目\r\n21.7.2 修改条目\r\n21.7.3 删除条目\r\n21.8 小结\r\n\r\n第22章 使用LDAP和Java\r\n\r\n22.1 在LDAP里存储和取回Java对象\r\n22.2 分散存储和集中存储\r\n22.3 使用JNDI/DAP改进顾客服务\r\n22.3.1 介绍基本对象\r\n22.3.2 获得数据\r\n22.3.3 屏幕镜头\r\n22.3.4 LDAP的目录信息树\r\n22.3.5 顾客服务代码\r\n22.4 小结\r\n\r\n第23章 Enterprise JavaBeans\r\n\r\n23.1 Web需要可移植性\r\n23.1.1 Java和Web\r\n23.1.2 服务端移植性\r\n23.1.3 用于Web应用的服务\r\n23.1.4 Enterprise JavaBeans和WebOS\r\n23.2 EJB规范\r\n23.2.1 在EJB规范中的角色\r\n23.2.2 indirection观点\r\n23.2.3 三种规约定义一个容器\r\n23.3 会话bean\r\n23.3.1 引用和句柄是活动的\r\n23.3.2 会话bean的生命周期\r\n23.3.3 事务性和非事务性方法\r\n23.3.4 钝化和激活\r\n23.4 实体bean\r\n23.4.1 实体bean的持续性\r\n23.4.2 实体bean的身份\r\n23.4.3 实现主关键字\r\n23.4.4 搜索器\r\n23.4.5 激活和钝化\r\n23.4.6 实体bean的生命周期\r\n23.5 事务管理\r\n23.6 调度描述符\r\n23.7 小结\r\n\r\n第24章 索引和检索\r\n\r\n24.1 spider\r\n24.1.1 信息搜集\r\n24.1.2 附加信息\r\n24.1.3 分析器\r\n24.1.4 数据库\r\n24.2 GUI\r\n24.3 开始爬行\r\n24.4 我,机器人\r\n24.5 客户\r\n24.6 优化和扩展\r\n24.7 链接\r\n\r\n第25章 未来服务器Jini和JavaSpace\r\n\r\n25.1 警告:即将发生的变化\r\n25.2 展望未来:Jini事例研究\r\n25.2.1 在线贷款许可Web站点\r\n25.2.2 仔细考虑的问题\r\n25.3 驱动分布式设备\r\n25.3.1 分布式计算\r\n25.3.2 自然不协调性\r\n25.4 计算上的革命\r\n25.4.1 集中式控制与动态分组分裂\r\n25.4.2 Jini是我们共同工作的方式!\r\n25.5 剥离Jini层\r\n25.5.1 发现和加入协议\r\n25.5.2 查找服务——代理\r\n25.5.3 Sun提供的实现\r\n25.6 投入Jini的海洋\r\n25.6.1 为探测准备系统\r\n25.6.2 接触REGGIE——一个参考查找服务\r\n25.6.3 其他基本的Jini部分\r\n25.6.4 编写三个Jini服务的代码\r\n25.6.5 编写一个Jini客户的代码\r\n25.6.6 测试自己的djinn\r\n25.6.7 随着Jini技术一同前进\r\n\r\n第26章 同JavaSpace一起工作\r\n\r\n26.1 什么是JavaSpace\r\n26.1.1 JavaSpace是Java接口\r\n26.1.2 JavaSpace是Jini服务\r\n26.1.3 JavaSpace像查找服务\r\n26.1.4 JavaSpace是真正的对象数据库\r\n26.1.5 JavaSpace是你的MOM\r\n26.1.6 JavaSpace是steroid上的一种排队服务\r\n26.1.7 看看飘在天空中的云\r\n26.2 个人的JavaSpace构造集合\r\n26.2.1 和你需要的空间一样多\r\n26.2.2 JavaSpace里的条目\r\n26.2.3 write()方法\r\n26.2.4 read()方法\r\n26.2.5 take()方法\r\n26.2.6 通知的注册:Jini分布式事件\r\n26.2.7 条目提交的优化\r\n26.2.8 用JavaSpace实现工作流程\r\n26.2.9 将并行性加入到JavaSpace系统中\r\n26.3 将JavaSpace添加到我们的事例研究中\r\n26.3.1 系统中的服务\r\n26.3.2 系统中的JavaSpace\r\n26.3.3 系统的示意图\r\n26.3.4 精炼我们的设计\r\n26.3.5 准备实现\r\n26.3.6 JavaSpace小结\r\n\r\n第27章 编写基于Jini的站点的代码\r\n\r\n27.1 模拟业务逻辑\r\n27.2 本地优化\r\n27.3 附加模块\r\n27.4 编写定制条目\r\n27.4.1 UserEntry\r\n27.4.2 UserEntryBean\r\n27.5 编写ServerNode\r\n27.6 编写JSpaceServlet\r\n27.7 编写服务节点\r\n27.7.1 NameVerifierNode\r\n27.7.2 CreditCheckerNode\r\n27.7.3 HumanVerificationNode\r\n27.8 编写测试工具\r\n27.8.1 DataPut——一个空间写入器\r\n27.8.2 流量生成器\r\n27.8.3 DumpSpace——一个空间转储器\r\n27.8.4 编译代码\r\n27.9 创建JavaSpace\r\n27.9.1 mahalo—Sun的事务服务\r\n27.9.2 outrigger—Sun的JavaSpace服务\r\n27.9.3 演奏JavaSpace交响乐\r\n27.10 设置系统\r\n27.10.1 在三个机器组成的网络上的实现步骤\r\n27.10.2 一步一步的启动过程\r\n27.10.3 测验我们的分布式系统\r\n27.10.4 我们已经成功地完成了的工作\r\n\r\n附录A HTTP\r\n附录B Java对象流及串行化\r\n附录C 密码术和servlet\r\n附录D LogWriter类\r\n附录E UML符号\r\n附录F JSery的配置\r\n附录G ServletRunner和Java Web Server的配置\r\n附录H JRun的配置\r\n附录J JSDK API参考\r\n附录K JavaServer Pages API参考\r\n附录L JNDI API参考\r\n附录M 核心JavaMail/JAF API参考\r\n附录N 核心Jini API参考\r\n附录O JavaSpaces API参考\r\n附录P Enterprise JavaBeans API参考\r\n附录Q JDBC API参考\r\n附录R 支持与勘误表\r\n\r\n