第1章 Model 2与Struts 1
1.1 传输对象 3
1.2 简单的Model 2应用程序 4
1.2.1 ProductTO类 6
1.2.2 ControllerServlet类 6
1.2.3 视图 8
1.2.4 部署描述文件 11
1.2.5 运行示例程序 11
1.3 视图管理器和动作管理器 11
1.4 Struts入门 14
1.4.1 Struts配置文件 14
1.4.2 Action、ActionForward和ActionMapping 16
1.4.3 编辑部署描述文件(web.xml文件) 17
1.5 Struts应用程序示例 18
1.5.1 部署描述文件和Struts配置文件 19
1.5.2 动作类 20
1.5.3 运行示例程序 21
1.6 Struts的MVC特性 21
1.7 小结 22
第2章 利用动作表单验证输入 23
2.1 动作表单概述 23
2.2 ActionForm类 25
2.3 使用动作表单 27
2.4 使用HTML标签库 34
2.4.1 重新显示表单里的值 37
2.4.2 出错处理 37
2.5 另一个示例程序 38
2.5.1 目录结构 39
2.5.2 Struts配置文件 39
2.5.3 动作类 40
2.5.4 JSP页面 42
2.5.5 运行app02c应用程序 43
2.6 多页表单 44
2.6.1 目录结构 45
2.6.2 Struts配置文件 45
2.6.3 动作表单 46
2.6.4 动作类 47
2.6.5 运行app02d应用程序 48
2.7 动态动作表单 48
2.7.1 目录结构 49
2.7.2 Struts配置文件 49
2.7.3 动作类 50
2.7.4 运行app02e应用程序 50
2.8 小结 51
第3章 HTML标签库 52
3.1 html标签 54
3.2 base标签 55
3.3 form标签 55
3.4 text、password、hidden、textarea标签 56
3.5 submit和cancel标签 60
3.6 reset标签 61
3.7 button标签 61
3.8 checkbox标签 61
3.9 multibox标签 62
3.10 radio标签 64
3.11 select标签 66
3.12 option标签 67
3.13 options标签 68
3.13.1 options标签的用法:与包含集合的对象配合使用 69
3.13.2 options标签的用法:与作用域集合配合使用 70
3.14 optionsCollection标签 71
3.14.1 optionsCollection标签的用法:与包含集合的对象配合使用 71
3.14.2 optionsCollection标签的用法:与集合配合使用 72
3.15 link标签 72
3.15.1 添加一个请求参数 74
3.15.2 添加多个请求参数 75
3.16 img标签 75
3.17 rewrite标签 77
3.18 frame标签 77
3.19 image标签 77
3.20 xhtml标签 78
3.21 小结 78
第4章 输入验证和数据转换 79
4.1 为动作表单的属性选择数据类型 79
4.2 输入验证和数据转换示例 80
4.3 使用BeanUtils类 87
4.4 提高数据转换的效率 89
4.5 小结 95
第5章 Validator插件 96
5.1 Validator插件的默认验证器 96
5.1.1 required验证器 97
5.1.2 minlength验证器 97
5.1.3 maxlength验证器 98
5.1.4 byte、short、integer、long、float、double验证器 98
5.1.5 intRange验证器 98
5.1.6 floatrange验证器 98
5.1.7 date验证器 98
5.1.8 mask验证器 98
5.1.9 email验证器 99
5.1.10 url验证器 99
5.1.11 creditCard验证器 99
5.1.12 validwhen验证器 99
5.2 使用Validator插件 100
5.2.1 编写动作表单 102
5.2.2 编写验证规则 103
5.2.3 运行app05a应用程序 104
5.3 验证文件 104
5.3.1 global元素及validator元素 106
5.3.2 formset元素及form子元素 106
5.3.3 向验证器传递参数 108
5.3.4 Validator的出错处理机制 109
5.4 使用客户端验证 110
5.5 使用DynaValidatorForm类 112
5.6 Validator与自定义验证的结合 112
5.7 声明基于动作的验证规则 114
5.8 编写自定义验证器 118
5.8.1 编写自定义验证器:MyCustomValidator类 119
5.8.2 注册自定义验证器 120
5.8.3 验证文件 121
5.8.4 注册Validator插件 121
5.8.5 运行app05f应用程序 122
5.9 支持客户端验证的自定义验证器 122
5.9.1 编写JavaScript函数 122
5.9.2 注册改进版的自定义验证器 124
5.9.3 JSP页面 124
5.9.4 运行app05g应用程序 125
5.10 使用validwhen验证器 125
5.11 小结 126
第6章 EL语言 127
6.1 EL语言的语法 127
6.1.1 EL语言中的保留字 128
6.1.2 [ ] 和 . 操作符 128
6.1.3 EL表达式求值规则 129
6.2 访问JavaBean 130
6.3 EL语言的隐含对象 130
6.3.1 pageContext对象 131
6.3.2 initParam对象 132
6.3.3 param对象 132
6.3.4 paramValues对象 132
6.3.5 header对象 132
6.3.6 headerValues对象 132
6.3.7 cookie对象 133
6.3.8 applicationScope、sessionScope、requestScope和pageScope对象 133
6.4 其他EL操作符 133
6.4.1 算术操作符 133
6.4.2 关系操作符 134
6.4.3 逻辑操作符 134
6.4.4 条件操作符 134
6.4.5 empty操作符 135
6.5 JSP 2.0中的EL语言 135
6.5.1 无脚本JSP页面 135
6.5.2 禁用EL求值 135
6.6 小结 137
第7章 JSTL 138
7.1 JSTL简介 138
7.2 通用动作 139
7.2.1 out标签 139
7.2.2 set标签 140
7.2.3 remove标签 142
7.3 条件动作 143
7.3.1 if标签 143
7.3.2 choose、when和otherwise标签 144
7.4 遍历动作 145
7.4.1 forEach标签 145
7.4.2 forTokens标签 147
7.5 格式化动作 148
7.5.1 formatNumber标签 148
7.5.2 formatDate标签 150
7.5.3 timeZone标签 151
7.5.4 setTimeZone标签 152
7.5.5 parseNumber标签 152
7.5.6 parseDate标签 153
7.6 函数 155
7.6.1 contains函数 155
7.6.2 containsIgnoreCase函数 155
7.6.3 endsWith函数 155
7.6.4 escapeXml函数 156
7.6.5 indexOf函数 156
7.6.6 join函数 156
7.6.7 length函数 156
7.6.8 replace函数 157
7.6.9 split函数 157
7.6.10 startWith函数 157
7.6.11 substring函数 157
7.6.12 substringAfter函数 158
7.6.13 substringBefore函数 158
7.6.14 toLowerCase函数 158
7.6.15 toUpperCase函数 158
7.6.16 trim函数 158
7.7 小结 159
第8章 Bean标签库 160
8.1 write标签 162
8.2 cookie标签 163
8.3 header标签 164
8.4 parameter标签 164
8.5 define标签 164
8.6 page标签 165
8.7 include标签 165
8.8 message标签 166
8.9 resource标签 167
8.10 size标签 167
8.11 struts标签 168
8.12 小结 168
第9章 Logic标签库 169
9.1 值比较标签 170
9.1.1 present和notPresent标签 171
9.1.2 equal、notEqual、lessThan、lessEqual、greaterThan和greaterEqual标签 171
9.2 子串匹配标签 171
9.3 表现定位标签 173
9.3.1 forward标签 173
9.3.2 redirect标签 173
9.4 集合处理标签 174
9.5 小结 176
第10章 Struts-EL标签库、Nested标签库和selectLabel标签 177
10.1 Struts-EL标签库 177
10.2 Nested标签库 179
10.3 selectLabel标签 182
10.4 小结 186
第11章 消息处理与国际化 187
11.1 在Struts中处理地区 187
11.2 注册属性文件 190
11.3 HTML标签库中的errors标签 190
11.4 HTML标签库中的messages标签 191
11.5 JSTL i18n标签库 192
11.5.1 setLocale标签 192
11.5.2 bundle标签 193
11.5.3 setBundle标签 193
11.5.4 message标签 194
11.5.5 param标签 195
11.5.6 requestEncoding标签 195
11.6 小结 195
第12章 Tiles框架 196
12.1 JSP包含的不足 197
12.2 初识Tiles 198
12.3 使用JSP定义文件 200
12.4 使用XML定义 201
12.5 XML定义的继承 204
12.6 Tiles标签库里的标签 205
12.6.1 add标签 206
12.6.2 definition标签 207
12.6.3 getAsString标签 207
12.6.4 importAttribute标签 207
12.6.5 insert标签 208
12.6.6 put标签 209
12.6.7 putList标签 209
12.6.8 useAttribute标签 210
12.7 编写XML格式的Tiles定义文件 210
12.7.1 tiles-definition元素 211
12.7.2 definition元素 211
12.7.3 put元素 211
12.7.4 putList元素 212
12.7.5 add元素 212
12.7.6 bean元素 212
12.7.7 item元素 213
12.7.8 set-property元素 213
12.8 小结 213
第13章 Struts应用程序的安全性 214
13.1 用户和角色 214
13.2 编写安全策略 215
13.2.1 保护资源 215
13.2.2 指定登录方法 216
13.3 身份验证方法 217
13.3.1 使用基本身份验证方法 218
13.3.2 使用基于表单的身份验证方法 218
13.4 隐藏资源 220
13.5 Struts安全配置 221
13.6 以编程方式提高安全性 222
13.6.1 getAuthType方法 222
13.6.2 isUserInRole方法 222
13.6.3 getUserPrincipal方法 223
13.6.4 getRemoteUser方法 223
13.7 小结 223
第14章 Config对象 224
14.1 使用web.xml文件或属性文件 224
14.2 Config对象 225
14.2.1 Singleton模式简介 225
14.2.2 实现Singleton Config对象 226
14.2.3 运行app14a应用程序 230
14.3 小结 230
第15章 持久层 231
15.1 DAO模式 232
15.1.1 DAO模式的最简单实现 232
15.1.2 使用DAO接口的DAO模式 232
15.1.3 使用Abstract Factory模式的DAO模式 233
15.2 实现DAO模式 234
15.2.1 DAO接口和DAOBase类 234
15.2.2 Config类 237
15.2.3 CustomerDAO接口 238
15.2.4 CustomerDAOMySQLImpl类 239
15.2.5 DAOFactory类 244
15.2.6 客户组件 245
15.2.7 运行app15a应用程序 245
15.3 复杂的数据结构 246
15.4 Hibernate 247
15.5 小结 247
第16章 对象缓存 248
16.1 实现缓存 248
16.2 小结 250
第17章 文件的上传与下载 251
17.1 文件上传 251
17.1.1 文件上传概述 251
17.1.2 Struts中的文件上传 252
17.2 文件下载 256
17.3 小结 261
第18章 分页与排序 262
18.1 大数据集/超大数据集 262
18.2 Display标签库简介 263
18.2.1 table标签 264
18.2.2 column标签 265
18.2.3 setProperty标签 265
18.3 处理大数据集 266
18.4 处理超大数据集 269
18.4.1 searchCustomers方法 270
18.4.2 CustomerSearchCriteria- Form动作表单 272
18.4.3 SearchCustomerAction类 273
18.4.4 displaySearchCustomer- Form.jsp页面 276
18.4.5 运行app18b应用程序 278
18.5 小结 279
第19章 防止重复提交 280
19.1 Struts中的标记管理 280
19.2 使用标记 281
19.3 小结 283
第20章 早期会话验证 284
20.1 在Struts应用程序中让HttpSession对象失效 284
20.2 让HttpSession对象尽早失效 285
20.3 小结 287
第21章 装饰HttpServletRequest对象 288
21.1 Decorator模式 288
21.2 去空格过滤器 290
21.3 小结 292
第22章 Struts的工作原理 293
22.1 动作servlet 293
22.2 创建ModuleConfig对象 295
22.3 请求处理器 298
22.3.1 processMultipart方法 299
22.3.2 processPath方法 300
22.3.3 processLocale方法 301
22.3.4 processContent方法 302
22.3.5 processNoCache方法 302
22.3.6 processPreprocess方法 302
22.3.7 processCachedMessages方法 303
22.3.8 processMapping方法 303
22.3.9 processRoles方法 305
22.3.10 processActionForm方法 305
22.3.11 processPopulate方法 306
22.3.12 processValidate方法 307
22.3.13 processForward方法 308
22.3.14 processInclude方法 309
22.3.15 processActionCreate方法 309
22.3.16 processActionPerform方法 310
22.3.17 processForwardConfig方法 311
22.4 小结 312
附录A Struts配置 313