第1章 Struts 2入门 1
1.1 MVC模式 1
1.2 Struts 2的体系结构 2
1.3 Struts 2的工作环境 3
1.3.1 Struts 2的下载与安装 4
1.3.2 使用Eclipse开发Struts 2的Web应用 4
1.3.3 使用MyEclipse开发Struts 2的Web应用 10
1.4 第一个Struts 2应用 14
1.4.1 用户请求页面 14
1.4.2 Action实现 15
1.4.3 配置Action 15
1.4.4 发布并运行Web应用 16
1.4.5 struts.xml配置中的包属性介绍 19
1.5 实践环节 19
1.6 本章小结 19
习题1 20
第2章 Struts 2的Action 21
2.1 Action的创建与配置 21
2.1.1 Action的创建方式 21
2.1.2 Action的配置 23
2.1.3 DMI以及通配符 24
2.1.4 实践环节 26
2.2 Action接收请求参数 26
2.2.1 使用Action属性接收参数 26
2.2.2 使用DomainModel接收参数 27
2.2.3 使用ModelDriven<T>接口接收参数 29
2.2.4 实践环节 29
2.3 Action访问Servlet API 30
2.3.1 通过ActionContext 30
2.3.2 实现RequestAware、SessionAware和ApplicationAware接口 32
2.3.3 通过ServletActionContext 33
2.3.4 实现ServletRequestAware接口 34
2.3.5 实践环节 35
2.4 struts.xml文件中的include及constant 36
2.4.1 include的配置 36
2.4.2 constant的配置 36
2.5 Action中常见的结果类型 37
2.5.1 chain类型 37
2.5.2 redirectAction类型 38
2.5.3 redirect类型 39
2.5.4 dispatcher类型 39
2.5.5 全局result 39
2.5.6 实践环节 40
2.6 包的继承 41
2.7 本章小结 42
习题2 42
第3章 Struts 2的类型转换 43
3.1 类型转换的意义 43
3.2 Struts 2内置的类型转换器 45
3.3 自定义类型转换器 47
3.3.1 实现类型转换器 50
3.3.2 注册类型转换器 52
3.3.3 实践环节 53
3.4 数组属性的类型转换器 53
3.5 集合属性的类型转换器 56
3.6 本章小结 58
习题3 58
第4章 Struts 2的拦截器 59
4.1 拦截器概述 59
4.1.1 拦截器的原理 59
4.1.2 拦截器与过滤器的区别 59
4.1.3 Struts 2内置的拦截器 60
4.2 拦截器的配置 61
4.2.1 配置拦截器 62
4.2.2 拦截器栈 63
4.2.3 默认拦截器 63
4.2.4 实践环节 64
4.3 自定义拦截器 64
4.3.1 实现Interceptor接口 65
4.3.2 继承AbstractInterceptor类 67
4.3.3 继承MethodFilterInterceptor类 67
4.3.4 实践环节 69
4.4 使用自定义拦截器完成权限验证 71
4.5 本章小结 74
习题4 74
第5章 表达式语言OGNL 76
5.1 OGNL简介 76
5.2 OGNL基础 76
5.2.1 OGNL上下文 78
5.2.2 值栈 81
5.2.3 OGNL的访问 83
5.2.4 实践环节 85
5.3 OGNL基本语法 85
5.3.1 常量 86
5.3.2 操作符 86
5.3.3 OGNL表达式 87
5.3.4 实践环节 91
5.4 本章小结 96
习题5 96
第6章 Struts 2中的标签 97
6.1 标签库概述 97
6.1.1 标签的分类 97
6.1.2 标签的使用 97
6.1.3 标签的语法 97
6.2 数据标签 98
6.2.1 action标签 99
6.2.2 bean标签 102
6.2.3 date标签 103
6.2.4 debug标签 104
6.2.5 include标签 105
6.2.6 param标签 106
6.2.7 push标签 106
6.2.8 set标签 107
6.2.9 url标签 108
6.2.10 property标签 109
6.2.11 实践环节 109
6.3 流程控制标签 110
6.3.1 if/elseif/else标签 110
6.3.2 iterator标签 111
6.3.3 append标签 113
6.3.4 generator标签 114
6.3.5 merge标签 115
6.3.6 subset标签 115
6.3.7 sort标签 117
6.3.8 实践环节 118
6.4 表单标签 118
6.4.1 表单标签的通用属性 118
6.4.2 checkboxlist标签 119
6.4.3 combobox标签 121
6.4.4 doubleselect标签 122
6.4.5 optiontransferselect标签 123
6.4.6 select标签 125
6.4.7 optgroup标签 126
6.4.8 radio标签 127
6.4.9 实践环节 128
6.5 非表单标签 129
6.6 本章小结 131
习题6 131
第7章 Struts 2的输入校验 132
7.1 输入校验概述 132
7.1.1 客户端校验 132
7.1.2 服务器端校验 136
7.2 手动编程校验 136
7.2.1 重写validate()方法 136
7.2.2 重写validateXxx()方法 139
7.2.3 输入校验的流程 140
7.2.4 实践环节 140
7.3 校验框架校验 141
7.3.1 Struts 2内置的校验器 141
7.3.2 常用内置校验器的配置 142
7.3.3 校验Action中所有与execute签名相同的方法 143
7.3.4 校验Action中某个与execute签名相同的方法 145
7.3.5 校验文件搜索顺序 146
7.3.6 实践环节 146
7.4 本章小结 146
习题7 147
第8章 Struts 2的国际化 148
8.1 程序国际化概述 148
8.1.1 Java国际化的思想 148
8.1.2 Java支持的语言和国家 149
8.1.3 Java程序国际化 150
8.1.4 带占位符的国际化信息 152
8.1.5 实践环节 152
8.2 国际化的步骤 153
8.2.1 Struts 2中加载全局资源文件 153
8.2.2 国际化信息输出 153
8.2.3 实践环节 156
8.3 资源文件的加载方式 157
8.3.1 包范围资源文件 157
8.3.2 Action范围资源文件 157
8.3.3 临时指定资源文件 157
8.4 用户自定义切换语言示例 158
8.5 本章小结 162
习题8 163
第9章 文件的上传与下载 164
9.1 Struts 2文件上传 164
9.1.1 基于表单的文件上传 164
9.1.2 Struts 2单文件上传 165
9.1.3 拦截器实现文件过滤 168
9.1.4 文件上传的常量配置 169
9.1.5 Struts 2多文件上传 169
9.1.6 实践环节 172
9.2 Struts 2文件下载 172
9.3 本章小结 176
习题9 176
第10章 电子商务平台的设计与实现 178
10.1 系统设计 178
10.1.1 系统功能需求 178
10.1.2 系统模块划分 178
10.2 数据库设计 179
10.2.1 数据库概念结构设计 179
10.2.2 数据逻辑结构设计 181
10.2.3 创建数据表 182
10.3 系统管理 185
10.3.1 导入相关的jar包 185
10.3.2 JSP页面管理 185
10.3.3 包管理 189
10.3.4 配置文件管理 189
10.4 组件设计 195
10.4.1 过滤器 195
10.4.2 拦截器 195
10.4.3 验证码 196
10.4.4 数据库操作 196
10.5 后台管理子系统的实现 211
10.5.1 Action的实现 212
10.5.2 管理员登录 218
10.5.3 添加商品 219
10.5.4 查询商品 221
10.5.5 修改商品 223
10.5.6 删除商品 226
10.5.7 订单管理 227
10.5.8 用户管理 228
10.5.9 公告管理 229
10.5.10 退出系统 232
10.6 前台电子商务子系统的实现 232
10.6.1 Action的实现 233
10.6.2 导航栏 239
10.6.3 销售排行 243
10.6.4 人气排行 243
10.6.5 最新商品 243
10.6.6 公告栏 243
10.6.7 用户注册 243
10.6.8 用户登录 243
10.6.9 商品详情 244
10.6.10 关注商品 246
10.6.11 购物车 246
10.6.12 下单 249
10.6.13 用户中心 251
10.7 本章小结 255
参考文献 256