深入浅出Struts 2

2019-03-28 14:45|来源: Budi Kurniawan、杨涛、王建桥、 杨晓云

编辑推荐

《深入浅出Struts2》是广受赞誉的Struts2优秀教程.它全面而深入地阐述了Strut2的各个特性,并指导开发人员如何根据遇到的问题对症下药。选择使用最合适的特性。作者处处从实战出发。在丰富的示例中直观地探讨了许多实用的技术。如数据类型转换、文件上传和下载、Struts2应用的安全性、调试与性能分析、FreeMarker、Velocily、Ajax,等等。跟随作者一道深入Struts2。聆听大量来之不易的经验之谈。你对Struts2开发框架的理解和应用水平都将更上一层楼。
Struts2权威著作
深入全面阐释Struts2的方方面面
涵盖FreeMarker、Ajax等大量相关技术

媒体推荐

“本书是毋庸置疑的struts2权威著作,虽然肯定还会有更多相关图书出现,但是我相信它已经不可超越。”
  ——JavaRanch网站
“本书内容极为扎实。充满了其他地方找不到的技术细节,而且深入剖析了Struts的内部机理。强烈推荐”
  ——JosephBrutto,资深程序员

作者简介

作者:(加拿大)Budi Kurniawan 译者:杨涛 王建桥 杨晓云

Budi Kurniawan,世界知名的Java专家和资深JavaEE高级架构师,自己创建了软件咨询和技术出版公司Brainy Software。他还撰写了深入揭示Tomcat工作机理和设计理念的名著How Tomcat Works,并在多种权威出版物上发表过100多篇文章。

目录

第1章 Model 2应用程序 1
1.1 Model 2概览 1
1.2 带servlet控制器的Model 2 2
1.2.1 Product动作类 3
1.2.2 ControllerServlet类 4
1.2.3 视图 6
1.2.4 部署描述文件 8
1.2.5 示例程序的运行 9
1.3 带过滤器调度程序的Model 2 9
1.4 小结 13

第2章 初识Struts 14
2.1 Struts的优点 14
2.2 Struts的动作处理流程 15
2.3 拦截器 17
2.4 Struts配置文件 18
2.4.1 struts.xml文件 19
2.4.2 struts.properties文件 26
2.5 Struts应用程序示例 26
2.5.1 部署描述文件和Struts配置文件 27
2.5.2 动作类 28
2.5.3 运行app02a程序 29
2.6 依赖注入 29
2.6.1 概述 29
2.6.2 依赖注入的几种方式 31
2.7 小结 31

第3章 动作与结果 32
3.1 动作类 32
3.2 如何访问资源 34
3.2.1 ServletActionContext对象 34
3.2.2 Aware接口 35
3.2.3 通过Aware接口访问资源 38
3.3 把静态参数传递给一个动作 41
3.4 ActionSupport类 41
3.5 结果 42
3.5.1 Chain 43
3.5.2 Dispatcher 44
3.5.3 FreeMarker 44
3.5.4 HttpHeader 44
3.5.5 Redirect 45
3.5.6 Redirect Action 46
3.5.7 Stream 47
3.5.8 Velocity 47
3.5.9 XSLT 47
3.5.10 PlainText 47
3.6 异常处理:exception-mapping元素 47
3.7 通配符映射 48
3.8 动态方法调用 51
3.9 对动作类进行测试 51
3.10 小结 51

第4章 OGNL 52
4.1 Value Stack栈 52
4.2 读取Object Stack里的对象的属性 53
4.3 读取Context Map里的对象的属性 54
4.4 如何调用字段和方法 55
4.5 如何访问数组类型的属性 56
4.6 如何访问List类型的属性 56
4.7 如何访问Map类型的属性 57
4.8 JSP EL:当OGNL帮不上忙时 58
4.9 小结 58

