第1章 Java Web技术概述 1
1.1 Servlets 1
1.1.1 使用Servlet接口 1
1.1.2 建立一个servlet目录结构 2
1.1.3 复习部署描述符 3
1.1.4 获取上下文参数 5
1.1.5 监听应用事件 6
1.1.6 打包及部署Web应用 7
1.2 JavaServer Pages(JSP) 7
1.3 JSP和JavaBeans 9
1.3.1 设置和获取JavaBean的属性 9
1.3.2 从JSP页面中调用bean 10
1.3.3 访问bean属性 12
1.4 定制标记 13
1.4.1 定制标记和JavaBeans的比较 14
1.4.2 开发和使用定制标记库 14
1.5 Mode1 2体系结构 19
1.6 小结 20
第2章 JavaServer Faces(JSF)简介 21
2.1 JSF的工作方式 21
2.1.1 理解请求处理生命周期的各个阶段 23
2.1.2 使用应用配置文件注册JavaBeans 24
2.2 编写一个JSF应用 25
2.2.1 设计JSP页面 26
2.2.2 编写JavaBeans 27
2.2.3 编写事件监听器 27
2.3 创建事件监听器和组件树示例 27
2.3.1 为监听器和组件树示例建立目录结构 28
2.3.2 为监听器和组件树示例编写部署描述符 28
2.3.3 为监听器和组件树示例编写模型对象 29
2.3.4 为监听器和组件树示例编写应用配置文件 30
2.3.5 为监听器和组件树示例编写JSP页面 30
2.3.6 为监听器和组件树示例编写ActionListener 32
2.3.7 编译并运行监听器和组件树示例 34
2.4 创建验证器的示例 36
2.4.1 为验证器示例建立目录结构 36
2.4.2 为验证器示例编写JSP页面 37
2.4.3 运行验证器示例 38
2.5 创建页面导航示例 38
2.5.1 为页面导航示例建立目录结构 38
2.5.2 建立SurveyBean 39
2.5.3 为页面导航示例编写JSP页面文件 39
2.5.4 为页面导航示例建立应用配置文件 41
2.5.5 编译并运行页面导航示例 42
2.6 JSF应用编程接口(API)简介 43
2.6.1 iavax.faces包 43
2.6.2 javax.faces.application包 44
2.6.3 iavax.faces.component包 44
2.6.4 iavax.faces.context包 44
2.6.5 iavax.faces.convert包 44
2.6.6 iavax.faces.e1包 45
2.6.7 iavax.faces.event包 45
2.6.8 iavax.faces.1ifecycle包 45
2.6.9 iavax.faces.render包 45
2.6.10 iavax.faces.tree包 46
2.6.11 javax.faces.validator包 46
2.6.12 javax.faces.webapp包 46
2.7 小结 46
第3章 用来处理请求的对象 47
3.1 本章中相关类的重要性 47
3.2 使用FacesContext类 48
3.2.1 获取当前实例 48
3.2.2 获取和修改组件树 49
3.2.3 添加和获取消息 49
3.2.4 添加和获取请求处理事件 49
3.2.5 向Response对象里写入信息 50
3.2.6 获取和设置地区 50
3.2.7 操作请求处理生命周期 50
3.2.8 获取其他请求状态信息 50
3.3 使用ExternalContext类 51
3.3.1 获取ServletletContext、ServletRequest和ServletResponse对象 51
3.3.2 获取ServletContext特性 51
3.3.3 获取Session对象及其特性 51
3.3.4 获取ServletContext对象的初始参数 52
3.3.5 获取Request对象的特性 53
3.3.6 访问Request对象里的参数名和值 53
3.3.7 获取请求头的名和值 54
3.3.8 获取Cookie 55
3.3.9 获取场所 56
3.3.10 获取上下文路径 56
3.3.11 获取资源路径 57
3.3.12 编码URL 58
3.3.13 分派请求 59
3.4 使用Tree类 59
3.5 通过Application类来访问JavaBean 59
3.5.1 获取Application实例的引用 60
3.5.2 获取Application的ValueBinding对象 60
3.6 使用ValueBinding类 61
3.6.1 获取ValueBinding所表示的对象的类型 61
3.6.2 获取和设置ValueBinding对象的属性 61
3.6.3 检查ValueBinding属性是否可写 62
3.7 小结 63
第4章 用户界面组件模型 64
4.1 介绍UIComponent接口 64
4.1.1 用标识符标识组件 65
4.1.2 组件的父子关系 66
4.1.3 用Facets创建从属组件 67
4.1.4 呈现组件 67
4.1.5 管理生命周期 68
4.1.6 使用验证器 68
4.2 在JSP页面里使用UI组件 68
4.2.1 用定制标记创建UI组件 68
4.2.2 介绍UI组件类 69
4.3 将组件绑定到模型对象 73
4.3.1 满足绑定需求 73
4.3.2 评估值引用表达式 74
4.3.3 用隐式对象提取信息 77
4.3.4 使用值引用表达式来获取值 77
4.4 小结 82
第5章 JSF简单组件 83
5.1 在JSP页面中使用定制标记库 83
5.2 介绍HTML定制标记库 84
5.3 使用定制标记 85
5.3.1 应用标记特性 85
5.3.2 创建用来测试标记的JavaBean:MyBean 85
5.4 小结 101
第6章 JSF高级组件 102
6.1 使用UIPanel组件 102
6.1.1 使用panel-grid标记呈现HTML表 103
6.1.2 使用panel list标记和panel data标记增加表记录 106
6.1.3 使用panel_group标记编写表头和表尾 108
6.1.4 使用样式表格式化UIPanel组件 111
6.2 使用Select组件 113
6.2.1 回顾<select>元素 113
6.2.2 介绍选择标记 114
6.3 小结 127
第7章 JSF事件处理 128
7.1 介绍Java 2事件模型 128
7.1.1 事件源 128
7.1.2 事件对象 130
7.1.3 事件监听器 130
7.1.4 对事件通知感兴趣的对象 131
7.1.5 事件演示 131
7.2 处理JSF中的事件 132
7.2.1 JSF中的事件对象 133
7.2.2 JSF中的事件监听器 133
7.3 为UICommand组件编写ActionListener 134
7.3.1 实现ActionListener接口 135
7.3.2 设置UICommand组件以捕获事件 137
7.4 为UIInput组件编写ValueChangedListener 140
7.4.1 实现ValueChangedListener接口 140
7.4.2 设置UIInput组件以捕获事件 142
7.5 小结 143
第8章 页面导航 144
8.1 定义导航规则 144
8.1.1 指定导航规则的元素 144
8.1.2 实现简单的页面导航 145
8.2 定义有条件的页面导航 148
8.2.1 使用多个导航块 148
8.2.2 使用from-action-ref元素 153
8.3 小结 156
第9章 验证器 157
9.1 使用标准验证器 157
9.1.1 创建测试验证器的TestingBean 158
9.1.2 介绍验证器标记 159
9.2 编写定制验证器 165
9.2.1 介绍验证器接口和消息接口 165
9.2.2 创建简单的定制验证器 165
9.2.3 创建带有特性的定制验证器 168
9.2.4 在定制验证器中使用消息资源 172
9.3 小结 172
第10章 转换器 173
10.1 使用标准转换器 173
10.1.1 创建测试转换器的TestingBean 174
10.1.2 介绍标准转换器 175
10.2 编写定制转换器 180
10.2.1 介绍Converter接口 180
10.2.2 创建定制转换器 180
10.3 小结 183
第11章 国际化和本地化 184
11.1 设计国际化应用 184
11.1.1 本地化应用 184
11.1.2 定义地区 185
11.1.3 创建地区属性文件 196
11.1.4 卖取属性文件 197
11.2 在JSF应用中支持国际化和本地化 199
11.2.1 获得浏览器的地区 199
11.2.2 本地化静态数据 199
11.2.3 本地化动态数据 202
11.2.4 本地化验证器中的错误消息 208
11.3 小结 211
第12章 Renderer 212
12.1 呈现的工作方式 212
12.1.1 直接实现和委托实现 212
12.1.2 解码和编码操作 212
12.2 使用标准Renderer 213
12.2.1 获取组件Renderer类型 213
12.2.2 探究RenderKit 216
12.3 编写定制Renderer 222
12.3.1 分析Renderer类 222
12.3.2 创建定制Renderer 223
12.3.3 编写标记处理程序 225
12.3.4 编写标记库描述符 226
12.3.5 使用定制Renderer 227
12.4 小结 230
第13章 定制用户界面组件 231
13.1 定制组件还是定制Renderer 231
13.2 编写定制组件 232
13.2.1 确定扩展哪一个类 232
13.2.2 确定如何处理呈现 233
13.2.3 在JSP页面中使用定制组件 233
13.2.4 创建测试定制组件的TestingBean 233
13.3 创建正数输入组件 234
13.3.1 编写UIPositiveNumber类 235
13.3.2 编写PositiveNumberTag标记处理程序 237
13.3.3 添加UIPositiveNumber标记定义 238
13.3.4 使用UIPositiveNumber组件 239
13.4 在定制输入组件中使用定制Renderer 240
13.4.1 编写UIPositiveInteger类和标记处理程序 240
13.4.2 为UIPositiveInteger编写Renderer 241
13.4.3 将UIPositiveInteger标记定义添加到标记库描述符 244
13.4.4 使用UIPositivelnteger组件 244
13.5 创建日历输入组件 246
13.5.1 编写UICalendar类和标记处理程序 246
13.5.2 编写日历Renderer 248
13.5.3 将UICalendar标记定义添加到标记库描述符 253
13.5.4 使用UICalendar组件 254
13.6 创建一个灵活的超链接组件 256
13.6.1 编写FlexibleHyperlink标记处理程序 256
13.6.2 添加FlexibleHyperlink标记定义到标记库描述符 258
13.6.3 测试超链接组件 260
13.7 小结 260
第14章 在线商店应用 261
14.1 BuyDirect应用介绍 261
14.2 应用页面设计 262
14.2.1 使用样式表 263
14.2.2 了解页面控制流程 266
14.3 设计并访问数据库 270
14.3.1 设计数据库表的结构 270
14.3.2 连接数据库 271
14.3.3 使用DatabaseUtil类 272
14.4 表示模型对象并注册Bean 278
14.4.1 为应用定义类 278
14.4.2 在应用配置文件中注册Bean 289
14.5 建立导航规则 290
14.5.1 导航到搜索页面 291
14.5.2 导航到商品细节页面 291
14.5.3 导航到购物车页面 292
14.5.4 导航到结账和订单页面 292
14.6 添加ActionListener 292
14.7 编辑部署描述符 295
14.8 创建JSP页面 296
14.8.1 headerJsp和footer.jsp页面 297
14.8.2 menu.jsp页面 297
14.8.3 index.jsp页面 299
14.8.4 search.jsp页面 300
14.8.5 browse.jsp页面 302
14.8.6 details.jsp页面 304
14.8.7 shoppingCarjsp页面 305
14.8.8 checkOut.jsp页面 307
14.8.9 order.jsp页面 309
14.9 运行应用 311
14.10 小结 311
第15章 应用配置文件 312
15.1 定位应用配置文件 312
15.2 了解应用配置文件格式 313
15.2.1 构造一个应用配置文件 313
15.2.2 回顾应用配置文件的元素 314
15.3 小结 321
第16章 JSF是如何工作的 322
16.1 JSF处理过程概述 322
16.2 FacesServlet 323
16.2.1 init方法 323
16.2.2 service方法 324
16.2.3 destroy方法 325
16.3 FacesContext对象 326
16.3.1 FacesContext中每个请求的状态信息 326
16.3.2 生命周期阶段中的FacesContext处理 326
16.4 Application对象 327
16.4.1 默认的ActionListener 327
16.4.2 默认的NavigationHandler 328
16.5 Lifecycle对象 328
16.5.1 重建组件树阶段 329
16.5.2 应用请求值阶段 330
16.5.3 处理验证阶段 330
16.5.4 更新模型值阶段 331
16.5.5 调用应用阶段 331
16.5.6 呈现响应阶段 331
16.5.7 事件处理 331
16.6 小结 332
第17章 JSP 2.0表达式语言 333
17.1 JSP表达式语言介绍 333
17.1.1 构建EL表达式 334
17.1.2 访问对象属性 335
17.1.3 访问EL隐式对象 336
17.1.4 使用简单的EL表达式 339
17.2 访问JavaBean 342
17.3 使用表达式语言(EL)运算符 345
17.4 调整表达式语言的相关设置 348
17.4.1 使EL计算无效 348
17.4.2 禁用脚本元素 349
17.5 使用表达式语言解决问题 349
17.6 小结 351
第18章 JSP标准标记库 352
18.1 在JSF应用中使用JSTL标记的原因 352
18.2 JSTL 353
18.2.1 在JSP页面中使用JSTL 353
18.2.2 执行通用动作 354
18.2.3 执行条件动作 359
18.2.4 用迭代器动作迭代 361
18.3 用JSTL标记解决常见的JSF问题 367
18.3.1 访问JSP页面的限制 367
18.3.2 改进登录应用 368
18.4 小结 370
附录A 安装和配置Tomcat 5 371
A.1 设置JAVA HOME 环境变量 371
A.1.1 在Windows中设置JAVA_HOME 371
A.1.2 在Unix/Linux系统中设 JAVA_HOME 372
A.2 安装和运行Tomcat 372
A.2.1 关闭Tomcat 373
A.2.2 回顾Tomcat目录 373
A.3 配置Tomcat 374
A.3.1 改变端口 374
A.3.2 设置自动重载 374
A.4 查找Tomcat资源 375
附录B Web应用部署描述符 376
B.1 web.xml文件概述 376
B.2 web.xml文件中的wed-app元素 377