第1章 Struts 2入门 1
1.1 Struts 2框架介绍 1
1.1.1 模式、架构和框架 1
1.1.2 MVC模式 2
1.1.3 Model1和Model 2体系 4
1.1.4 Struts 2框架介绍 5
1.2 案例实战——Model 2体系的用户登录 5
1.2.1 基于XML配置的用户登录 7
1.2.2 基于注解方式的用户登录 11
1.3 案例实战——Struts 2框架下的用户登录 12
1.3.1 基于XML配置的用户登录 12
1.3.2 基于注解方式的用户登录 16
1.4 Struts 2的工作流程 18
1.5 本章小结 20
1.6 本章实践 20
第2章 Action的编写和配置 22
2.1 什么是Action 22
2.2 基本的Action编程 25
2.2.1 Action类的编写 25
2.2.2 Action的属性 35
2.2.3 Action的资源访问 39
2.3 基本的Action配置 41
2.3.1 基于XML的配置 41
2.3.2 基于注解方式的配置 42
2.4 案例实战——用户注册功能 43
2.4.1 基于XML配置的实现 47
2.4.2 基于注解方式的实现 49
2.5 本章小结 51
2.6 本章实践 51
第3章 复杂Action类的编程和配置 52
3.1 复杂Action类的编程 52
3.2 复杂Action类基于XML的配置 53
3.2.1 动态方法调用 53
3.2.2 指定method属性 53
3.2.3 基于通配符的配置 54
3.3 基于注解方式的配置 55
3.4 案例实战——多视图注册功能 56
3.4.1 基于XML配置的实现 59
3.4.2 基于注解方式的实现 61
3.5 本章小结 63
3.6 本章实践 63
第4章 结果类型及应用 65
4.1 Struts 2处理结果配置 65
4.1.1 一般结果配置 65
4.1.2 动态结果配置 67
4.2 Struts 2支持的结果类型 67
4.2.1 dispatcher和redirect结果类型 68
4.2.2 chain和redirectAction结果类型 69
4.2.3 stream结果类型 70
4.2.4 plainText结果类型 71
4.2.5 其他结果类型 71
4.3 基于注解方式的结果配置 71
4.4 案例实战——用户信息修改和查看功能 72
4.5 本章小结 82
4.6 本章实践 83
第5章 拦截器的编写和配置 84
5.1 理解拦截器 84
5.2 Struts 2框架中内置的拦截器 85
5.3 拦截器的配置 88
5.4 自定义拦截器的编写 89
5.4.1 实现Interceptor接口 89
5.4.2 继承AbstractInterceptor类 90
5.4.3 继承MethodFilterInterceptor类 90
5.5 拦截器结果监听器 91
5.6 案例实战——项目中对特定文字的筛查 93
5.7 本章小结 97
5.8 本章实践 97
第6章 Struts 2的配置 98
6.1 Struts 2的配置文件 98
6.2 web.xml 99
6.3 struts.properties 99
6.4 struts.xml 102
6.4.1 Bean配置 103
6.4.2 常量配置 103
6.4.3 包配置 104
6.4.4 命名空间配置 105
6.4.5 包含配置 106
6.4.6 拦截器配置 107
6.4.7 Action配置 108
6.4.8 Result配置 108
6.4.9 异常处理 108
6.4.10 未知处理器 109
6.4.11 使用注解配置Action 111
6.4.12 使用注解配置Action的注意事项 112
6.5 案例实战——用户信息管理 113
6.6 本章小结 125
6.7 本章实践 125
第7章 OGNL及数据类型转换 127
7.1 OGNL简介及基本语法 127
7.1.1 常量 128
7.1.2 操作符 129
7.1.3 访问JavaBean属性 130
7.1.4 调用方法 131
7.1.5 调用静态方法和静态字段 131
7.1.6 调用构造方法 131
7.1.7 索引访问 132
7.1.8 对集合进行操作 133
7.1.9 lambda表达式 138
7.1.10 OGNL的类型转换 139
7.2 Struts 2上的OGNL 139
7.2.1 值栈 139
7.2.2 [N]语法和top关键字 141
7.2.3 访问静态成员 141
7.2.4 值栈中的Action实例 141
7.2.5 Struts 2中的命名对象 141
7.3 Struts 2的内置类型转换 142
7.3.1 常用的内置类型转换器 142
7.3.2 基于OGNL的类型转换 144
7.3.3 对 List的支持 145
7.3.4 对Map的支持 147
7.4 自定义的类型转换器 149
7.5 类型转换器的注解配置方式 151
7.5.1 TypeConversion注解 152
7.5.2 Conversion注解 152
7.5.3 Element注解 153
7.5.4 Key注解 153
7.5.5 KeyProperty注解 154
7.5.6 CreateIfNull注解 154
7.6 案例实战——用户信息查询 155
7.7 本章小结 162
7.8 本章实践 162
第8章 Struts 2标记库的UI标签 164
8.1 主题和模板 164
8.2 UI标签介绍 166
8.3 基本表单标签 168
8.3.1 基本表单标签介绍 168
8.3.2 基本表单标签应用 173
8.3.3 防止表单重复提交 174
8.4 高级表单标签 177
8.4.1 高级表单标签介绍 177
8.4.2 二级联动菜单和左右转移列表组件应用 180
8.5 其他UI标签 184
8.6 案例实战——新增用户信息 187
8.7 本章小结 191
8.8 本章实践 192
第9章 Struts 2标记库的非UI标签 193
9.1 非UI标签介绍 193
9.2 控制标签 194
9.3 数据标签 202
9.4 案例实战——用户信息查询 206
9.5 本章小结 211
9.6 本章实践 211
第10章 文件的上传和下载 213
10.1 原生的文件上传 213
10.2 常见的文件上传框架 216
10.3 Struts 2对文件上传的处理 217
10.3.1 Struts 2对上传组件的配置 217
10.3.2 单一文件上传 223
10.3.3 多文件上传 228
10.4 Struts 2对文件下载的处理 231
10.5 案例实战——文件的上传和下载 233
10.6 本章小结 238
10.7 本章实践 238
第11章 用户输入验证 240
11.1 用户输入验证介绍 240
11.2 编程方式下实现用户输入验证 241
11.2.1 最简单的用户输入验证实现方式 241
11.2.2 常用的用户输入验证实现方式 244
11.2.3 多方法Action的用户输入验证实现方式 245
11.3 配置方式下实现用户输入验证 251
11.3.1 输入验证配置文件 252
11.3.2 内置校验器 254
11.3.3 自定义校验器 262
11.4 注解方式下实现用户输入验证 265
11.4.1 注解方式下用户输入验证的实现 265
11.4.2 基于注解方式的验证语法 266
11.4.3 内置注解校验 267
11.5 案例实战——增加新用户 275
11.5.1 基于配置方式的实现 278
11.5.2 基于注解方式的实现 280
11.6 本章小结 282
11.7 本章实践 283
第12章 国际化 285
12.1 国际化概念 285
12.2 软件国际化的基本要素 288
12.3 资源文件的创建 289
12.4 Java对118N的支持 293
12.5 Struts 2对国际化的支持机制 294
12.6 Struts 2资源文件类型 296
12.7 Struts 2资源文件定位检索机制 298
12.8 Struts 2取得资源文件中的消息文本 299
12.9 案例实战——增加员工 301
12.10 本章小结 306
12.11 本章实践 306
第13章 Struts 2下的页面布局 308
13.1 页面布局概述 309
13.2 Tiles框架简介 311
13.3 Tiles框架的下载和配置 311
13.4 Tiles框架的模板文件定义和组装 313
13.5 案例实战——Struts 2和Tiles框架整合案例 319
13.6 本章小结 325
13.7 本章实践 325
第14章 S2SH的集成 326
14.1 Hibernate基础 326
14.2 Hibernate API结构 331
14.3 Hibernate编程 332
14.4 Struts 2下集成Hibernate 334
14.5 Spring基础 339
14.6 Struts 2下集成Spring 343
14.7 S2SH的集成 348
14.8 案例实战——用户登录功能 353
14.9 本章小结 362
14.10 本章实践 363
第15章 客户信息管理系统案例实现 364
15.1 客户信息管理系统业务 364
15.2 客户信息管理系统需求分析 364
15.3 客户信息管理系统系统分析 365
15.4 客户信息管理系统OOD设计 370
15.5 客户信息管理系统案例实现 376
15.6 本章小结 408
15.7 本章实践 408
参考文献 411