本书从J2EE的基础知识开始,全面涵盖了EJB、CMP、JSP、XML、WEB服务等相关知识。每天的课程都提供了一些练习,有助于读者巩固所学知识。书中还提供了一个完整的求职代理实例,读者可以结合本书附带光盘中的内容,动手操作完成这个实例。
本书共分为21课,每天一课,共三周时间可以完成全部内容的学习。每一周的课程讲述了J2EE和EJB的相关知识,内容包括n层开发、J2EE平台和角色、命名和目录服务、EJB简介、会话EJB、实体EJB、CMP和EJB QL等;和疆周的课程介绍了异步交互和如何开发JSP、JSP标记库等;第三周的课程介绍了企业应用的安全性和完、XML文档转换、模式、整合外部资源、WEB服务等。
本书适合于有一定Java编程经验的程序员阅读。通过本书的学习,能将您的Java技能提高到一个新的水平。\r\n
第一周课程 J2EE和EJB的简介 \r\n\r\n 第1天课程 挑战N层开发 12 \r\n\r\n 1.1 单层程序的开发 12 \r\n\r\n 1.2 向二层开发进军 13 \r\n\r\n 1.3 用模块简化复杂性 15 \r\n\r\n 1.3.1 组件技术 16 \r\n\r\n 1.3.2 模块化的好处 16 \r\n\r\n 1.4 三层方案的优势 16 \r\n\r\n 1.5 企业计算模块 17 \r\n\r\n 1.5.1 生命周期 17 \r\n\r\n 1.5.2 持久性 17 \r\n\r\n 1.5.3 命名 18 \r\n\r\n 1.5.4 事务 18 \r\n\r\n 1.6 Java 2企业版(J2EE) 18 \r\n\r\n 1.6.1 组件和容器 19 \r\n\r\n 1.6.2 J2EE标准服务 19 \r\n\r\n 1.6.3 J2EE蓝图 10 \r\n\r\n 1.6.4 J2EE兼容性测试套件 11 \r\n\r\n 1.7 J2EE的发展前景 12 \r\n\r\n 1.8 小结 12 \r\n\r\n 1.9 问与答 12 \r\n\r\n 1.10 练习 13 \r\n\r\n 第2天课程 J2EE平台和角色 14 \r\n\r\n 2.1 再谈J2EE平台 14 \r\n\r\n 2.2 使用Sun微系统的J2EE SDK 15 \r\n\r\n 2.2.1 安装J2EE SDK 1.3 15 \r\n\r\n 2.2.2 启动J2EE引用实现(RI) 17 \r\n\r\n 2.2.3 解决J2EE和云景数据库服务器启动时的常见问题 19 \r\n\r\n 2.2.4 关闭J2EE RI和云景数据库服务器 21 \r\n\r\n 2.2.5 本书中涉及的软件 21 \r\n\r\n 2.3 了解层和组件的概念 22 \r\n\r\n 2.3.1 业务层 22 \r\n\r\n 2.3.2 表达层 25 \r\n\r\n 2.3.3 组件:以Web应用为中心 26 \r\n\r\n 2.3.4 客户层 28 \r\n\r\n 2.3.5 独立的客户端 31 \r\n\r\n 2.4 了解容器 32 \r\n\r\n 2.5 了解容器为组件提供的服务 34 \r\n\r\n 2.5.1 超文本传输协议(HTTP) 34 \r\n\r\n 2.5.2 安全套接层超文本传输协议(HTTPS) 34 \r\n\r\n 2.5.3 Java数据库连接(JDBC) 34 \r\n\r\n 2.5.4 Java事务API(JTA) 34 \r\n\r\n 2.5.5 Java认证和授权服务(JAAS) 35 \r\n\r\n 2.5.6 用于解析XML的Java API(JAXP) 35 \r\n\r\n 2.5.7 Java命名和目录接口(JNDI) 35 \r\n\r\n 2.5.8 JavaBean激活框架(JAF) 35 \r\n\r\n 2.5.9 JavaMail 36 \r\n\r\n 2.5.10 Java消息服务(JMS) 36 \r\n\r\n 2.5.11 Java接口定义语言(Java IDL) 36 \r\n\r\n 2.5.12 基于IIOP协议的远程方法调用(RMI-IIOP) 36 \r\n\r\n 2.5.13 连接器体系结构 37 \r\n\r\n 2.6 J2EE平台上的角色简介 37 \r\n\r\n 2.6.1 J2EE产品供应商 37 \r\n\r\n 2.6.2 应用程序组件供应商 38 \r\n\r\n 2.6.3 应用程序组装者 38 \r\n\r\n 2.6.4 应用程序部署者 38 \r\n\r\n 2.6.5 系统管理员 38 \r\n\r\n 2.6.6 工具供应商 38 \r\n\r\n 2.6.7 J2EE工具发展前景 39 \r\n\r\n 2.7 打包和部署J2EE应用程序 39 \r\n\r\n 2.7.1 J2EE应用程序 40 \r\n\r\n 2.7.2 将模块分解为组件 41 \r\n\r\n 2.8 小结 42 \r\n\r\n 2.9 问与答 42 \r\n\r\n 2.10 练习——学习实例 43 \r\n\r\n 2.10.1 求职代理 43 \r\n\r\n 2.10.2 使用求职代理实例 43 \r\n\r\n 2.10.3 熟能生巧 45 \r\n\r\n 2.10.4 学习实例在光盘中的目录 46 \r\n\r\n 2.10.5 安装实例数据库 46 \r\n\r\n 第3天课程 命名和目录服务 49 \r\n\r\n 3.1 命名和目录服务 49 \r\n\r\n 3.2 为什么使用命名服务 50 \r\n\r\n 3.3 JNDI是什么 50 \r\n\r\n 3.4 常见命名服务 50 \r\n\r\n 3.5 命名约定 51 \r\n\r\n 3.6 使用JNDI 51 \r\n\r\n 3.7 获得一个初始环境 52 \r\n\r\n 3.8 初始环境命名异常 53 \r\n\r\n 3.8.1 定义JNDI服务 53 \r\n\r\n 3.8.2 JNDI属性文件 54 \r\n\r\n 3.8.3 应用程序属性 55 \r\n\r\n 3.8.4 Applet参数 55 \r\n\r\n 3.8.5 硬编码的属性 55 \r\n\r\n 3.9 JNDI对象绑定 56 \r\n\r\n 3.9.1 对象绑定 56 \r\n\r\n 3.9.2 绑定时的常见问题 56 \r\n\r\n 3.9.3 名字持久性 57 \r\n\r\n 3.9.4 重绑定对象 57 \r\n\r\n 3.9.5 解除对象绑定 57 \r\n\r\n 3.9.6 对象重命名 58 \r\n\r\n 3.10 JNDI名字查找 58 \r\n\r\n 3.10.1 改变环境参数 58 \r\n\r\n 3.10.2 定位RMI-IIOP对象 59 \r\n\r\n 3.11 环境参数 60 \r\n\r\n 3.11.1 环境参数列表 60 \r\n\r\n 3.11.2 创建和销毁环境参数 62 \r\n\r\n 3.12 更多关于JNDI名字的内容 63 \r\n\r\n 3.12.1 特殊字符 63 \r\n\r\n 3.12.2 复合名字与混合名字 63 \r\n\r\n 3.12.3 URL的 64 \r\n\r\n 3.13 属性 64 \r\n\r\n 3.13.1 LDAP X.500命名概述 65 \r\n\r\n 3.13.2 获取LDAP服务器 65 \r\n\r\n 3.13.3 使用OpenLDAP 65 \r\n\r\n 3.13.4 配置JNDI以使用LDAP 68 \r\n\r\n 3.13.5 测试LDAP服务器 68 \r\n\r\n 3.13.6 获取目录环境 69 \r\n\r\n 3.13.7 读取属性 69 \r\n\r\n 3.13.8 搜索对象 70 \r\n\r\n 3.13.9 操作属性 72 \r\n\r\n 3.14 更多关于对象的内容 73 \r\n\r\n 3.14.1 从代码基中装载类 74 \r\n\r\n 3.14.2 定义代码基 74 \r\n\r\n 3.14.3 引用 76 \r\n\r\n 3.15 JNDI还可以做什么 79 \r\n\r\n 3.15.1 JNDI事件 79 \r\n\r\n 3.15.2 安全性 79 \r\n\r\n 3.16 小结 80 \r\n\r\n 3.17 问与答 81 \r\n\r\n 3.18 练习 81 \r\n\r\n 第4天课程 EJB简介 82 \r\n\r\n 4.1 什么是EJB 82 \r\n\r\n 4.1.1 Bean. 客户端. 容器和服务器 82 \r\n\r\n 4.1.2 EJB概览 83 \r\n\r\n 4.1.3 发现EJB 83 \r\n\r\n 4.1.4 EJB的类型 84 \r\n\r\n 4.1.5 EJB的常见使用 84 \r\n\r\n 4.2 为什么使用EJB 84 \r\n\r\n 4.2.1 隐藏程序的复杂性 85 \r\n\r\n 4.2.2 从UI和数据访问中分离业务逻辑 85 \r\n\r\n 4.2.3 容器服务 86 \r\n\r\n 4.3 EJB中包括什么 86 \r\n\r\n 4.3.1 业务接口 86 \r\n\r\n 4.3.2 业务逻辑 88 \r\n\r\n 4.3.3 厂类信息 92 \r\n\r\n 4.3.4 Bean元数据 93 \r\n\r\n 4.4 如何创建EJB 93 \r\n\r\n 4.4.1 创建机制 94 \r\n\r\n 4.4.2 创建代码的限制 94 \r\n\r\n 4.4.3 创建可部署组件 94 \r\n\r\n 4.5 如何部署EJB 97 \r\n\r\n 4.5.1 在容器中插入配置 97 \r\n\r\n 4.5.2 执行部署 97 \r\n\r\n 4.6 如何使用EJB 97 \r\n\r\n 4.6.1 发现EJB 97 \r\n\r\n 4.6.2 检索与使用 98 \r\n\r\n 4.6.3 除去EJB 98 \r\n\r\n 4.6.4 运行客户端 99 \r\n\r\n 4.7 在J2EE RI中部署和使用一个EJB 99 \r\n\r\n 4.7.1 打开学习实例的EAR文件 100 \r\n\r\n 4.7.2 查看学习实例应用程序 101 \r\n\r\n 4.7.3 部署实例应用程序 103 \r\n\r\n 4.7.4 测试实例应用程序 104 \r\n\r\n 4.7.5 解决实例应用程序中出现的问题 105 \r\n\r\n 4.8 小结 106 \r\n\r\n 4.9 问与答 106 \r\n\r\n 4.10 练习 107 \r\n\r\n 第5天课程 会话EJB 108 \r\n\r\n 5.1 概述 108 \r\n\r\n 5.2 会话Bean的javax.ejb包 109 \r\n\r\n 5.3 无状态会话Bean的生命周期 110 \r\n\r\n 5.4 指定无状态会话Bean 113 \r\n\r\n 5.5 无状态会话Bean的实现 115 \r\n\r\n 5.5.1 javax.ejb.SessionBean的实现 115 \r\n\r\n 5.5.2 本地接口方法的实现 115 \r\n\r\n 5.5.3 远程接口方法的实现 116 \r\n\r\n 5.5.4 异常 118 \r\n\r\n 5.6 配置和部署一个无状态会话Bean 119 \r\n\r\n 5.6.1 使用deploytool 119 \r\n\r\n 5.6.2 结构元素 120 \r\n\r\n 5.6.3 表达元素 121 \r\n\r\n 5.6.4 会话元素 122 \r\n\r\n 5.6.5 部署企业应用程序 128 \r\n\r\n 5.7 有状态会话Bean的生命周期 128 \r\n\r\n 5.8 指定有状态会话Bean 131 \r\n\r\n 5.9 有状态会话Bean的实现 132 \r\n\r\n 5.9.1 钝化 132 \r\n\r\n 5.9.2 超时 133 \r\n\r\n 5.9.3 连锁状态 133 \r\n\r\n 5.10 配置和部署有状态会话Bean 134 \r\n\r\n 5.11 客户端视图 134 \r\n\r\n 5.12 模式和习惯 135 \r\n\r\n 5.12.1 业务接口 135 \r\n\r\n 5.12.2 适配器 137 \r\n\r\n 5.12.3 粗粒度 137 \r\n\r\n 5.13 忠告 137 \r\n\r\n 5.14 小结 138 \r\n\r\n 5.15 问与答 138 \r\n\r\n 5.16 练习 138 \r\n\r\n 第6天课程 实体EJB 141 \r\n\r\n 6.1 概述 141 \r\n\r\n 6.1.1 再谈n层体系结构 141 \r\n\r\n 6.1.2 与关系型数据库管理系统技术的比较 142 \r\n\r\n 6.1.3 识别实体 142 \r\n\r\n 6.2 实体Bean的javax.ejb包 144 \r\n\r\n 6.3 实体Bean的类型 145 \r\n\r\n 6.4 远程接口与本地接口 145 \r\n\r\n 6.5 BMP实体Bean的生命周期 146 \r\n\r\n 6.6 指定BMP实体Bean 150 \r\n\r\n 6.6.1 本地Home接口 151 \r\n\r\n 6.6.2 本地接口 154 \r\n\r\n 6.7 BMP实体Bean的实现 155 \r\n\r\n 6.7.1 实现本地Home接口方法 159 \r\n\r\n 6.7.2 实现本地接口方法 164 \r\n\r\n 6.7.3 生成ID号 165 \r\n\r\n 6.7.4 再谈粒度 167 \r\n\r\n 6.7.5 使用查找方法的注意事项 167 \r\n\r\n 6.7.6 EJB容器性能调试 168 \r\n\r\n 6.8 配置和部署BMP实体Bean 169 \r\n\r\n 6.9 客户端视图 172 \r\n\r\n 6.10 再谈会话Bean 173 \r\n\r\n 6.11 模式和习惯 176 \r\n\r\n 6.11.1 接口. 外观和状态 176 \r\n\r\n 6.11.2 为实体Bean使用本地接口 176 \r\n\r\n 6.11.3 与值集绑定的类 177 \r\n\r\n 6.11.4 自我封装域 179 \r\n\r\n 6.11.5 不要为查找方法使用Enumeration 179 \r\n\r\n 6.11.6 晚连接, 早释放 179 \r\n\r\n 6.11.7 再谈业务接口 180 \r\n\r\n 6.12 忠告 181 \r\n\r\n 6.13 小结 182 \r\n\r\n 6.14 问与答 182 \r\n\r\n 6.15 练习 182 \r\n\r\n 第7天课程 CMP和EJB QL 185 \r\n\r\n 7.1 容器管理的持久性概述 185 \r\n\r\n 7.1.1 N层体系结构(再谈谈)和CMP字段 186 \r\n\r\n 7.1.2 浅谈实例数据库 188 \r\n\r\n 7.2 CMP实体Bean的生命周期 189 \r\n\r\n 7.3 容器管理的关联 190 \r\n\r\n 7.3.1 关联类型 191 \r\n\r\n 7.3.2 导航 191 \r\n\r\n 7.3.3 cmr字段元素 192 \r\n\r\n 7.3.4 操作关联 194 \r\n\r\n 7.4 EJB查询语言 197 \r\n\r\n 7.4.1 EJB选择方法 198 \r\n\r\n 7.4.2 语法和例子 199 \r\n\r\n 7.4.3 更多内容 204 \r\n\r\n 7.5 指定CMP实体Bean 205 \r\n\r\n 7.5.1 本地Home接口 205 \r\n\r\n 7.5.2 本地接口 205 \r\n\r\n 7.6 CMP实体Bean的实现 206 \r\n\r\n 7.6.1 实现javax.ejb.EntityBean 206 \r\n\r\n 7.6.2 实现本地Home接口方法 208 \r\n\r\n 7.6.3 查找方法 210 \r\n\r\n 7.6.4 实现本地接口方法 213 \r\n\r\n 7.7 配置CMP实体Bean 214 \r\n\r\n 7.7.1 entity元素 214 \r\n\r\n 7.7.2 relationships元素 217 \r\n\r\n 7.8 部署CMP实体Bean 221 \r\n\r\n 7.9 模式和习惯 222 \r\n\r\n 7.9.1 在ejbLoad()/ejbStore()中规范化/反规范化数据 222 \r\n\r\n 7.9.2 不要显示cmp字段元素 223 \r\n\r\n 7.9.3 不要显示cmr字段元素 224 \r\n\r\n 7.9.4 通过Bean接口实施引用的完整性 225 \r\n\r\n 7.9.5 使用选择方法实现Home方法 225 \r\n\r\n 7.10 忠告 226 \r\n\r\n 7.11 小结 226 \r\n\r\n 7.12 问与答 227 \r\n\r\n 7.13 练习 227 \r\n\r\n 第二周课程 开发J2EE应用程序 \r\n\r\n 第8天课程 事务处理和持久性 230 \r\n\r\n 8.1 事务处理概述 230 \r\n\r\n 8.2 容器管理的事务划分 232 \r\n\r\n 8.3 Bean管理的事务划分 237 \r\n\r\n 8.3.1 动机和限制 237 \r\n\r\n 8.3.2 使用Java 事务API 237 \r\n\r\n 8.3.3 部署BMTD Bean 240 \r\n\r\n 8.3.4 客户划分事务 240 \r\n\r\n 8.3.5 再谈异常 241 \r\n\r\n 8.4 延长有状态会话bean的生命周期 242 \r\n\r\n 8.5 后台事务:事务实质 243 \r\n\r\n 8.5.1 事务管理器. 资源管理器和2PC 244 \r\n\r\n 8.5.2 JTA API 245 \r\n\r\n 8.5.3 事务出错后应如何解决 247 \r\n\r\n 8.5.4 JTA与JTS 248 \r\n\r\n 8.6 持久性技术概述 249 \r\n\r\n 8.7 JDBC 250 \r\n\r\n 8.8 SQLj 252 \r\n\r\n 8.8.1 SQLj Part 0 253 \r\n\r\n 8.8.2 SQLj Part 1 257 \r\n\r\n 8.8.3 SQLj Part 2 261 \r\n\r\n 8.9 JDO 264 \r\n\r\n 8.9.1 JDO概念 265 \r\n\r\n 8.9.2 javax.jdo类和接口 267 \r\n\r\n 8.9.3 查询 268 \r\n\r\n 8.9.4 其他功能 270 \r\n\r\n 8.10 忠告 270 \r\n\r\n 8.11 小结 271 \r\n\r\n 8.12 问与答 271 \r\n\r\n 8.13 练习 272 \r\n\r\n 第9天课程 Java消息服务 273 \r\n\r\n 9.1 消息 273 \r\n\r\n 9.2 Java消息服务API 275 \r\n\r\n 9.3 JMS API体系结构 275 \r\n\r\n 9.3.1 消息域 277 \r\n\r\n 9.3.2 JMS 点对点消息域 277 \r\n\r\n 9.3.3 JMS发布/订阅消息域 277 \r\n\r\n 9.4 使用JBoss开发JMS应用程序 278 \r\n\r\n 9.5 使用J2EE RI开发JMS应用程序 279 \r\n\r\n 9.5.1 J2EE RI连接工厂 279 \r\n\r\n 9.5.2 在J2EE RI中添加目的地 279 \r\n\r\n 9.5.3 在J2EE RI中创建队列 279 \r\n\r\n 9.6 点对点消息实例 281 \r\n\r\n 9.6.1 JMS消息 282 \r\n\r\n 9.6.2 创建消息 283 \r\n\r\n 9.6.3 发送消息 284 \r\n\r\n 9.6.4 关闭连接 284 \r\n\r\n 9.6.5 发送JMS文本消息实例 284 \r\n\r\n 9.6.6 使用消息 285 \r\n\r\n 9.7 简单的同步接收器实例 286 \r\n\r\n 9.7.1 接收JMS文本消息实例 286 \r\n\r\n 9.7.2 异步消息 287 \r\n\r\n 9.8 发布/订阅消息域 288 \r\n\r\n 9.9 发布/订阅消息实例 289 \r\n\r\n 9.9.1 公告板发布程序 289 \r\n\r\n 9.9.2 公告板订阅程序 291 \r\n\r\n 9.9.3 创建持久订阅 292 \r\n\r\n 9.9.4 JMS的其他特点 294 \r\n\r\n 9.10 XML简介 296 \r\n\r\n 9.11 小结 297 \r\n\r\n 9.12 问与答 297 \r\n\r\n 9.13 练习 298 \r\n\r\n 第10天课程 消息驱动Bean 299 \r\n\r\n 10.1 什么是消息驱动Bean 299 \r\n\r\n 10.1.1 消息生产者的观点 300 \r\n\r\n 10.1.2 与其他EJB的异同之处 300 \r\n\r\n 10.2 消息驱动Bean的编程接口 300 \r\n\r\n 10.3 消息驱动Bean的生命周期 301 \r\n\r\n 10.4 创建消息驱动Bean 302 \r\n\r\n 10.4.1 就绪方法池 302 \r\n\r\n 10.4.2 删除Bean 303 \r\n\r\n 10.4.3 使用消息 303 \r\n\r\n 10.4.4 处理异常 303 \r\n\r\n 10.4.5 容器管理的事务处理和Bean管理的事务处理 304 \r\n\r\n 10.4.6 消息认可 305 \r\n\r\n 10.4.7 JMS消息过滤器 305 \r\n\r\n 10.5 编写简单的消息驱动Bean 305 \r\n\r\n 10.6 运行实例 307 \r\n\r\n 10.6.1 创建队列 307 \r\n\r\n 10.6.2 部署消息驱动Bean 308 \r\n\r\n 10.6.3 创建发送客户端以创建消息 311 \r\n\r\n 10.7 开发代理学习实例 312 \r\n\r\n 10.7.1 步骤1——Sender Helper类 313 \r\n\r\n 10.7.2 步骤2——代理和注册会话Bean 314 \r\n\r\n 10.7.3 步骤3——消息驱动bean 316 \r\n\r\n 10.7.4 步骤4——创建JMS队列 321 \r\n\r\n 10.7.5 步骤5——部署EJB 321 \r\n\r\n 10.7.6 步骤6——测试ApplicantMatch Bean 321 \r\n\r\n 10.8 使用其他的体系结构 321 \r\n\r\n 10.9 小结 322 \r\n\r\n 10.10 问与答 322 \r\n\r\n 10.11 练习 322 \r\n\r\n 第11天课程 JavaMail 324 \r\n\r\n 11.1 E-Mail常识 324 \r\n\r\n 11.1.1 简单邮件传输协议(SMTP) 325 \r\n\r\n 11.1.2 邮箱协议(POP3) 326 \r\n\r\n 11.1.3 网络消息访问协议(IMAP) 326 \r\n\r\n 11.1.4 其他协议 326 \r\n\r\n 11.1.5 多用途Internet邮件扩展(MIME) 326 \r\n\r\n 11.2 JavaMail API简介 326 \r\n\r\n 11.3 安装开发环境 327 \r\n\r\n 11.4 发送第一封电子邮件 327 \r\n\r\n 11.5 创建多媒体电子邮件 331 \r\n\r\n 11.5.1 创建消息:方法#1 332 \r\n\r\n 11.5.2 创建消息:方法#2 335 \r\n\r\n 11.6 发送带附件的电子邮件 339 \r\n\r\n 11.7 探索JavaMail API 342 \r\n\r\n 11.7.1 检索消息 342 \r\n\r\n 11.7.2 删除消息 345 \r\n\r\n 11.7.3 取得附件 346 \r\n\r\n 11.7.4 认证用户和安全性 349 \r\n\r\n 11.8 小结 352 \r\n\r\n 11.9 问与答 352 \r\n\r\n 11.10 练习 353 \r\n\r\n 第12天课程 Servlet 354 \r\n\r\n 12.1 Servlet的用途和使用 354 \r\n\r\n 12.1.1 为Web应用程序修改Servlet 354 \r\n\r\n 12.1.2 服务器与平台独立性 355 \r\n\r\n 12.1.3 高效与可扩展性 355 \r\n\r\n 12.1.4 整合Servlet和服务器 355 \r\n\r\n 12.2 HTTP简介 356 \r\n\r\n 12.2.1 HTTP结构 356 \r\n\r\n 12.2.2 其他的HTTP方法 358 \r\n\r\n 12.2.3 服务器响应 358 \r\n\r\n 12.2.4 内容类型头 359 \r\n\r\n 12.3 HTML简介 359 \r\n\r\n 12.4 Servlet环境 363 \r\n\r\n 12.5 Servlet类继承体系 363 \r\n\r\n 12.6 简单的Servlet实例 363 \r\n\r\n 12.7 向Servlet传递参数数据 368 \r\n\r\n 12.7.1 如何访问参数 368 \r\n\r\n 12.7.2 具有参数的Servlet实例 368 \r\n\r\n 12.7.3 使用POST请求 370 \r\n\r\n 12.7.4 Servlet生命周期 370 \r\n\r\n 12.7.5 Servlet环境 371 \r\n\r\n 12.8 Web应用程序 372 \r\n\r\n 12.8.1 Web应用程序的文件和目录结构 372 \r\n\r\n 12.8.2 Web应用程序的部署描述符 373 \r\n\r\n 12.9 处理错误 374 \r\n\r\n 12.9.1 HTTP错误 374 \r\n\r\n 12.9.2 Servlet异常处理 375 \r\n\r\n 12.10 保留客户端信息和状态信息 376 \r\n\r\n 12.10.1 使用会话对象 376 \r\n\r\n 12.10.2 表单隐藏域 377 \r\n\r\n 12.10.3 Cookie 378 \r\n\r\n 12.10.4 创建一个Cookie 378 \r\n\r\n 12.10.5 重写URL 379 \r\n\r\n 12.11 Servlet过滤 380 \r\n\r\n 12.11.1 设计过滤器 380 \r\n\r\n 12.11.2 审计过滤器实例 381 \r\n\r\n 12.11.3 部署过滤器 382 \r\n\r\n 12.12 事件监听 385 \r\n\r\n 12.13 Servlet线程 388 \r\n\r\n 12.14 安全性和Servlet沙箱 388 \r\n\r\n 12.15 求职代理学习实例 389 \r\n\r\n 12.15.1 AgencyTable Servlet代码 389 \r\n\r\n 12.15.2 部署AgencyTable Servlet 391 \r\n\r\n 12.16 小结 394 \r\n\r\n 12.17 问与答 394 \r\n\r\n 12.18 练习 394 \r\n\r\n 第13天课程 JSP 396 \r\n\r\n 13.1 JSP是什么 396 \r\n\r\n 13.1.1 角色分离 397 \r\n\r\n 13.1.2 转换和执行 397 \r\n\r\n 13.2 JSP语法和结构 398 \r\n\r\n 13.3 第一个JSP实例 399 \r\n\r\n 13.4 JSP生命周期 402 \r\n\r\n 13.4.1 发现和纠正JSP错误 403 \r\n\r\n 13.4.2 JSP生命周期方法 406 \r\n\r\n 13.5 JSP指令 406 \r\n\r\n 13.5.1 include指令 407 \r\n\r\n 13.5.2 page指令 407 \r\n\r\n 13.6 存取HTTP Servlet变量 410 \r\n\r\n 13.7 使用HTTP请求的参数 410 \r\n\r\n 13.8 用JavaBean简化JSP网页 412 \r\n\r\n 13.8.1 什么是JavaBean 412 \r\n\r\n 13.8.2 定义JavaBean 412 \r\n\r\n 13.8.3 取得Bean属性 413 \r\n\r\n 13.8.4 设置Bean属性 413 \r\n\r\n 13.8.5 初始化Bean 414 \r\n\r\n 13.8.6 在求职代理实例中使用Bean 414 \r\n\r\n 13.9 向求职代理实例中添加Web接口 417 \r\n\r\n 13.9.1 结构和导航 417 \r\n\r\n 13.9.2 外观和感受 419 \r\n\r\n 13.9.3 错误处理页的定义 425 \r\n\r\n 13.9.4 部署JSP学习实例 427 \r\n\r\n 13.10 比较JSP和Servlet 429 \r\n\r\n 13.11 小结 430 \r\n\r\n 13.12 问与答 430 \r\n\r\n 13.13 练习 430 \r\n\r\n 第14天课程 JSP标记库 432 \r\n\r\n 14.1 标记库扮演的角色 432 \r\n\r\n 14.2 开发简单的自定义标记 433 \r\n\r\n 14.2.1 使用简单的标记 433 \r\n\r\n 14.2.2 标记库描述符(TLD) 434 \r\n\r\n 14.2.3 自定义Java标记 435 \r\n\r\n 14.2.4 自定义标记的生命周期方法 437 \r\n\r\n 14.2.5 自定义标记“Hello World' 437 \r\n\r\n 14.2.6 部署标记库Web应用程序 438 \r\n\r\n 14.2.7 定义TLD位置 439 \r\n\r\n 14.2.8 使用简单的标记 440 \r\n\r\n 14.3 带属性的标记 440 \r\n\r\n 14.4 定义脚本变量的标记 442 \r\n\r\n 14.5 迭代标记 446 \r\n\r\n 14.6 协作标记 449 \r\n\r\n 14.6.1 使用共享脚本变量 449 \r\n\r\n 14.6.2 分层的标记结构 449 \r\n\r\n 14.7 定义标记的额外信息对象 455 \r\n\r\n 14.7.1 验证属性 456 \r\n\r\n 14.7.2 定义脚本变量 457 \r\n\r\n 14.8 处理标记体 458 \r\n\r\n 14.9 JSP标准标记库(JSPTL) 460 \r\n\r\n 14.9.1 在J2EE RI中使用JSPTL 461 \r\n\r\n 14.9.2 使用JSPTL的forEach标记 461 \r\n\r\n 14.9.3 其他JSPTL标记 463 \r\n\r\n 14.9.4 JSPTL脚本语言 464 \r\n\r\n 14.9.5 其他Jakarta标记库 464 \r\n\r\n 14.10 小结 465 \r\n\r\n 14.11 问与答 465 \r\n\r\n 14.12 练习 466 \r\n\r\n 第三周课程 在企业中集成J2EE \r\n\r\n 第15天课程 安全 468 \r\n\r\n 15.1 安全概述 468 \r\n\r\n 15.2 常用安全技术 470 \r\n\r\n 15.2.1 对称加密法 470 \r\n\r\n 15.2.2 非对称加密 471 \r\n\r\n 15.2.3 SSL和HTTPS 471 \r\n\r\n 15.2.4 校验和与摘要 472 \r\n\r\n 15.2.5 数字证书 472 \r\n\r\n 15.3 J2EE中的安全 473 \r\n\r\n 15.3.1 J2EE安全术语 473 \r\n\r\n 15.3.2 使用J2EE RI安全 474 \r\n\r\n 15.4 安全和EJB 476 \r\n\r\n 15.4.1 定义EJB安全 476 \r\n\r\n 15.4.2 定义角色 476 \r\n\r\n 15.4.3 定义安全身份 478 \r\n\r\n 15.4.4 定义方法许可 479 \r\n\r\n 15.4.5 映射代理到角色 483 \r\n\r\n 15.4.6 使用角色作为安全身份 484 \r\n\r\n 15.5 Web应用程序和组件的安全 488 \r\n\r\n 15.5.1 Web 认证 489 \r\n\r\n 15.5.2 配置J2EE RI 基本认证 489 \r\n\r\n 15.5.3 声明的Web授权 490 \r\n\r\n 15.5.4 可编程Web授权 495 \r\n\r\n 15.5.5 加入可编程Web安全到学习实例 495 \r\n\r\n 15.5.6 使用安全的Web认证方案 497 \r\n\r\n 15.6 安全和JNDI 497 \r\n\r\n 15.6.1 简单LDAP认证 498 \r\n\r\n 15.6.2 SASL认证 498 \r\n\r\n 15.7 小结 500 \r\n\r\n 15.8 问与答 500 \r\n\r\n 15.9 练习 501 \r\n\r\n 第16天课程 整合XML和J2EE 502 \r\n\r\n 16.1 平台无关数据交换的原因 502 \r\n\r\n 16.2 XML起源 503 \r\n\r\n 16.3 XML结构和语法 504 \r\n\r\n 16.3.1 HTML和XML 504 \r\n\r\n 16.3.2 XML文档结构 505 \r\n\r\n 16.3.3 声明 505 \r\n\r\n 16.3.4 元素 505 \r\n\r\n 16.3.5 结构良好的XML文档 506 \r\n\r\n 16.3.6 属性 507 \r\n\r\n 16.3.7 注释 507 \r\n\r\n 16.4 创建有效XML文档 508 \r\n\r\n 16.4.1 文档类型定义 508 \r\n\r\n 16.4.2 名称空间 511 \r\n\r\n 16.4.3 用XML Schema强化文档结构 512 \r\n\r\n 16.4.4 如何在J2EE中使用XML 513 \r\n\r\n 16.5 解析XML 514 \r\n\r\n 16.6 JAXP包 515 \r\n\r\n 16.7 使用SAX解析XML 515 \r\n\r\n 16.8 文档对象模型(DOM)解析器 519 \r\n\r\n 16.9 修改DOM树 523 \r\n\r\n 16.10 支持XML绑定的Java体系结构 524 \r\n\r\n 16.11 扩展求职代理学习实例 525 \r\n\r\n 16.11.1 步骤1——改变会话Bean 526 \r\n\r\n 16.11.2 步骤2——修改MessageSender帮助类 527 \r\n\r\n 16.11.3 步骤3——修改ApplicationMatch消息驱动Bean 528 \r\n\r\n 16.12 小结 530 \r\n\r\n 16.13 问与答 530 \r\n\r\n 16.14 练习 530 \r\n\r\n 第17天课程 XML文档转换 532 \r\n\r\n 17.1 在客户端表示XML文档 532 \r\n\r\n 17.1.1 在浏览器上表示XML文档 533 \r\n\r\n 17.1.2 可扩展样式表语言(XSL) 533 \r\n\r\n 17.1.3 XSL格式化对象(XSL-FO) 533 \r\n\r\n 17.2 可扩展样式表转换(XSLT) 534 \r\n\r\n 17.2.1 应用样式表 535 \r\n\r\n 17.2.2 在服务器上存储转换后的文档 535 \r\n\r\n 17.2.3 在客户端表示XML文档和样式表 535 \r\n\r\n 17.2.4 在服务器上转换XML文档 536 \r\n\r\n 17.3 通过J2EE使用XALAN 536 \r\n\r\n 17.3.1 使用XALAN转换XML文档 537 \r\n\r\n 17.3.2 从命令行使用XALAN 537 \r\n\r\n 17.4 在Java应用程序中使用XSLT 538 \r\n\r\n 17.5 XSLT样式表 542 \r\n\r\n 17.5.1 模板规则 542 \r\n\r\n 17.5.2 XML元素的文本表示 546 \r\n\r\n 17.5.3 通过XSLT使用Xpath 547 \r\n\r\n 17.5.4 默认的样式表规则 549 \r\n\r\n 17.5.5 处理属性 549 \r\n\r\n 17.6 使用样式表元素 550 \r\n\r\n 17.6.1 处理空格和文本 551 \r\n\r\n 17.6.2 添加注释 552 \r\n\r\n 17.6.3 属性值 553 \r\n\r\n 17.6.4 创建和复制元素 554 \r\n\r\n 17.6.5 属性和属性集 557 \r\n\r\n 17.6.6 其他XSL元素 559 \r\n\r\n 17.7 XSLT编译器 562 \r\n\r\n 17.8 小结 562 \r\n\r\n 17.9 问与答 562 \r\n\r\n 17.10 练习 563 \r\n\r\n 第18天课程 模式 567 \r\n\r\n 18.1 J2EE模式 567 \r\n\r\n 18.1.1 什么是模式 567 \r\n\r\n 18.1.2 为什么使用模式 568 \r\n\r\n 18.1.3 模式的类型 569 \r\n\r\n 18.1.4 J2EE模式 569 \r\n\r\n 18.1.5 模式目录 570 \r\n\r\n 18.2 应用J2EE特定的模式 570 \r\n\r\n 18.2.1 在环境中应用模式 570 \r\n\r\n 18.2.2 通用模式 571 \r\n\r\n 18.2.3 J2EE表达层模式 571 \r\n\r\n 18.2.4 J2EE业务层模式 572 \r\n\r\n 18.2.5 J2EE综合层模式 572 \r\n\r\n 18.2.6 J2EE中的模式 573 \r\n\r\n 18.3 环境中的模式 573 \r\n\r\n 18.3.1 分析学习实例 573 \r\n\r\n 18.3.2 会话Facade和实体EJB 574 \r\n\r\n 18.3.3 数据交换和值对象 575 \r\n\r\n 18.3.4 非实体EJB的数据访问 578 \r\n\r\n 18.3.5 消息和异步激活 584 \r\n\r\n 18.3.6 组装实体 584 \r\n\r\n 18.3.7 组装JSP 585 \r\n\r\n 18.3.8 JSP和关注点分离 587 \r\n\r\n 18.3.9 客户端代理服务器和委托 590 \r\n\r\n 18.3.10 定位服务 591 \r\n\r\n 18.3.11 其他业务 591 \r\n\r\n 18.3.12 重构学习实例 592 \r\n\r\n 18.4 J2EE模式趋势 592 \r\n\r\n 18.5 小结 592 \r\n\r\n 18.6 问与答 593 \r\n\r\n 18.7 练习 593 \r\n\r\n 第19天课程 整合外部资源 594 \r\n\r\n 19.1 回顾外部资源和原有系统 594 \r\n\r\n 19.2 连接器体系结构简介 595 \r\n\r\n 19.2.1 体系结构概述 595 \r\n\r\n 19.2.2 角色与职责 596 \r\n\r\n 19.3 使用公共客户接口 598 \r\n\r\n 19.3.1 与EIS交互 599 \r\n\r\n 19.3.2 安装资源适配器 599 \r\n\r\n 19.3.3 创建第一个CCI应用程序 600 \r\n\r\n 19.3.4 管理事务和查找记录 606 \r\n\r\n 19.4 其他连接技术简介 610 \r\n\r\n 19.5 CORBA简介 610 \r\n\r\n 19.6 Java IDL简介 611 \r\n\r\n 19.7 使用基于IIOP的RMI 612 \r\n\r\n 19.7.1 基于JRMP的RMI实例 612 \r\n\r\n 19.7.2 基于IIOP的RMI实例 616 \r\n\r\n 19.8 JNI简介 619 \r\n\r\n 19.9 整合技术评估 622 \r\n\r\n 19.10 小结 623 \r\n\r\n 19.11 问与答 623 \r\n\r\n 19.12 练习 623 \r\n\r\n 第20天课程 借助J2EE使用RPC样式的Web服务 625 \r\n\r\n 20.1 Web服务概述 626 \r\n\r\n 20.1.1 什么是Web服务 626 \r\n\r\n 20.1.2 为什么使用Web服务 627 \r\n\r\n 20.1.3 Web服务技术和协议 627 \r\n\r\n 20.1.4 Web服务体系结构 627 \r\n\r\n 20.2 J2EE的Web服务 628 \r\n\r\n 20.2.1 J2EE的Web服务体系结构 629 \r\n\r\n 20.2.2 工具和技术 629 \r\n\r\n 20.2.3 整合Web服务和已存在的J2EE组件 631 \r\n\r\n 20.3 使用基于SOAP. RPC样式的Web服务 631 \r\n\r\n 20.3.1 面向RPC的Web服务 632 \r\n\r\n 20.3.2 在Tomcat 4.0下设置Axis 633 \r\n\r\n 20.3.3 服务描述信息 634 \r\n\r\n 20.3.4 WSDL文档剖析 634 \r\n\r\n 20.3.5 从WSDL创建Java代理服务器 636 \r\n\r\n 20.3.6 通过SOAP调用Web服务 638 \r\n\r\n 20.3.7 折衷方案 641 \r\n\r\n 20.3.8 调试SOAP交互 641 \r\n\r\n 20.4 实现基于SOAP. RPC样式的Web服务 643 \r\n\r\n 20.4.1 将Java类包装为Web服务 643 \r\n\r\n 20.4.2 Web服务的客户端 646 \r\n\r\n 20.4.3 从WSDL开始 648 \r\n\r\n 20.4.4 使用Axis JWS文件 650 \r\n\r\n 20.4.5 会话情景和Web服务 652 \r\n\r\n 20.4.6 将存在的J2EE功能包装为Web服务 655 \r\n\r\n 20.5 参数类型和类型映射 656 \r\n\r\n 20.5.1 Java和SOAP/WSDL类型间的映射 656 \r\n\r\n 20.5.2 采用Serializer映射复杂类型 657 \r\n\r\n 20.5.3 深入探讨复杂类型映射 663 \r\n\r\n 20.6 小结 663 \r\n\r\n 20.7 问与答 663 \r\n\r\n 20.8 练习 664 \r\n\r\n 第21天课程 Web服务注册表和消息样式的Web服务 665 \r\n\r\n 21.1 Web服务注册表 665 \r\n\r\n 21.1.1 什么是Web服务注册表 665 \r\n\r\n 21.1.2 为什么我们需要Web服务注册表 666 \r\n\r\n 21.1.3 注册表如何工作 666 \r\n\r\n 21.1.4 注册表分类 666 \r\n\r\n 21.1.5 ebXML Registry和Repository 667 \r\n\r\n 21.1.6 UDDI概述 668 \r\n\r\n 21.2 访问UDDI注册表中的信息 668 \r\n\r\n 21.2.1 使用UDDI4J操纵服务信息 669 \r\n\r\n 21.2.2 使用IBM的WSTK客户端API操纵服务信息 671 \r\n\r\n 21.2.3 检索和使用信息 672 \r\n\r\n 21.3 使用JAXR进行注册表访问 672 \r\n\r\n 21.3.1 一种通用方法 672 \r\n\r\n 21.3.2 使用JAXR存储和检索服务信息 674 \r\n\r\n 21.4 使用基于消息的SOAP接口 674 \r\n\r\n 21.4.1 消息样式与RPC样式 675 \r\n\r\n 21.4.2 创建客户 675 \r\n\r\n 21.4.3 创建服务 676 \r\n\r\n 21.5 使用JAXM发送和接收SOAP消息 676 \r\n\r\n 21.5.1 JAXM和J2EE 677 \r\n\r\n 21.5.2 配置JAXM 677 \r\n\r\n 21.5.3 发送基本的SOAP消息 678 \r\n\r\n 21.5.4 运行简单的客户 682 \r\n\r\n 21.5.5 填充消息 682 \r\n\r\n 21.5.6 Header和附件 685 \r\n\r\n 21.5.7 使用JAXM接收SOAP消息 686 \r\n\r\n 21.5.8 使用JAXM profile 688 \r\n\r\n 21.5.9 使用JAXM Profile发送一条消息 690 \r\n\r\n 21.5.10 使用JAXM profile接收一条消息 692 \r\n\r\n 21.6 小结 694 \r\n\r\n 21.7 问与答 694 \r\n\r\n 21.8 练习 695 \r\n\r\n 附录A UML简介 696 \r\n\r\n A.1 UML简介 696 \r\n\r\n A.2 用例图 697 \r\n\r\n A.3 类图 698 \r\n\r\n A.3.1 关联 699 \r\n\r\n A.3.2 属性 699 \r\n\r\n A.3.3 操作 700 \r\n\r\n A.3.4 泛化 701 \r\n\r\n A.3.5 约束 701 \r\n\r\n A.4 顺序图 702 \r\n\r\n 附录B SQL语句参考 704 \r\n\r\n B.1 常用的SQL语句(SQL99) 704 \r\n\r\n B.1.1 修改表(ALTER TABLE) 704 \r\n\r\n B.1.2 创建表(CREATE TABLE) 705 \r\n\r\n B.1.3 创建视图(CREATE VIEW) 705 \r\n\r\n B.1.4 删除(DELETE) 706 \r\n\r\n B.1.5 删除数据表(DROP TABLE) 706 \r\n\r\n B.1.6 删除视图(DROP VIEW) 706 \r\n\r\n B.1.7 插入(INSERT) 706 \r\n\r\n B.1.8 选择(SELECT) 706 \r\n\r\n B.1.9 内联接 707 \r\n\r\n B.1.10 交叉联接 707 \r\n\r\n B.1.11 左外联接 707 \r\n\r\n B.1.12 右外联接 707 \r\n\r\n B.1.13 全联接 708 \r\n\r\n B.1.14 更新(UPDATE) 708 \r\n\r\n B.2 常用的SQL子句 708 \r\n\r\n B.2.1 FROM子句 708 \r\n\r\n B.2.2 WHERE子句 708 \r\n\r\n B.2.3 GROUP BY子句 709 \r\n\r\n B.2.4 HAVING子句 709 \r\n\r\n B.2.5 ORDER BY子句 709 \r\n\r\n 附录C XML概述 710 \r\n\r\n C.1 什么是XML 710 \r\n\r\n C.1.1 元素 710 \r\n\r\n C.1.2 声明 711 \r\n\r\n C.1.3 注释 712 \r\n\r\n C.1.4 特殊字符 712 \r\n\r\n C.1.5 名称空间 712 \r\n\r\n C.2 强化XML文档结构 713 \r\n\r\n C.2.1 文档类型定义 713 \r\n\r\n C.2.2 XML Schema 716 \r\n\r\n C.3 在哪里获取更多相关信息 717 \r\n\r\n 附录D Java Community Process 719 \r\n\r\n D.1 JCP简介 719 \r\n\r\n D.2 JCP相关内容 719 \r\n\r\n D.2.1 JCP成员 719 \r\n\r\n D.2.2 专家组 720 \r\n\r\n D.2.3 公共成员 720 \r\n\r\n D.2.4 过程管理办公室 720 \r\n\r\n D.2.5 执行委员会 720 \r\n\r\n D.3 了解JSR进程 720 \r\n\r\n D.4 进入下一步 721 \r\n\r\n 术语表 722 \r\n
\r\n
本书作者任职于ContentMaster——一家致力于开发放术内容的写作和咨询公司.
Martin Bond是一个培训教师和顾问, 曾用C++. Java和JavaScript开发过系统, 还讲授过UNIX. Solaris. Java和XML方面的课程.
DanHaywood擅长面向对象的没汁. Java和J2EE方面的写作和培训. Sybees技术咨询和数据建模.
Dabbi
从Duke第一次开始使用Netscape Navigator的早期版本以来, 已经有很长一段时间了. Java出身卑微, 它最初是作为在网页上提供交互性的一种很酷的方法, 而现在已经成为服务器端开发平台的一种主要技术. 现行的Jaa语言在近几年里变化不大, 但是出现了企业性质的基础构造. 这个构造称为Java 2企业版式或者称为Java,允许Java开发人员创建复杂和强有力和企业应用程序, 这些应用程序为数以千计的用户提供了完成关键任务的功能.
与其他平台(如Microsoft. NET)不一样, J2EE是地个产品. J2EE每一个版本的性能和功能都遵循Java Conmmunity Process(JCP). 平台是由应用服务器的销售商和生产者来实现的, 例如BEA. IBM. iPlanet. ATG. SilverStream和JBOSS. 这意味着J2EE的开发者可以根据质量. 支持和易使用性来选择不同厂商的产品. 通过JCP提供的技术能力以及主要的Java厂商和开放源码社团之间的交流, 保证了不断产生新的思想来帮助J2EE向前发展.
本书拟从最简单的组件. 设计思想直到最新的Web 服务, 带你展开J2EE之旅. 这三周内有很多要学习的新知识, 最基本的前提是你可以熟练使用J2EE平台. 如果需要创建功能强大的企业应用程序, 那么Java是你的理想选择, 让我们开始吧!
本书内容
《21天学通J2EE》一书讲述的是1. 3版本的J2EE平台. 本书用三周的时间指导你学习J2EE提供的各种功能.
第—周在深入探讨EJB之前, 全面讲述J2EE的基础知识.
● 第1天“挑战n层开发”, 定义了J2EE应用程序的运行环境, 并讲解了创健J2EE应用需要了解的体系结构概念.
● 第2天“J2EE平台和角色”, 开始J2EE之旅的热身活动, 熟悉J2EE平台. 主要技术. 构建J2EE应用程序的组件类型. J2EE应用程序交互所使用的容器. 同时安装J2EE平台, 了解贯穿本书的学习示例.
● 第3天“命名和目录服务”, 使用第一个J2EE API—Java命名和目录接口(Java Naving and Directory Interface, JNDI)存储. 检索和处理J2EE组件可访问信息.
● 第4天“EJB简介”, 介绍Enterprise JavaBeans(EJB)——J2EE平台的核心技术. 学习EJEB所起的作用以及它们是如何工作的, 然后部署一个EJB实例, 为其创建一个简单的客户端应用程序.
● 第5天“会话EJB”, 进一步深入研究会话EJB, 包括创建有状态和无状态的会话EJB.
● 第6天“实体EJB”, 开始学习实体EJB, 熟悉实体EJB的作用及其生命脉周期. 重点讲述如何使用Bean管理的持久性(Bean—Manageged Persistence, BMP)来存储和检索实体EJB的状态.
● 第7天“CMP和EJB QL“, 进一步讨沦实体EJB中利用容器管理的持久性(Container—Managed Persistence, CMP)来存储和检索实体EJB的状态, 包括学习在J2EE1. 3中引入的EJB查询语言和容器管理的关联.
第二周停止EJB 的学习, 开始讲述异步交互和如何开发基于Web的组件.
● 第8天“事务处理和持久性”, 深入研究J2EE平台中事务的使用—事务可以做什么及组件如何使用事务的优势, 并探讨一些可选的持久性机制.
● 第9天”Java消息服务”, 了解借助于使用消息队列和消息主题的Java消息服务(Java Message Service, JMS)来实现异步通信, 并使用JMS实现异步消息的—个生产者和一个消费者.
● 第10天“消息驱动Bean”, 基于JMS关联消息队列和消息驱动EJB, 创建一个通过接收异步消息触发功能的EJB.
● 第11天“JavaMail”, 学习另一个异步通信机E—mail. 向你讲述如何在J2EE下发送和检索E—mail, 以及在J2EE应用程序中如何使用E—mail传送数据.
● 第12天“servlet”, 共有3天时间讲述面向Web的知识, 这是第一天. 在这3天中, 你将学习创建面向Web的J2EE应用程序. 通过利用前面构建的基于EJB的服务来创建servlet开如这部分的学习, 同时了解servlet的生命周期和一些说不得诸如会话跟踪和状态管理之类的中心问题.
● 第13天“JSP”, 学习Java Server Page(JSP)怎样将Java. J2EE功能和HTML内容进行整合. 这部分内容探讨了JSP的作用以及如何使用JavaBean. 在JSP中封装Java功能.
● 第14天“JSP标记库”, 使用用户JSP标记库封装Java功能, 以提高JSP网页的可维护性.
第三周首先学习企业应用程序的几个重要内容, 比如安全性和完整性, 然后转向应用程序设计, 最后了解一下J2EE的前景, 即Web服务的功能, 结束本书的学习.
● 第15天“安全’, 第三周以J2EE程序中应用安全性开始, 衡量声明性安全和可编程安全的优点, 以及你如何在你的应用程序中使用安全性.
● 第16天“整合XML和XML和J2EE”, 了解XML在J2EE应用程序中的作用. 创建J2EE组件来生成和使用SML文档, 并通过用于XML处理的Java API(Java APIfor XML Processing, JAXP)处理数据.
● 第17天 "XML文档转换”, 重点讲述主要借助于XSLT转换语言将XML文档转换成包括XML方言在内的其他格式. 同佯, JAXP允许我们编者按程时在J2EE组件中实现此功能.
● 第18天“模式”, 考虑J2EE应用程序处理较大图片和在开发方面的问题. 重点讲述在现场应用程序逻辑中使用J2E技术时所采用的常见模式, 利用这些知识优化本书实例中局部程序的设计.
● 第19天“整合外部资源”, 学习各种机制, 将J2EE应用程序和非J2EE组件及服务进行整合. 这些机制包括Java Connector Archirtecture. CORBA. RMI-IIOP以及Java Nave Interface.
● 第20天“借助J2EEE使用BPC样式的Web 服务”, 展望J2EE组件用作Web服务的前景. 讲述如何使用普通的Web 服务技术(如SOAP和WSDL)展示Java的Web 服务功能, 并了解如何利用职权Java API ror XML-Basde (JAX -RPC)实现这一功能.
● 第21天“Web 服务注册表和消息样式Web 服务”, 通过学习基于XML的注册表的作用以及用于XML注册表的Java API(Java API for XML Registries, JAXR)如何授权访问这些信息来结束基于J2EE的Web 服务探险之旅, 并利用用于XML消息的Java API(Java API for XML Messaging, JAXM)面向消息的Web 服务生产者和使用者.
关于本书
本书对于中级Java程序员而言相当实用. 这不是一本列举API调用或对J2EE技术的内部工作机制进行广泛讨论的参考书籍. 它向读者讲述了使用J2EE技术的基础, 并引导读者操作J2EE平台上编写. 打包. 部署程序或组件所需的重要步骤. 当看完《21天学通J2EE》, 读者将会有足够的信心去创建或维护任何主流J2EE API的程序源码.
本书读者对象
本书适用于至少有3—6个月Java编程经验的程序员. 读者应具备编写Java代码的技能, 熟悉经常驻使用的Java 2 Standard Edition API, 诸台字符串处理. JDBC. 集合. 迭代等等.
除了深刻理解Java语言, 掌握下面的知识将有助于提高学习本书的效率.
●了解Web是如何工作的, 比如如何使用Web浏览器从Web服务器端获取HTML网页.
●熟悉XMI语法, 可阅读包含元素. 属性和名称空间的XML摘要.
●了解关系型数据库以及数据在表中如何构建的. 熟悉基本的SQL语句, 如简单的查询. 插入. 修改和关联等.
●熟悉系统分布式系统, 如n层开发. 客户——服务器端编程和远端程序调用等.
如果你对以上一个或多个方面不熟悉, 不要着急, 光盘的附录中有关于XML和SQL语句的介绍资料. 分布式系统和基于Web开发的基本概念在本书的正文中均按学习本书的需要进行了讲解.
本书组织结构
《21天学通J2EE》拟用三周时间让读者来学习, 每周阅读7课. 本书讲述J2EE技术和在JaVa中创建企业界应用程序的内容. 注意尽量确保以正确的顺序逐步接触学习相关的概念和技术, 因而尽可能按顺序学习各章的内容.
每章末尾都有一系列与当天讲述的主题相关的问答题, 作者为这些问题提供了答案. 还有一些习题, 通过创建相关和应用程序或服务来测试新学习的技能.
本书中的习题主要基于一个学习实例, 在第2天课程的末尾处对此进行了详细的阐述. 从本书附带的光盘中可以找到学习实例文件和习题的解决方案. 书中使用学习实例有助倔于读者将此实例作为一个正常运行的应用程序连贯地应用J2EE技术和使用各种技巧, 有助于读者深入理解书中涉及的技术和如何应用这些技术, 而不是单独完成某一实例.
本书约定
注意:讲述与讨论的主题相关的趣味或技巧方面的信息.
提示:为实现某一功能提出建议或指出一条捷径.
警告:提醒读者潜在的问题, 帮助我们避免出现严重失误.
读者需要输入的文字. 显示器中显示的文字以等宽字体表示.