第1章 Spring框架 1
1.1 XML配置文件 3
1.2 Spring控制反转容器的使用 4
1.2.1 通过构造器创建一个bean实例 4
1.2.2 通过工厂方法创建一个bean实例 5
1.2.3 销毁方法的使用 6
1.2.4 向构造器传递参数 6
1.2.5 Setter方式依赖注入 7
1.2.6 构造器方式依赖注入 10
1.3 小结 10
第2章 模型2和MVC模式 11
2.1 模型1介绍 11
2.2 模型2介绍 11
2.3 模型2之Servlet控制器 13
2.3.1 Product类 14
2.3.2 ProductForm类 15
2.3.3 ControllerServlet类 16
2.3.4 Action类 20
2.3.5 视图 20
2.3.6 测试应用 22
2.4 模型2之Filter分发器 22
2.5 校验器 25
2.6 依赖注入 31
2.7 小结 38
第3章 Spring MVC介绍 39
3.1 采用Spring MVC的好处 39
3.2 Spring MVC的DispatcherServlet 40
3.3 Controller接口 41
3.4 第一个Spring MVC应用 42
3.4.1 目录结构 42
3.4.2 部署描述符文件和Spring MVC配置文件 43
3.4.3 Controller类 44
3.4.4 View类 46
3.4.5 测试应用 47
3.5 视图解析器 47
3.6 小结 49
第4章 基于注解的控制器 50
4.1 Spring MVC注解类型 50
4.1.1 Controller注解类型 50
4.1.2 RequestMapping注解类型 51
4.2 编写请求处理方法 54
4.3 应用基于注解的控制器 56
4.3.1 目录结构 56
4.3.2 配置文件 56
4.3.3 Controller类 59
4.3.4 View 60
4.3.5 测试应用 61
4.4 应用@Autowired和@Service进行依赖注入 62
4.5 重定向和Flash属性 66
4.6 请求参数和路径变量 67
4.7 @ModelAttribute 69
4.8 小结 70
第5章 数据绑定和表单标签库 71
5.1 数据绑定概览 71
5.2 表单标签库 72
5.2.1 表单标签 73
5.2.2 input标签 74
5.2.3 password标签 74
5.2.4 hidden标签 75
5.2.5 textarea标签 75
5.2.6 checkbox标签 76
5.2.7 radiobutton标签 76
5.2.8 checkboxes标签 77
5.2.9 radiobuttons标签 78
5.2.10 select标签 78
5.2.11 option标签 79
5.2.12 options标签 80
5.2.13 errors标签 80
5.3 数据绑定范例 81
5.3.1 目录结构 81
5.3.2 Domain类 81
5.3.3 Controller类 83
5.3.4 Service类 84
5.3.5 配置文件 87
5.3.6 视图 88
5.3.7 测试应用 91
5.4 小结 92
第6章 转换器和格式化 93
6.1 Converter 93
6.2 Formatter 98
6.3 用Registrar注册Formatter 101
6.4 选择Converter,还是Formatter 103
6.5 小结 103
第7章 验证器 104
7.1 验证概览 104
7.2 Spring验证器 105
7.3 ValidationUtils类 106
7.4 Spring的Validator范例 107
7.5 源文件 109
7.6 Controller类 109
7.7 测试验证器 111
7.8 JSR 303验证 112
7.9 JSR 303 Validator范例 113
7.10 小结 116
第8章 表达式语言 117
8.1 表达式语言简史 117
8.2 表达式语言的语法 118
8.2.1 关键字 118
8.2.2 []和.运算符 119
8.2.3 取值规则 119
8.3 访问JavaBean 120
8.4 EL隐式对象 121
8.4.1 pageContext 121
8.4.2 initParam 123
8.4.3 param 123
8.4.4 paramValues 123
8.4.5 header 123
8.4.6 headerValues 124
8.4.7 cookie 124
8.4.8 applicationScope、sessionScope、requestScope和pageScope 124
8.5 使用其他EL运算符 124
8.5.1 算术运算符 125
8.5.2 关系运算符 125
8.5.3 逻辑运算符 126
8.5.4 条件运算符 126
8.5.5 empty运算符 126
8.5.6 字符串连接运算符 126
8.5.7 分号操作符 127
8.6 引用静态属性和静态方法 127
8.7 创建Set、List和Map 128
8.8 访问列表元素和Map条目 129
8.9 操作集合 129
8.9.1 toList 129
8.9.2 toArray 130
8.9.3 limit 130
8.9.4 sort 130
8.9.5 average 130
8.9.6 sum 131
8.9.7 count 131
8.9.8 min 131
8.9.9 max 131
8.9.10 map 131
8.9.11 filter 132
8.9.12 forEach 132
8.10 格式化集合 132
8.10.1 使用HTML注释 132
8.10.2 使用String.join() 134
8.11 格式化数字 134
8.12 格式化日期 134
8.13 如何在JSP 2.0及其更高版本中配置EL 135
8.13.1 实现免脚本的JSP页面 135
8.13.2 禁用EL计算 135
8.14 小结 137
第9章 JSTL 138
9.1 下载JSTL 138
9.2 JSTL库 138
9.3 一般行为 140
9.3.1 out标签 140
9.3.2 url标签 141
9.3.3 set标签 144
9.3.4 remove标签 145
9.4 条件行为 146
9.4.1 if标签 146
9.4.2 choose、when和otherwise标签 147
9.5 遍历行为 148
9.5.1 forEach标签 148
9.5.2 forTokens标签 157
9.6 格式化行为 158
9.6.1 formatNumber标签 158
9.6.2 formatDate标签 160
9.6.3 timeZone标签 162
9.6.4 setTimeZone标签 163
9.6.5 parseNumber标签 163
9.6.6 parseDate标签 165
9.7 函数 166
9.7.1 contains函数 166
9.7.2 containsIgnoreCase函数 166
9.7.3 endsWith函数 167
9.7.4 escapeXml函数 167
9.7.5 indexOf函数 167
9.7.6 join函数 167
9.7.7 length函数 168
9.7.8 replace函数 168
9.7.9 split函数 168
9.7.10 startsWith函数 169
9.7.11 substring函数 169
9.7.12 substringAfter函数 169
9.7.13 substringBefore函数 169
9.7.14 toLowerCase函数 170
9.7.15 toUpperCase函数 170
9.7.16 trim函数 170
9.8 小结 170
第10章 国际化 171
10.1 语言区域 172
10.2 国际化Spring MVC应用程序 173
10.2.1 将文本组件隔离成属性文件 174
10.2.2 选择和读取正确的属性文件 175
10.3 告诉Spring MVC使用哪个语言区域 176
10.4 使用message标签 177
10.5 范例 177
10.6 小结 181
第11章 上传文件 182
11.1 客户端编程 182
11.2 MultipartFile接口 183
11.3 用Commons FileUpload上传文件 184
11.4 Domain类 185
11.5 控制器 185
11.6 配置文件 187
11.7 JSP页面 188
11.8 应用程序的测试 190
11.9 用Servlet 3及其更高版本上传文件 191
11.10 客户端上传 194
11.11 小结 202
第12章 下载文件 203
12.1 文件下载概览 203
12.2 范例1:隐藏资源 204
12.3 范例2:防止交叉引用 207
12.4 小结 210
第13章 应用测试 211
13.1 单元测试 211
13.2 状态测试与行为测试 213
13.3 应用JUnit 213
13.3.1 开发一个单元测试 213
13.3.2 运行一个单元测试 215
13.3.3 通过测试套件来运行全部或多个单元测试 215
13.4 应用测试挡板(Test Doubles) 216
13.4.1 dummy 217
13.4.2 stub 219
13.4.3 spy 219
13.4.4 fake 221
13.4.5 mock 224
13.5 对Spring MVC Controller单元测试 226
13.5.1 MockHttpServletRequest和MockHttpServletResponse 226
13.5.2 ModelAndViewAssert 229
13.6 应用Spring MVC Test进行集成测试 232
13.6.1 API 233
13.6.2 Spring MVC测试类的框架 234
13.6.3 示例 236
13.7 修改集成测试中Web根路径 239
13.8 小结 241
附录A Tomcat 242
A.1 下载和配置Tomcat 242
A.2 启动和终止Tomcat 243
A.3 定义上下文 243
A.4 定义资源 244
A.5 安装TLS证书 245
附录B Spring Tool Suite和Maven 246
B.1 安装STS 246
B.2 创建一个Spring MVC应用 247
B.3 选择Java版本 251
B.4 创建index.html文件 252
B.5 更新项目 253
B.6 运行应用 253
附录C Servlet 256
C.1 Servlet API概览 256
C.2 Servlet 257
C.3 编写基础的Servlet应用程序 258
C.3.1 编写和编译Servlet类 259
C.3.2 应用程序目录结构 260
C.3.3 调用Servlet 261
C.4 ServletRequest 262
C.5 ServletResponse 262
C.6 ServletConfig 263
C.7 ServletContext 266
C.8 GenericServlet 266
C.9 Http Servlets 268
C.9.1 HttpServlet 269
C.9.2 HttpServletResponse 271
C.10 处理HTML表单 271
C.11 使用部署描述符 277
C.12 小结 280
附录D JavaServer Pages 281
D.1 JSP概述 281
D.2 注释 286
D.3 隐式对象 287
D.4 指令 290
D.4.1 page指令 290
D.4.2 include指令 292
D.5 脚本元素 293
D.5.1 表达式 294
D.5.2 声明 294
D.5.3 禁用脚本元素 298
D.6 动作 298
D.6.1 useBean 298
D.6.2 setProperty和getProperty 299
D.6.3 include 300
D.6.4 forward 301
D.7 错误处理 301
D.8 小结 302
附录E 部署描述符 303
E.1 概述 303
E.1.1 核心元素 305
E.1.2 context-param 305
E.1.3 distributable 306
E.1.4 error-page 306
E.1.5 filter 306
E.1.6 filter-mapping 307
E.1.7 listener 308
E.1.8 locale-encoding-mapping-list和locale-encoding-mapping 308
E.1.9 login-config 308
E.1.10 mime-mapping 309
E.1.11 security-constraint 309
E.1.12 security-role 310
E.1.13 Servlet 311
E.1.14 servlet-mapping 313
E.1.15 session-config 313
E.1.16 welcome-file-list 313
E.1.17 JSP-Specific Elements 314
E.1.18 taglib 314
E.1.19 jsp-property-group 315
E.2 部署 316
E.3 Web fragment 317
E.4 小结 319