
本书以理论和实践相结合的模式,介绍如何用Struts2来开发基于B/S结构的应用程序,使读者更容易掌握Struts2的相关知识。
本书共分17章,其中第1~12章循序渐进地讲解Struts2基本知识、Struts2配置方式、Struts2拦截器、OGNL表达式、Struts2标签、Struts2校验等相关内容,第13~16章讲解前端技术jQuery、Struts2测试以及Struts2、Spring、Hibernate的整合等内容,第17章讲解使用Struts2开发一个日志管理系统的方法。
本书内容结构合理,语言简练、容易理解,适合Struts2的初学者或有相关编程经验的用户使用,也可供广大软件开发者和编程爱好者参考使用,更是学校及培训机构的首选用书。
Struts2用于构建基于Java平台的动态Web应用程序,是Apache Struts与Webwork合并后的一种应用广泛的MVC模型技术。Struts2完美地继承了Webwork的优点,并在此基础上不断进步与发展,相对于Struts1,Struts2更容易学习和掌握。本书不仅讲解了Struts2的相关知识以及各方面的使用,而且还讲解了与其相关的Hibernate、Spring、jQuery的应用等内容,最后给出了一个完整的系统开发案例。
本书共分为17章,其中前16章属于理论介绍,最后一章属于实例开发。具体内容如下。
第1章介绍Struts2的背景知识、下载和安装,并在最后给出了一个快速入门的实例。
第2章介绍Struts2的工作原理,以让读者了解Struts2是如何处理客户端发送过来的请求的,并在最后给出了一个用户登录的小例子。
第3章与第 4 章详细介绍Struts2的配置,比较系统地涵盖Struts2 相关配置说明与使用实例。
第5章介绍Struts2的核心组件——拦截器,包括其工作原理、配置方式以及相关实例。
第6章介绍Struts2的类型转换功能,以理解Struts2如何优雅地解决数据类型转换问题。
第7章介绍OGNL表达式的用法,为介绍后续的Struts2标签做准备。
第8章与第 9 章详细介绍Struts2的常用标签,掌握这些标签会让开发者事半功倍,考虑到标签比较多,本章节也可作为日后的参考资料。
第10章介绍Struts2的校验配置与使用,Struts2的校验支持服务器端、客户端以及最新的Ajax校验。
第11章介绍Struts2国际化的相关知识。
第12章介绍Struts2的实用程序,包括解决表单重复提交的Token,Struts2上传与下载,中文乱码处理,SiteMesh布局以及FreeMarker模板的整合。
第13章介绍Struts2与Spring、Hibernate技术整合的配置方法。
第14章与第 15 章介绍当前非常热门的JS框架——jQuery,掌握这些内容可以更好地帮助开发人员解决前端问题。
第16章介绍Struts2的测试技术,包括Struts2单独测试以及与Spring整合在一起的集成测试。
第17章介绍了基于Struts2、Spring、Hibernate开发的一个AOP日志系统。
本书对理论知识的讲解步骤清晰、由浅入深、通俗易懂;实例部分的选材结合实际应用,循序渐进,操作步骤便于用户模仿。在理论知识讲解的过程中也引用了大量的实例、截图并详细讲解了操作步骤。相关代码列举清晰,使用户更容易理解和模仿编程,具有很大的实用价值。本书添加的一些提示和注意等内容,都是作者经验的总结,目的是让读者在最短的时间内,掌握更深的技术。
本书由胡波、邱加永、许焕新编著,同时参加本书编写和校对工作的还有徐明华、于坤、单兴华、郑经煜、周大庆、卞志城、赵晓、聂静宇、尼春雨、张丽、王国胜、张石磊、伏银恋、蒋军军、蒋燕燕、王海龙、曹培培等。由于编者水平有限,书中难免存在疏漏和不足之处,恳请专家和广大读者予以指正。
编 者
目 录
第1章 Struts2起步 1
1.1 Struts2概述 2
1.2 Struts2的安装 3
1.3 一个HelloWorld示例 4
1.3.1 创建Web应用 4
1.3.2 配置Struts2 5
1.3.3 创建控制类HelloWorld 5
1.3.4 创建HelloWorld.jsp 6
1.3.5 配置HelloWorld 7
1.3.6 发布运行HelloWorld 8
1.4 本章小结 9
1.5 上机练习 9
第2章 体验Struts2 11
2.1 Struts2的执行流程与原理 12
2.2 登录程序示例 18
2.3 Action的驱动模式 21
2.3.1 Property-Driven 22
2.3.2 Model-Driven 24
2.4 request、response、session、application
对象的访问 26
2.5 完善登录程序 27
2.6 本章小结 30
2.7 上机练习 30
第3章 Struts2的配置方式一 31
3.1 web.xml的配置 32
3.2 struts.xml的配置 34
3.2.1 bean的配置 34
3.2.2 package的配置 36
3.2.3 namespace的配置 37
3.2.4 constant的配置 38
3.2.5 interceptor的配置 38
3.2.6 include的配置 41
3.2.7 action的配置 41
3.2.8 result的配置 45
3.2.9 exception的配置 47
3.3 Result types的配置 49
3.3.1 Chain Result的配置 50
3.3.2 Dispatcher Result的配置 51
3.3.3 FreeMarker Result的配置 52
3.3.4 HttpHeader Result的配置 52
3.3.5 Redirect Result的配置 52
3.3.6 Stream Result的配置 53
3.3.7 Velocity Result的配置 54
3.3.8 XSLT Result的配置 55
3.3.9 PlainText Result的配置 56
3.3.10 JSON Result的配置 57
3.3.11 全局结果 60
3.3.12 动态结果映射 62
3.4 本章小结 63
3.5 上机练习 63
第4章 Struts2的配置方式二 65
4.1 Annotation的配置 66
4.1.1 Namespace的配置 68
4.1.2 ParentPackage的配置 68
4.1.3 Action的配置 70
4.1.4 Actions的配置 71
4.1.5 InterceptorRefs的配置 72
4.1.6 Result的配置 72
4.1.7 Results的配置 73
4.1.8 ResultPath的配置 73
4.1.9 ExceptionMapping的配置 74
4.1.10 ExceptionMappings的配置 74
4.2 Validation Annotations的配置 75
4.2.1 ConversionErrorFieldValidator
的配置 75
4.2.2 DateRangeFieldValidator的
配置 78
4.2.3 DoubleRangeFieldValidator的
配置 81
4.2.4 EmailValidator的配置 82
4.2.5 ExpressionValidator的配置 82
4.2.6 IntRangeFieldValidator的
配置 83
4.2.7 RegexFieldValidator的配置 85
4.2.8 RequiredFieldValidator的
配置 86
4.2.9 RequiredStringValidator的
配置 87
4.2.10 StringLengthFieldValidator的
配置 87
4.2.11 UrlValidator的配置 88
4.2.12 Validation的配置 89
4.2.13 Validations的配置 90
4.2.14 VisitorFieldValidator的
配置 91
4.2.15 CustomValidator的配置 93
4.3 struts.properties的配置 95
4.4 struts-plugin.xml的配置 95
4.5 各种配置文件的加载顺序 95
4.6 本章小结 95
4.7 上机练习 96
第5章 体验Struts2拦截器 97
5.1 Struts2拦截器的体系结构 98
5.2 Struts2拦截器 99
5.3 自定义拦截器 101
5.4 拦截器的示例 102
5.5 用Annotation配置拦截器 109
5.6 本章小结 110
5.7 上机练习 111
第6章 Struts2的类型转换 113
6.1 Struts2的类型转换器 114
6.2 自定义转换器 115
6.3 批量类型转换实例 119
6.4 类型转换的原理与实现 123
6.5 本章小结 124
6.6 上机练习 124
第7章 OGNL的应用 127
7.1 OGNL概述 128
7.2 OGNL的语法基础 128
7.2.1 OGNL的表达式 128
7.2.2 常量 129
7.2.3 操作符 129
7.2.4 访问JavaBean的属性 129
7.2.5 索引访问 129
7.3 OGNL的使用 133
7.4 Struts2中的OGNL 137
7.5 本章小结 139
7.6 上机练习 139
第8章 Struts2标签一 141
8.1 Struts2标签的引入 142
8.2 通用标签 144
8.2.1 流程控制标签 144
8.2.2 数据标签 157
8.3 UI标签 173
8.3.1 表单标签 173
8.3.2 非表单标签 193
8.4 本章小结 197
8.5 上机练习 197
第9章 Struts2标签二 199
9.1 Ajax标签 200
9.1.1 a标签 200
9.1.2 autocompleter标签 203
9.1.3 bind标签 206
9.1.4 datetimepicker标签 209
9.1.5 div标签 211
9.1.6 head标签 214
9.1.7 submit标签 216
9.1.8 tabbedpanel标签 218
9.1.9 textarea标签 222
9.1.10 tree/treenode标签 223
9.2 Struts2主题和模板 226
9.3 本章小结 228
9.4 上机练习 228
第10章 Struts2校验 231
10.1 快速上手 232
10.2 服务器端的校验配置 238
10.3 客户端的校验配置 247
10.4 Ajax的校验配置 251
10.5 本章小结 253
10.6 上机练习 254
第11章 Struts2的国际化 255
11.1 常见国际化实例 256
11.2 页面内容国际化 258
11.3 错误信息国际化 264
11.4 格式化输出日期和数值 266
11.5 资源文件的加载方式和流程 268
11.6 本章小结 272
11.7 上机练习 272
第12章 Struts2的扩展功能 273
12.1 Token应用 274
12.1.1 TokenInterceptor的使用 274
12.1.2 TokenSessionStoreInterceptor
的使用 279
12.2 Struts2的上传、下载实现 281
12.2.1 Struts2文件上传 281
12.2.2 Struts2文件下载 290
12.3 Struts2中文乱码处理总结 297
12.4 页面跳转技巧 298
12.5 使用SiteMesh布局 299
12.5.1 SiteMesh简介 299
12.5.2 SiteMesh运行原理 300
12.5.3 SiteMesh实例 301
12.6 在Struts2中使用FreeMarker 305
12.6.1 FreeMarker简介 305
12.6.2 FreeMarker快速上手 305
12.6.3 在Struts2中使用
FreeMarker 307
12.7 本章小结 310
12.8 上机练习 310
第13章 S2SH整合 313
13.1 S2SH整合的目的 314
13.2 Struts2与Spring整合 315
13.3 Struts2与Hibernate整合 319
13.4 Struts2 + Spring + Hibernate整合 324
13.5 本章小结 329
13.6 上机练习 330
第14章 jQuery的应用一 331
14.1 jQuery的安装 332
14.2 强大的选择器 332
14.2.1 基本选择器 332
14.2.2 层级选择器 333
14.2.3 简单选择器 335
14.2.4 内容选择器 337
14.2.5 可见性选择器 339
14.2.6 属性选择器 340
14.2.7 子元素选择器 342
14.2.8 表单选择器 344
14.2.9 表单对象属性选择器 347
14.3 jQuery的文档处理 348
14.3.1 选择元素 349
14.3.2 新增元素 350
14.3.3 修改元素 351
14.3.4 删除元素 352
14.3.5 复制元素 352
14.3.6 包裹元素 353
14.3.7 添加元素 353
14.3.8 属性操作 358
14.3.9 获取和设置Html、
文本和值 362
14.4 jQuery选择器 365
14.5 本章小结 368
14.6 上机练习 369
第15章 jQuery的应用二 371
15.1 jQuery的事件处理 372
15.1.1 页面加载 372
15.1.2 事件绑定 373
15.1.3 移除事件 375
15.1.4 切换事件 377
15.1.5 触发事件 378
15.2 jQuery效果处理 380
15.2.1 基本效果 380
15.2.2 淡入、淡出效果 381
15.2.3 滑动效果 382
15.2.4 自定义动画 382
15.3 jQuery Ajax支持 390
15.3.1 load()方法 390
15.3.2 $.get()方法 392
15.3.3 $.post()方法 395
15.3.4 $. getScript()方法 396
15.3.5 $.getJson()方法 396
15.3.6 $.ajax()方法 396
15.3.7 序列化元素 399
15.3.8 Ajax全局事件 401
15.4 jQuery工具函数 401
15.5 本章小结 405
15.6 上机练习 405
第16章 Struts2的测试 407
16.1 单元测试简介 408
16.2 Struts2的单元测试 408
16.2.1 Struts2单独进行单元
测试 409
16.2.2 Struts2与Spring集成进行
单元测试 413
16.3 本章小结 415
16.4 上机练习 415
第17章 AOP日志管理系统 417
17.1 系统概述 418
17.2 系统需求 418
17.3 系统功能描述 418
17.4 数据库设计 422
17.4.1 E-R图设计 422
17.4.2 物理建模 422
17.4.3 设计表格 423
17.4.4 表格脚本 423
17.5 编码实现 424
17.5.1 编写配置文件 424
17.5.2 编写Action类 429
17.5.3 编写业务类 430
17.6 运行工程 430
17.6.1 使用工具 430
17.6.2 工程部署 431
17.6.3 运行程序 431
17.7 本章小结 433
附录 部分属性设置说明 434