第5章 表单标签 59
5.1 Struts标签的使用方法 59
5.2 表单标签的共同属性 60
5.3 form标签 62
5.4 textfield、password、hidden标签 63
5.5 submit标签 65
5.6 reset标签 65
5.7 label标签 66
5.8 head标签 66
5.9 textarea标签 66
5.10 checkbox标签 67
5.11 list、listKey和listValue属性 72
5.11.1 赋值一个String 72
5.11.2 赋值一个Map 73
5.11.3 赋值一个Collection或一个对象数组 73
5.12 radio标签 74
5.13 select标签 76
5.14 用optgroup标签对选项进行分组 79
5.15 checkboxlist标签 82
5.16 combobox标签 83
5.17 updownselect标签 85
5.18 optiontransferselect标签 87
5.19 doubleselect标签 90
5.20 主题 92
5.21 小结 94

第6章 通用标签 95
6.1 property标签 95
6.2 a标签 97
6.3 action标签 97
6.4 param标签 98
6.5 bean标签 98
6.6 date标签 100
6.7 include标签 100
6.8 set标签 101
6.9 push标签 103
6.10 url标签 104
6.11 if、else和elseif标签 105
6.12 iterator标签 107
6.13 append标签 110
6.14 merge标签 111
6.15 generator标签 113
6.16 sort标签 116
6.17 subset标签 118
6.18 小结 119

第7章 类型转换 120
7.1 类型转换概述 120
7.2 类型转换错误消息的定制 121
7.3 类型转换器的定制 125
7.3.1 对自定义的类型转换器进行配置 126
7.3.2 自定义的类型转换器示例 127
7.4 扩展StrutsTypeConverter类 130
7.5 与复杂对象配合使用 134
7.6 与Collection配合使用 137
7.7 与Map配合使用 142
7.8 小结 145

第8章 输入验证 146
8.1 验证程序概述 146
8.2 验证程序的配置 147
8.3 Struts内建验证程序 148
8.3.1 required验证程序 149
8.3.2 requiredstring验证程序 150
8.3.3 stringlength验证程序 152
8.3.4 int验证程序 154
8.3.5 date验证程序 156
8.3.6 email验证程序 157
8.3.7 url验证程序 159
8.3.8 regex验证程序 160
8.3.9 expression和fieldexpression验证程序 161
8.3.10 conversion验证程序 164
8.3.11 visitor验证程序 166
8.4 编写自定义的验证程序 173
8.4.1 注册 176
8.4.2 示例 177
8.5 利用Validateable接口实现编程验证 180
8.6 小结 182

第9章 消息处理与国际化 183
9.1 地区和Java资源绑定 183
9.2 Struts中的国际化支持 185
9.3 text标签 188
9.4 i18n标签 191
9.5 以手动方式选择一个资源包 193
9.6 小结 195

第10章 Model Driven和Preparable拦截器 196
10.1 把动作与模型隔离开 196
10.2 Model Driven拦截器 197
10.3 Preparable拦截器 201
10.4 小结 206

第11章 持久层 207
11.1 DAO模式 207
11.1.1 DAO模式的最简单实现 208
11.1.2 使用DAO接口的DAO模式 208
11.1.3 使用Abstract Factory模式的DAO模式 209
11.2 实现DAO模式 209
11.2.1 DAO接口和DAOBase类 210
11.2.2 EmployeeDAO类 213
11.2.3 EmployeeDAOMySQLImpl类 214
11.2.4 DAOFactory类 218
11.2.5 EmployeeManager类 219
11.2.6 运行app11a应用程序 220
11.3 Hibernate 221
11.4 小结 221

第12章 文件的上传 222
12.1 文件上传概述 222
12.2 在Struts里上传文件 223
12.3 File Upload拦截器 224
12.4 上传单个文件示例 225
12.5 上传多个文件示例 227
12.6 小结 230

第13章 文件的下载 231
13.1 文件下载概述 231
13.2 Stream结果类型 232
13.3 文件下载功能的编程实现 235
13.4 小结 238

