|
新书《精通Spring:Java Web开发技术详解》出版!!!
2021/11/20
------------------------------------------------------------------------
全力以赴,专注创作大半年,这本Spring一书的初稿终于完成了。Spring家族中的多数成员都在本书中亮相,并大显身手。如Spring MVC框架、WebFlux框架,RESTFul风格、Spring Data API、Spring WebSocket、Spring和CXF整合、Spring Cloud...... 这些成员都以Web开发为核心,循序渐进地串联起来,帮助读者理清纷繁复杂的Spring大家族的各个成员的功能和关系,能够熟练地运用它们。
尽管在创作的大半年内没有报酬,但还是从创作中收获到了乐趣。在写作中,需要亲自设计、创建和调试范例程序,也需要学习部分自己尚不是特别明白的技术,从了解到深入到看透,再深入浅出地把它们讲解清楚。一路都充满了挑战,有时花一两天的时间,才能把范例调试成功。好在已经有了十多年的专研最新技术的经验和直觉,所以,不管是什么样的技术难题,最后总是能够搞定。
希望本书问世后,能够为广大Spring开发人员助一臂之力。
孙卫琴
2020/10/2
本书目录
第1章 Spring、Spring MVC 9
与Java Web应用简介 9
1.1 Java Web应用概述 10
1.1.1 Servlet组件 11
1.1.2 JSP组件 13
1.1.3 共享数据在Web应用中的范围 14
1.1.4 JavaBean组件及其在Web应用中的存放范围 16
1.1.5 自定义的JSP标签 17
1.1.6 XML语言 18
1.1.7 Web服务器 18
1.2 Web组件的三种关联关系 19
1.2.1 请求转发 19
1.2.2 请求重定向 21
1.2.3 包含 21
1.3 MVC概述 22
1.3.1 MVC设计模式 22
1.3.2 JSP Model1和JSP Model2 24
1.4 Spring MVC概述 25
1.4.1 Spring MVC的框架结构 26
1.4.2 Spring MVC的工作流程 28
1.5 Spring框架和它的分支框架 28
1.6 小结 28
1.7 思考题 29
第2章 第一个入门范例:helloapp应用 30
2.1 分析helloapp应用的需求 30
2.2 运用Spring MVC框架 30
2.3 创建视图组件 31
2.3.1 创建JSP文件 31
2.3.2 创建消息资源文件 34
2.4 创建控制器组件 34
2.4.1 Controller控制器类的URL入口和请求转发 35
2.4.2 访问模型组件 36
2.4.3 和视图组件共享数据 36
2.4.4 Web组件存取共享数据的原生态方式 38
2.5 创建模型组件 39
2.6 创建配置文件 41
2.6.1 创建Web应用的配置文件 41
2.6.2 创建Spring MVC框架的配置文件 42
2.6.3 访问静态资源文件 43
2.7 发布和运行helloapp应用 44
2.7.1 初次访问hello.jsp的流程 45
2.7.2 数据验证的流程 46
2.8 依赖注入和控制反转 47
2.9 向Spring框架注册Bean组件的三种方式 49
2.10 小结 49
2.11 思考题 50
第3章 控制器层的常用类和注解 52
3.1 用@Controller注解标识控制器类 52
3.2 控制器对象的存在范围 52
3.3 设置控制器类的请求处理方法的URL入口 53
3.3.1 设置URL入口的普通方式 53
3.3.2 限制URL入口的请求参数、请求方式和请求头 54
3.3.3 @GetMapping和@PostMapping等简化形式的注解 55
3.4 绑定HTTP请求数据和控制器类的方法参数 56
3.4.1 直接定义和请求参数同名的方法参数 57
3.4.2 用@RequestParam注解绑定请求参数 57
3.4.3 用@RequestHeader注解绑定HTTP请求头 58
3.4.4 用@CookieValue注解绑定Cookie 59
3.4.5 用@PathVariable注解绑定RESTFul风格的URL变量 59
3.4.6 把一组请求参数和一个JavaBean类型的方法参数绑定 60
3.5 请求参数的类型转换 61
3.5.1 创建包含表单的hello.jsp 62
3.5.2 创建包含Person信息的Person类 62
3.5.3 创建类型转换器PersonConverter类 63
3.5.4 在Spring MVC配置文件中注册类型转换器 63
3.5.5 创建处理请求参数的控制器类PersonController 64
3.6 请求参数的格式转换 64
3.7 控制器类的方法的参数类型 67
3.8 控制器类的方法的返回类型 67
3.8.1 String返回类型 68
3.8.2 void返回类型 68
3.9 控制器与视图的数据共享 68
3.9.1 @ModelAttribute注解 69
3.9.2 Model接口 71
3.9.3 ModelMap类 72
3.9.4 ModelAndView类 72
3.9.5 把Model中的数据存放在session范围内 73
3.9.6 通过@SessionAttribute注解读取session范围内的Model数据 75
3.10 @ControllerAdvice注解的用法 76
3.11 小结 77
3.12 思考题 78
第4章 视图层创建HTML表单 80
4.1 Spring标签库中的表单标签 80
4.1.1 表单标签<form:form> 80
4.1.2 文本框标签<form:input> 81
4.1.3 密码框标签<form:password> 81
4.1.4 隐藏框标签<form:hidden> 82
4.1.5 文本域标签<form:textarea> 82
4.1.6 复选框标签<form:checkbox> 82
4.1.7 组合复选框标签<form:checkboxes> 82
4.1.8 单选按钮标签<form:radiobutton> 标签 84
4.1.9 组合单选按钮标签<form:radiobuttons> 85
4.1.10 下拉列表标签<form:select> 85
4.1.11 输出错误消息的标签<form:errors> 86
4.2 处理复杂表单的Web应用范例 87
4.2.1 在JSP文件中生成复杂表单 87
4.2.2 控制器类与视图共享表单数据 89
4.3 设置HTTP请求和响应结果的字符编码 91
4.4 小结 91
4.5 思考题 92
第5章 数据验证 94
5.1 按照JSR-303规范进行数据验证 94
5.1.1 数据验证注解 94
5.1.2 自定义数据验证注解 97
5.1.3 在Spring MVC的配置文件中配置Hibernate Validator验证器 98
5.1.4 在控制器类中进行数据验证 99
5.1.5 在JSP文件中指定显示错误消息的CSS样式 100
5.2 Spring框架的数据验证机制 100
5.2.1 实现Spring的Validator接口 101
5.2.2 用数据验证类进行数据验证 102
5.3 小结 103
5.4 思考题 104
第6章 拦截器 105
6.1 拦截器的基本用法 105
6.1.1 创建自定义的拦截器 106
6.1.2 配置拦截器 106
6.1.3 拦截器的执行流程 107
6.2 串联的拦截器 108
6.3 范例:用拦截器实现用户身份验证 110
6.4 小结 113
6.5 思考题 114
第7章 异常处理 115
7.1 Spring MVC的异常处理机制 116
7.1.1 处理视图层的异常 117
7.1.2 处理HTTP状态代码为404的错误 119
7.1.3 处理模型层的异常 119
7.1.4 处理控制器层的异常 120
7.2 使用SimpleMappingExceptionResolver类 121
7.3 实现HandlerExceptionResolver接口 123
7.4 使用@ExceptionHandler注解 124
7.4.1 在控制器类中用@ExceptionHandler注解标识多个方法 125
7.4.2 在控制器增强类中使用@ExceptionHandler注解 125
7.5 小结 126
7.6 思考题 126
第8章 Web应用的国际化 128
8.1 Locale类的用法 129
8.2 Spring MVC框架的处理国际化的接口和类 130
8.3 使用SessionLocaleResolver 131
8.3.1 在JSP文件的URL中包含表示Locale的请求参数 132
8.3.2 创建和配置消息资源文件 133
8.3.3 在控制器类中读取消息文本 135
8.3.4 读取带参数的消息文本 136
8.3.5 在控制器类中测试Locale信息 136
8.4 使用CookieLocaleResolver 138
8.5 使用AcceptHeaderLocaleResolver 140
8.6 小结 141
8.7 思考题 142
第9章 Spring MVC的各种实用操作 143
9.1 文件上传 143
9.2 文件下载 145
9.3 利用Ajax和JSON实现前后端分离 146
9.3.1 JSON数据格式 148
9.3.2 用@RequestBody和@ResponseBody注解转换JSON格式的请求和响应 149
9.3.3 用JavaScript和Ajax开发前端网页 150
9.4 利用Token机制解决重复提交 153
9.4.1 用自定义的拦截器来管理Token 154
9.4.2 定义并在控制器类中使用@Token注解 157
9.4.3 在HTML表单中定义token隐藏字段 157
9.5 服务器端推送 158
9.5.1 在多个TCP连接中推送数据 159
9.5.2 在一个长TCP连接中推送数据 163
9.6 小结 164
9.7 思考题 164
第10章 异步处理客户请求 166
10.1 异步处理客户请求的基本原理 166
10.2 在web.xml文件中启用异步处理功能 169
10.3 配置异步处理线程池 170
10.4 请求处理方法返回类型为Callable 170
10.5 请求处理方法返回类型为WebAsyncTask 173
10.6 请求处理方法返回类型为DeferredResult 175
10.7 处理异步操作中产生的异常 178
10.8 小结 179
10.9 思考题 179
第11章 AOP面向切面编程 180
和输出日志 180
11.1 SLF4J和Log4J的整合 180
11.2 通过SLF4J API输出日志 183
11.3 AOP的基本概念和原理 184
11.4 用AOP和SLF4J输出日志的范例 186
11.5 通过配置方式配置切面类 190
11.6 小结 191
11.7 思考题 192
第12章 创建模型层组件 193
12.1 安装MySQL数据库和创建SAMPLEDB数据库 193
12.2 通过Spring JDBC API访问数据库 197
12.3 在Spring配置文件中配置数据源和事务管理器 198
12.4 创建DAO层组件 200
12.4.1 向数据库新增Customer对象 201
12.4.2 获得新增Customer对象的ID 202
12.4.3 向数据库更新Customer对象 203
12.4.4 向数据库批量更新Customer对象 203
12.4.5 向数据库删除Customer对象 203
12.4.6 向数据库查询一个Customer对象 204
12.4.7 向数据库查询多个Customer对象 204
12.5 创建业务逻辑服务层组件 204
12.6 @Repository注解和@Service注解 206
12.7 用@Transactional注解声明事务 206
12.7.1 事务传播行为 208
12.7.2 事务隔离级别 208
12.7.3 事务超时 209
12.7.4 事务的只读属性 209
12.7.5 事务撤销规则 209
12.8 控制器层访问模型层组件 209
12.9 小结 211
12.10 思考题 212
第13章 通过Spring Data API 214
访问数据库 214
13.1 ORM的基本原理 216
13.1.1 描述对象-关系映射信息的元数据 216
13.1.2 访问ORM软件的API 217
13.2 Spring Data API的主要接口 218
13.3 创建通过Spring Data API访问数据库的范例 219
13.3.1 创建CustomerDao接口 219
13.3.2 创建CustomerService接口和实现类 219
13.3.3 创建Spring配置文件 220
13.4 Repository接口的用法 222
13.4.1 在查询方法名中设定查询条件 222
13.4.2 用@Query注解设定查询语句 223
13.4.3 通过@Query和@Modifying注解进行新增、更新和删除操作 224
13.5 CrudRepository 接口的用法 225
13.6 PagingAndSortingRepository 接口的用法 226
13.6.1 对查询结果分页 226
13.6.2 对查询结果排序 227
13.7 JpaRepository 接口的用法 228
13.8 JpaSpecificationExecutor 接口的用法 230
13.9 通过JPA API实现自定义Repository接口 231
13.10 用Maven下载所依赖的类库 232
13.11 小结 235
13.12 思考题 236
第14章 创建综合购物网站应用 237
14.1 实现业务数据 237
14.2 实现业务逻辑服务层 241
14.3 实现DAO层 244
14.4 实现控制器层 245
14.4.1 客户身份验证 246
14.4.2 管理购物车 248
14.4.3 管理订单 252
14.5 配置、发布和运行netstore应用 256
14.5.1 安装SAMPLEDB数据库 256
14.5.2 发布netstore应用 257
14.5.3 运行netstore应用 257
14.6 小结 260
14.7 思考题 261
第15章 创建RESTFul风格的 263
Web应用 263
15.1 RESTFul风格的HTTP请求 263
15.2 控制器类处理RESTFul风格的HTTP请求 264
15.2.1 读取客户请求中的RESTFul风格的URL变量 266
15.2.2 读取客户请求中的JSON格式的Java对象的数据 267
15.2.3 请求处理方法的返回类型 267
15.3 客户端发送RESTFul风格的HTTP请求 268
15.4 通过RestTemplate类模拟客户程序 271
15.5 小结 273
15.6 思考题 274
第16章 WebFlux响应式编程 275
16.1 Spring WebFlux框架概述 277
16.2 WebFlux框架访问MySQL数据库 279
16.3 WebFlux框架的注解开发模式 280
16.3.1 用R2DBC映射注解来映射Customer实体类 281
16.3.2 创建CustomerDao接口 282
16.3.3 创建CustomerService业务逻辑服务接口以及实现类 282
16.3.4 创建CustomerController控制器类 283
16.3.5 上传和下载文件 286
16.4 WebFlux框架的函数式开发模式 288
16.5 用Intellij IDEA开发工具开发WebFlux应用 290
16.5.1 搭建helloapp应用的基本框架 291
16.5.2 创建Java类以及Spring属性配置文件 294
16.5.3 创建Maven配置文件pom.xml 294
16.5.4 由Spring Boot创建的HelloappApplication启动类 295
16.5.5 运行helloapp应用 295
16.5.6 整合JUnit编写测试程序 296
16.6 小结 297
16.7 思考题 298
第17章 基于WebSocket的双向通信 299
17.1 WebSocket的基本原理 299
17.2 Spring WebSocket API简介 300
17.3 用WebSocket创建聊天应用 301
17.3.1 创建WebSocket握手拦截器类 301
17.3.2 创建WebSocket通信处理器类 302
17.3.3 配置WebSocket握手拦截器类和通信处理器类 304
17.3.4 创建负责登录聊天室的控制器类 305
17.3.5 创建负责客户端登录以及WebSocket通信的JSP文件 306
17.3.6 运行范例程序 308
17.4 小结 310
17.5 思考题 311
第18章 用Spring整合CXF 312
开发Web服务 312
18.1 Web服务运作的基本原理 312
18.2 CXF框架和JWS API 315
18.3 创建提供Web服务的Web应用 316
18.3.1 创建Web服务接口和实现类 316
18.3.2 在Spring配置文件中配置Web服务 317
18.3.3 在web.xml配置文件中配置CXF 317
18.3.4 在Tomcat中发布Web服务 318
18.4 创建访问Web服务的Web应用 319
18.5 小结 321
18.6 思考题 321
第19章 用Spring Cloud开发微服务 323
19.1 微服务架构的基本原理 323
19.2 Spring Cloud框架概述 325
19.3 创建采用Spring Cloud框架的cloudapp应用 326
19.4 创建微服务注册中心eurekamodule模块 328
19.4.1 创建EurekamoduleApplication启动类 330
19.4.2 配置eurekamodule模块 330
19.4.3 通过浏览器访问Eureka服务器 331
19.5 创建提供微服务的servicemodule模块 332
19.5.1 创建ServicemoduleApplication启动类 334
19.5.2 创建微服务入口ServiceController控制器类 334
19.5.3 配置servicemodule模块 335
19.5.4 运行servicemodule模块 335
19.6 创建访问微服务的clientmodule模块 337
19.6.1 创建ClientmoduleApplication启动类 338
19.6.2 创建访问微服务的ClientController控制器类 338
19.6.3 通过Feign来访问微服务 340
19.6.4 配置clientmodule模块 341
19.6.5 运行clientmodule模块 341
19.7 小结 343
19.8 思考题 344
附录A 部分软件的安装和使用 346
A.1 本书所用软件的下载地址 346
A.2 部分软件的安装 346
A.2.1 安装JDK 346
A.2.2 安装ANT 347
A.2.3 安装Tomcat 348
A.3 编译源程序 348
A.4 处理编译和运行错误 349
程序猿的技术大观园:www.javathinker.net
[这个贴子最后由 admin 在 2021-11-26 14:08:43 重新编辑]
|
|