第1章 认识一下Struts2 1
1.1 什么是Web应用 1
1.2 开发Web应用为什么需要框架 2
1.2.1 企业应用开发的特点 2
1.2.2 Web应用模型的先天不足 3
1.2.3 Java EE身后的空白 4
1.3 什么是框架 5
1.4 认识一下Struts2框架 5
1.4.1 Struts2的前世今生 5
1.4.2 Struts2框架的基本思想 6
1.4.3 Struts2框架的MVC实现 7
1.5 Struts2学习路线 8
第2章 第一个Struts2应用 10
2.1 创建Web应用HelloStruts2 10
2.2 为Web应用添加Struts2支持 12
2.2.1 将Struts2框架类库添加到项目路径 12
2.2.2 修改Web应用配置文件Web.xml 15
2.3 开发Struts2组件 16
2.3.1 定义视图组件 16
2.3.2 定义模型组件 18
2.4 配置Struts2框架 19
2.5 测试运行 20
2.6 透视Struts2框架下的Web应用 21
2.7 “0配置”的Struts Web应用 23
2.7.1 添加Convention插件 23
2.7.2 定义模型组件 24
2.7.3 定义视图组件 24
2.7.4 深入探索 25
2.8 利用Annotation配置Struts2框架 26
总结 30
第3章 Action组件 31
3.1 如何开发Action 31
3.2 Action做了些什么 32
3.3 在Action中访问资源 37
3.3.1 自动获取Web请求参数 37
3.3.2 通过ActionContext获取 48
3.3.3 通过ServletActionContext 53
3.3.4 Struts2框架注入 55
3.3.5 传递静态参数 57
3.4 让Action处理多个请求 58
3.4.1 动态方法调用 58
3.4.2 定义逻辑Action 61
3.4.3 在配置文件中使用通配符 62
3.5 Action的处理结果 62
3.6 Action的组织 63
总结 67
第4章 拦截器 68
4.1 为什么要使用拦截器 68
4.2 什么是拦截器 69
4.3 如何使用拦截器 69
4.4 拦截器的工作原理 75
4.5 Struts2框架中的拦截器 76
4.6 开发自己的拦截器 77
4.6.1 创建Struts2组件 78
4.6.2 创建拦截器 81
4.6.3 配置拦截器 83
4.6.4 演示分析 84
4.7 拦截器与结果视图 85
4.8 监听拦截器结果 87
4.9 拦截器执行顺序和参数传递 90
总结 92
第5章 标记库 94
5.1 标记库概述 94
5.2 站在ValueStack上 95
5.3 标记的语言——OGNL 97
5.3.1 访问Object Stack中的元素 97
5.3.2 访问Stack Context中的信息 98
5.3.3 访问静态属性和方法 98
5.3.4 访问集合元素 98
5.4 使用标记库 99
5.5 控制标记 100
5.5.1 分支控制 100
5.5.2 迭代控制 101
5.5.3 集合操作 103
5.6 数据标记 109
5.6.1 action标记 110
5.6.2 property标记 111
5.6.3 debug标记 112
5.6.4 bean标记 112
5.6.5 set标记 114
5.6.6 push标记 115
5.6.7 include标记 115
5.6.8 param标记 115
5.6.9 url标记 115
5.6.10 date标记 116
5.7 ui标记 117
5.8 关于标记属性的说明 117
总结 118
第6章 结果视图类型 119
6.1 结果类型 119
6.2 利用结果类型实现Action协作 120
6.3 利用stream结果类型实现文件下载 128
总结 129
第7章 类型转换 130
7.1 框架内置的类型转换支持 130
7.2 框架内置类型转换示例 130
7.3 类型转换实现机制 134
7.4 JavaBean对象的类型转换 134
7.5 自定义对象的类型转换 138
7.6 集合对象的类型转换 143
7.7 类型转换流程 153
总结 153
第8章 输入校验 154
8.1 Struts2校验机制 154
8.2 利用Struts2框架实现校验 155
8.3 内置校验器 159
8.4 校验器配置 161
8.5 校验器的执行与短路 168
8.6 复杂对象属性校验 171
8.7 校验错误信息的处理 175
8.8 自定义校验器 177
8.9 客户端验证 180
8.10 手动校验 181
总结 183
第9章 异常处理 184
9.1 异常处理机制 184
9.2 异常处理的声明 186
9.3 异常处理示例 186
总结 189
第10章 国际化 190
10.1 在Java应用中实现国际化 190
10.1.1 三个类 190
10.1.2 资源文件 190
10.1.3 一个示例 191
10.2 Struts2对国际化的支持 195
10.3 Struts2下的国际化应用 195
10.4 区域属性的手动选择 198
10.5 显示本地化信息的方法 200
10.6 国际化资源的定义 203
10.7 资源属性文件的定位查找 203
10.8 显示本地化异常信息 204
10.9 资源文件参数化 205
总结 206
第11章 Ajax 208
11.1 什么是Ajax 208
11.2 一个简单的Ajax应用示例 208
11.2.1 Ajax框架JavaScript脚本 209
11.2.2 特定应用脚本 210
11.2.3 处理Ajax请求的服务器组件 211
11.2.4 辅助JavaBean 213
11.2.5 交互页面 216
11.2.6 运行测试 217
11.2.7 思考 217
11.3 Struts2支持Ajax应用的实现原理 218
11.4 使用Ajax标记 219
11.5 实现自动完成功能 223
11.6 实现Ajax校验 225
11.7 Struts2框架下的Ajax应用 229
总结 234
第12章 与Spring和Hibernate集成 235
12.1 为什么要集成Spring和Hibernate 235
12.1.1 集成Spring 235
12.1.2 集成Hibernate 235
12.2 集成方案 236
12.3 实施步骤 236
12.3.1 添加相应的Jar 236
12.3.2 配置Web应用 237
12.3.3 在Spring框架中集成Hibernate 237
12.3.4 利用Spring AOP实现事务支持 238
12.3.5 Spring与Struts2的集成 238
12.3.6 实体对象与数据库的映射 239
12.3.7 用hibernate操作数据库 240
12.4 程序运行 241
12.5 总结 242
参考文献 243