第14章 提高Struts应用程序的安全性 239
14.1 用户和角色 239
14.2 编写安全策略 240
14.2.1 保护资源 240
14.2.2 指定登录方法 241
14.3 身份验证方法 242
14.3.1 使用基本身份验证方法 243
14.3.2 使用基于表单的身份验证方法 245
14.4 隐藏资源 247
14.5 Struts安全配置 248
14.6 以编程方式提高安全性 250
14.6.1 getAuthType方法 250
14.6.2 isUserInRole方法 250
14.6.3 getUserPrincipal方法 251
14.6.4 getRemoteUser方法 251
14.7 小结 251

第15章 防止重复提交 252
15.1 标记管理 252
15.2 使用Token拦截器 253
15.3 使用Token Session拦截器 256
15.4 小结 257

第16章 调试与性能分析 258
16.1 debug标签 258
16.2 Debugging拦截器 259
16.3 性能分析 261
16.4 小结 262

第17章 进度条 263
17.1 Execute and Wait拦截器 263
17.2 使用Execute and Wait拦截器 264
17.3 使用一个自定义的“等待”页面 265
17.4 小结 266

第18章 定制拦截器 267
18.1 Interceptor接口 267
18.2 编写一个自定义的拦截器 268
18.3 使用DataSourceInjectorInterceptor拦截器 269
18.4 小结 273

第19章 定制结果类型 274
19.1 概述 274
19.2 编写一个自定义的结果类型 274
19.3 使用新的结果类型 277
19.4 小结 279

第20章 Velocity 280
20.1 概述 280
20.2 Velocity隐式对象 281
20.3 标签 281
20.4 Velocity示例 282
20.5 小结 284

第21章 FreeMarker 285
21.1 概述 285
21.2 FreeMarker标签 286
21.3 示例 287
21.4 小结 289

第22章 XSLT结果类型 290
22.1 概述 290
22.2 XSLT结果类型 292
22.3 示例 294
22.4 小结 295

第23章 插件 296
23.1 概述 296
23.2 从哪里获得插件 296
23.3 编写一个自定义的插件 296
23.4 使用Captcha插件 297
23.5 小结 300

第24章 Tiles插件 301
24.1 JSP include指令/标签的不足 302
24.2 Tiles布局和定义 303
24.2.1 布局页面 303
24.2.2 Tiles定义 304
24.3 Struts Tiles插件 305
24.4 Struts Tiles示例 306
24.5 小结 309

第25章 JFreeChart插件 310
25.1 JFreeChart API 310
25.1.1 JFreeChart类 310
25.1.2 Plot抽象类 310
25.2 使用标准的插件 311
25.3 使用BrainySoftware JFreeChart插件 313
25.4 小结 315

第26章 零配置 316
26.1 准备工作 316
26.2 注解 317
26.2.1 @Result注解 317
26.2.2 @Results注解 318
26.2.3 @Namespace注解 318
26.2.4 @ParentPackage注解 319
26.3 CodeBehind插件 319
26.4 小结 321

第27章 Ajax 322
27.1 Ajax概述 322
27.2 Dojo的事件系统 323
27.3 使用Struts Dojo插件 324
27.4 head标签 324
27.5 div标签 325
27.5.1 示例程序1 326
27.5.2 示例程序2 326
27.5.3 示例程序3 327
27.6 a标签 328
27.7 submit标签 330
27.8 bind标签 331
27.9 datetimepicker标签 333
27.10 tabbedpanel标签 334
27.11 textarea标签 336
27.12 autocompleter标签 337
27.12.1 示例程序1 339
27.12.2 示例程序2 339
27.12.3 示例程序3 340
27.13 tree和treenode标签 341
27.13.1 示例程序1 342
27.13.2 示例程序2 343
27.14 小结 345

附录A Struts配置 346
附录B JSP EL语言 361
附录C Java注解 370

相关问答

更多