第一篇 从JSP到Struts 2 1
第1章 Struts 2前奏 1
1.1 MVC思想概述 1
1.1.1简单的登录案例 1
1.1.2测试案例 4
1.1.3 Model 1和Model 2 6
1.1.4使用MVC设计模式改进代码 7
1.1.5测试MVC改进代码 9
1.2 MVC框架介绍 9
1.2.1常用的MVC框架 9
1.2.2 Struts 1框架简介 10
1.2.3下载并安装Struts 1框架 10
1.2.4基于Struts 1框架实现登录案例 12
1.3在Eclipse中开发Struts 1 15
1.3.1新建Web项目 16
1.3.2整合Tomcat服务器 17
1.3.3为项目添加Struts 1支持 18
1.3.4添加ActionForm 19
1.3.5添加Action 21
1.3.6部署Struts 1项目 23
1.4小结 24
第2章 Struts 2基础 25
2.1 Struts 2概述 25
2.1.1 Struts 1的缺陷 25
2.1.2 Struts 2简介 26
2.2构建第一个Struts 2应用 27
2.2.1下载并安装Struts 2框架 27
2.2.2基于Struts 2框架实现登录案例 29
2.2.3程序执行流程 31
2.3在Eclipse中开发Struts 2 32
2.3.1为项目添加Struts 2支持 32
2.3.2添加控制器Action 33
2.3.3添加并配置struts.xml 35
2.3.4 增加视图资源并部署Web应用 35
2.4改进控制器 36
2.4.1实现Action接口 36
2.4.2配置Action 37
2.5完成输入校验 38
2.5.1使用Struts 2标签库简化表单 38
2.5.2继承ActionSupport完成输入校验 39
2.6程序国际化 41
2.6.1输出中文的校验错误信息 42
2.6.2国际化资源文件 42
2.6.3加载资源文件 43
2.6.4输出国际化信息 44
2.6.5输出国际化的校验错误信息 45
2.7小结 46
第二篇 Struts 2模块开发 47
第3章 类型转换 47
3.1类型转换的介绍 47
3.1.1类型转换的意义 47
3.1.2简单的类型转换示例 48
3.2 Struts 2内建的类型转换器 51
3.2.1内建转换器介绍 51
3.2.2基本数据类型转换器 51
3.2.3基本数据类型的封装类转换器 55
3.2.4数组类型转换器 57
3.2.5集合类型转换器 59
3.3 OGNL表达式语言 60
3.3.1简单介绍OGNL以及如何下载OGNL源代码 60
3.3.2在Eclipse中查看OGNL类文件 61
3.4自定义类型转换器 62
3.4.1项目需求 62
3.4.2实现自定义类型转换器 64
3.4.3注册自定义类型转换器 67
3.4.4新建显示页测试程序 67
3.4.5程序执行流程 68
3.4.6使用Struts 2提供的StrutsTypeConverter 69
3.5局部类型转换器和全局类型转换器 71
3.5.1局部类型转换器 71
3.5.2全局类型转换器 73
3.6实现集合类型转换器 74
3.6.1数组属性的类型转换器 74
3.6.2集合属性的类型转换器 76
3.7类型转换中错误处理 78
3.7.1定义全局类型转换错误处理信息 78
3.7.2定义局部类型转换错误处理信息 80
3.8小结 80
第4章 Struts 2输入校验 81
4.1输入校验的意义 81
4.1.1什么是输入校验 81
4.1.2为什么要进行输入校验 82
4.2客户端校验 83
4.2.1正则表达式 83
4.2.2 JavaScript中使用正则表达式 84
4.2.3 JavaScript完成客户端校验 85
4.3服务器端校验 88
4.3.1服务器端校验的重要性 88
4.3.2完成服务器端输入校验 89
4.3.3测试服务器端输入校验 93
4.3.4使页面保留提交信息 93
4.3.5使用addFieldError来添加错误信息 95
4.3.6输入校验与类型转换关系 97
4.4动态方法调用以及校验动态方法 98
4.4.1动态方法调用 98
4.4.2为action元素指定method属性 101
4.4.3校验动态方法 102
4.4.4 Struts 2输入校验流程 103
4.5小结 104
第5章 Struts 2校验框架 105
5.1 Struts 2校验框架初探 105
5.1.1使用校验框架的好处 105
5.1.2编写校验规则文件 108
5.2校验器风格 110
5.2.1字段校验器风格 110
5.2.2非字段校验器风格 111
5.2.3配置风格比较 112
5.3内建校验器 112
5.3.1 Struts 2默认校验器 112
5.3.2必填校验器 114
5.3.3必填字符串校验器 115
5.3.4整数校验器 117
5.3.5双精度浮点数校验器 119
5.3.6日期校验器 122
5.3.7字段表达式校验器 123
5.3.8邮箱地址校验器 124
5.3.9网址校验器 126
5.3.10转换校验器 127
5.3.11字符串长度校验器 129
5.3.12正则表达式校验器 131
5.4使用校验框架完成输入校验 132
5.4.1完成输入校验 133
5.4.2增加客户端校验 138
5.4.3国际化提示信息 139
5.4.4客户端校验与国际化问题 141
5.4.5校验短路 143
5.4.6校验规则文件搜索规则 145
5.5小结 146
第6章 Struts 2拦截器 147
6.1学前必备知识 147
6.1.1代理模式 147
6.1.2动态代理模式 149
6.2拦截器介绍以及实现原理 151
6.2.1拦截器 151
6.2.2拦截器实现原理 153
6.3 Struts 2自定义拦截器 155
6.3.1定义拦截器类 156
6.3.2另一种定义拦截器方式 157
6.3.3配置拦截器 158
6.3.4使用拦截器 161
6.3.5默认拦截器 162
6.4深入拦截器 163
6.4.1传递参数 163
6.4.2配置拦截器栈 165
6.4.3覆盖拦截器栈中指定拦截器的参数 169
6.4.4拦截器执行顺序 170
6.4.5方法过滤 171
6.4.6拦截结果监听器 174
6.5 Struts 2内建拦截器 175
6.5.1内建拦截器 176
6.5.2内建拦截器的配置 178
6.6使用拦截器完成权限控制 180
6.6.1完善登录案例 180
6.6.2用户信息显示 181
6.6.3实现权限控制 185
6.6.4配置权限控制拦截器 186
6.7小结 186
第三篇 Struts 2高级应用 187
第7章 文件上传和下载 187
7.1使用上传框架实现文件上传 187
7.1.1上传框架介绍 187
7.1.2下载并安装Common-FileUpload框架 187
7.1.3通过Common-FileUpload框架实现文件上传 189
7.1.4测试文件上传 192
7.1.5上传多个文件 193
7.1.6测试上传多个文件 194
7.1.7下载并安装COS框架 194
7.1.8通过COS框架实现文件上传 195
7.1.9测试使用COS框架实现文件上传 197
7.2基于Struts 2完成文件上传 198
7.2.1配置上传解析器 198
7.2.2实现文件上传Action 199
7.2.3配置文件上传Action 202
7.2.4测试文件上传 202
7.3文件上传高级配置 203
7.3.1配置文件保存目录 203
7.3.2实现文件过滤 204
7.3.3输出错误提示 206
7.4 Struts 2实现上传多个文件 208
7.4.1使用数组实现上传多个文件 208
7.4.2测试使用数组实现上传多个文件 211
7.4.3使用List实现上传多个文件 212
7.5文件下载 214
7.5.1使用Struts 2配置文件下载 214
7.5.2实现文件下载Action 216
7.5.3配置该文件下载Action 216
7.5.4动态设置下载文件路径 218
7.5.5使用拦截器增加下载权限控制 219
7.6小结 220
第8章 Struts 2国际化 221
8.1国际化实现原理 221
8.1.1资源文件命名规则 221
8.1.2 Java支持的国家与地区名 221
8.1.3 Java支持的语言 222
8.1.4完成Java程序国际化 224
8.1.5使用占位符 226
8.2 JSP页面国际化 227
8.2.1通过加载全局资源文件完成国际化 228
8.2.2临时指定资源文件完成国际化 229
8.2.3加载资源文件顺序 230
8.3 Action中访问国际化资源文件 230
8.3.1全局资源文件 231
8.3.2包范围资源文件 232
8.3.3 Action范围资源文件 233
8.3.4加载资源文件顺序 234
8.4实现用户自行选择语言环境 234
8.4.1新建下拉列表 234
8.4.2新建全局资源文件 235
8.4.3新建及配置Action 236
8.4.4测试用户自行选择的语言环境 237
8.4.5在下拉列表中显示当前选择语言 238
8.4.6使用Struts 2的i18n拦截器改写案例 239
8.5小结 241
第9章 Struts 2标签库 242
9.1初涉Struts 2标签库 242
9.1.1使用标签的优势 242
9.1.2使用标签库以及标签分类 244
9.2逻辑控制标签 245
9.2.1 set标签和property标签 245
9.2.2 if/elseif/else标签 249
9.2.3 iterator标签 250
9.2.4 append标签 254
9.2.5 merge标签 257
9.2.6 generator标签 258
9.2.7 subset标签 260
9.2.8 sort标签 261
9.3数据访问标签 263
9.3.1 action标签 263
9.3.2 bean标签 265
9.3.3 date标签 267
9.3.4 include标签 268
9.3.5 url标签 269
9.4 UI标签 271
9.4.1 Struts 2内建主题 271
9.4.2 radio标签 273
9.4.3 select标签 275
9.4.4 checkboxlist标签 277
9.4.5 combobox标签 279
9.4.6 datetimepicker标签 280
9.4.7 doubleselect标签 283
9.4.8 optiontransferselect标签 285
9.5小结 287
第10章 Struts 2与Ajax 288
10.1 Ajax简介 288
10.1.1什么是Ajax 288
10.1.2传统Web应用 288
10.1.3 Ajax的优势 289
10.1.4 Ajax技术组成 290
10.2传统Web应用与Ajax应用对比 290
10.2.1传统Web应用实现用户登录 290
10.2.2使用Ajax技术实现用户登录 293
10.3 Struts 2整合Ajax开发 296
10.3.1基于DWR开发Ajax应用 296
10.3.2在Struts 2中实现Ajax表单校验 299
10.4 Struts 2整合JSON开发 303
10.4.1下载和安装JSON插件 303
10.4.2 JSP页面 303
10.4.3实现业务逻辑Action 304
10.4.4完成用户名是否占用检测 305
10.5小结 307
第四篇 Struts 2整合应用 309
第11章 Struts 2整合JFreeChart开发 309
11.1初涉JFreeChart 309
11.1.1 JFreeChart简介 309
11.1.2下载和安装JFreeChart 310
11.1.3使用JFreeChart生成饼图 311
11.2 JFreeChart进阶 312
11.2.1显示图例 312
11.2.2显示工具提示 312
11.2.3显示3D的饼图 313
11.2.4设置图表标题字体 314
11.2.5设置图例字体 314
11.2.6设置图表的标签字体以及透明度 314
11.3 JFreeChart生成柱状图 315
11.3.1柱状图 315
11.3.2复杂柱状图 317
11.3.3设置图表中轴的显示标签字体 317
11.3.4设置图表中显示标签的字体 318
11.3.5设置横坐标显示标签倾斜 318
11.3.6立体柱状图 319
11.4 JFreeChart的常用统计图表 320
11.4.1折线图 320
11.4.2立体折线图 321
11.4.3面积图 322
11.4.4层叠区域图 323
11.4.5将图表输出到图片 323
11.5在网页中生成和显示图表 325
11.5.1生成统计图表 325
11.5.2显示统计图表 326
11.6 Struts 2整合开发 327
11.6.1安装JFreeChart插件 328
11.6.2创建Action 328
11.6.3配置Action 330
11.7小结 330
第12章 Struts 2整合JasperReports开发 331
12.1初涉JasperReports 331
12.1.1 JasperReports简介 331
12.1.2下载并安装JasperReports和iReport 331
12.1.3设计报表 332
12.1.4显示报表 335
12.2使用iReport设计报表 337
12.2.1设置iReport语言环境 337
12.2.2使用iReport设计报表 337
12.2.3编译报表 338
12.2.4预览报表 338
12.3导出PDF文件报表 339
12.3.1配置PDF文件阅读程序 339
12.3.2解决中文无法显示问题 340
12.4带查询报表 341
12.4.1配置数据源 341
12.4.2使用向导来创建带查询的报表 342
12.4.3手动创建带查询的报表 344
12.5带参数的报表 345
12.5.1添加参数 345
12.5.2布局报表 346
12.5.3执行报表 346
12.6整合Struts 2和JasperReports开发报表 347
12.6.1安装JasperReports插件 347
12.6.2创建生成报表的Action 347
12.6.3设计报表设计文件 349
12.6.4配置Action 349
12.6.5生成JasperReports报表 350
12.7小结 350
第13章 Struts 2整合Hibernate开发 351
13.1初涉Hibernate 351
13.1.1 ORM简介 351
13.1.2 Hibernate框架的优势 351
13.1.3下载和安装Hibernate 352
13.2 Hibernate开发入门 352
13.2.1创建Hibernate配置文件 352
13.2.2创建持久化类 353
13.2.3创建对象关系映射文件 354
13.2.4创建数据库表 355
13.2.5插入数据 355
13.2.6更新数据 356
13.2.7删除数据 357
13.2.8 查询数据 359
13.2.9使用Hibernate工具类 361
13.3 Struts 2整合Hibernate开发 362
13.3.1整合策略 362
13.3.2持久层设计 363
13.3.3业务逻辑组件 366
13.3.4查询所有产品 368
13.3.5添加产品 369
13.3.6删除产品 371
13.3.7更新产品 372
13.4小结 375
第14章 Struts 2整合Spring开发 376
14.1初探Spring 376
14.1.1 Spring简介 376
14.1.2下载和安装Spring 376
14.1.3 Spring的IoC应用 377
14.2 Spring的依赖注入 380
14.2.1通过Set方法注入依赖 380
14.2.2引用其他Bean 382
14.2.3使用构造函数注入依赖 384
14.3 Spring的自动装配 385
14.3.1自动装配分类 386
14.3.2 byName自动装配 386
14.3.3 byType自动装配 387
14.3.4 constructor自动装配 387
14.4整合Struts 2和Spring框架 388
14.4.1安装Spring插件完成整合 388
14.4.2整合策略 389
14.5整合Spring完成登录案例 389
14.5.1修改控制器Action及配置 389
14.5.2依赖注入业务逻辑组件 390
14.6整合Spring完成产品管理案例 391
14.6.1使用Spring容器管理SessionFactory 391
14.6.2使用HibernateTemplate进行数据库操作 392
14.6.3依赖注入DAO组件 393
14.6.4依赖注入业务逻辑组件 394
14.6.5完成Action配置 398
14.7小结 398
第五篇 Struts 2案例开发 399
第15章 整合开发注册登录系统 399
15.1系统分析 399
15.1.1应用背景以及系统功能介绍 399
15.1.2系统结构 399
15.1.3系统功能模块 399
15.2 Hibernate持久层设计 400
15.2.1创建持久化PO类 400
15.2.2创建映射文件 401
15.3 DAO层设计 401
15.3.1 Spring管理SessionFactory 401
15.3.2创建DAO接口 402
15.3.3创建DAO实现类 403
15.3.4配置DAO组件 403
15.4业务逻辑层设计 404
15.4.1创建业务逻辑组件接口 404
15.4.2创建业务逻辑组件实现类 404
15.4.3配置业务逻辑组件 405
15.5完成用户注册模块 405
15.5.1整合Struts 2和Spring 405
15.5.2创建用户注册页 406
15.5.3创建用户注册控制器 406
15.5.4配置用户注册控制器 408
15.5.5创建校验规则文件 409
15.5.6创建图形验证码生成类 410
15.5.7生成图形验证码 412
15.5.8使用Ajax验证用户名是否被占用 415
15.5.9测试注册新用户 417
15.6完成用户登录模块 418
15.6.1创建用户登录页 418
15.6.2创建用户登录控制器 419
15.6.3配置用户登录控制器 420
15.6.4创建校验规则文件 420
15.6.5测试用户登录 421
15.7小结 422
第16章 整合开发用户管理系统 423
16.1系统分析 423
16.1.1应用背景以及系统功能介绍 423
16.1.2系统结构 423
16.1.3系统功能模块 423
16.2 Hibernate持久层设计 424
16.2.1创建持久化PO类 424
16.2.2创建映射文件 425
16.3 DAO层设计 425
16.3.1 Spring管理SessionFactory 425
16.3.2创建DAO接口 426
16.3.3创建DAO实现类 427
16.3.4配置DAO组件 427
16.4业务逻辑层设计 428
16.4.1创建业务逻辑组件接口 428
16.4.2创建业务逻辑组件实现类 428
16.4.3配置业务逻辑组件 430
16.5完成查看所有用户信息模块 430
16.5.1整合Struts 2和Spring 430
16.5.2创建查看全部用户信息控制器 430
16.5.3创建全部用户信息显示页 431
16.5.4配置查看全部用户信息控制器 432
16.5.5测试查看所有用户信息 432
16.6完成查看用户详细信息模块 433
16.6.1创建查看用户详细信息控制器 433
16.6.2创建查看用户详细信息显示页 433
16.6.3配置用户详细信息控制器 434
16.6.4测试查看用户详细信息 435
16.7完成添加用户模块 435
16.7.1创建用户添加页 435
16.7.2创建用户添加控制器 436
16.7.3配置用户添加控制器 437
16.7.4创建校验规则文件 437
16.7.5测试添加用户 439
16.8完成删除用户模块 439
16.8.1创建用户删除控制器 439
16.8.2配置用户删除控制器 440
16.8.3测试删除用户 440
16.9完成更新用户模块 441
16.9.1创建用户更新页 441
16.9.2创建用户更新控制器 441
16.9.3配置用户更新控制器 443
16.9.4创建校验规则文件 444
16.9.5测试更新用户 445
16.10小结 445