编辑推荐

适读人群:JavaWeb开发人员及计算机相关专业高年级在校生

1.涵盖多个技术框架

Spring Boot 2+Thymeleaf企业应用实战》期望给读者提供一整套的企业应用开发方案,包括目前流行的SpringBoot、Thymeleaf、SpringData以及多个JavaScript框架,学习完《Spring Boot 2+Thymeleaf企业应用实战》知识后,读者掌握的并不是一两个技术框架,而是一整套当前流行的开发技术。

2.内容深入

Spring Boot 2+Thymeleaf企业应用实战》以SpringBoot与Thymeleaf为核心,以如何使用Thymeleaf为主线,对Thymeleaf这个目前颇为流行的模板框架进行了系统讲解,既展现了它的技术特性,又辅之以原理分析,务求让读者充分掌握这个模板引擎。

3.视频带领入门

看得懂、学得会、做得出是作者一贯的风格,对于初次接触这些知识的读者,《Spring Boot 2+Thymeleaf企业应用实战》提供了配套视频,助力你更快地掌握知识。

内容简介

Java经过多年的发展,市面上的开发框架多不胜数,技术发展日新月异。《SpringBoot2+Thymeleaf企业应用实战》的前面部分,会讲解目前市面上颇为流行的SpringBoot框架,使用该框架我们可以轻松构建出各种项目,在此基础上,介绍SpringMVC的使用,学习完这些知识后,读者可以掌握SpringBoot、SpringMVC的核心内容。《Spring Boot 2+Thymeleaf企业应用实战》的第二部分,会深入讲解Thymeleaf框架,这是一个较为新颖的模板引擎,使用Thymeleaf,我们可以完全抛弃JSP,并进入一种更为简便的页面开发模式。《Spring Boot 2+Thymeleaf企业应用实战》的第11章,会讲解目前市面上常用的几个JavaScript框架,像jQuery、Bootstrap以及Vue.js,学习完这些知识后,读者可以使用这些框架开发大部分的页面功能。《SpringBoot2+Thymeleaf企业应用实战》的第12章,绍如何使用SpringData框架操作各个主流数据库,使用像MySQL、Redis、MongoDB。《SpringBoot2+Thymeleaf企业应用实战》的第13章,介绍使用SpringCloud里面的主要框架,学完本章知识后,读者可以开发基本的微服务项目。《Spring Boot 2+Thymeleaf企业应用实战》的zui后一章,《Spring Boot 2+Thymeleaf企业应用实战》以一个案例为基础结束《Spring Boot 2+Thymeleaf企业应用实战》内容。《SpringBoot2+Thymeleaf企业应用实战》定位为一本JavaWeb开发的入门级书籍,从表现层到持久层,力求为大家提供一整套JavaWeb开发的技术教程。

作者简介

杨恩雄,从事十多年JavaEE企业应用开发,曾任中企动力系统设计师、中企开源项目经理、数码辰星科技公司项目经理,参与过多个企业OA、ERP项目的设计与架构工作,在大数据应用、SOA、互联网产品方面有着丰富的开发经验及架构经验,著有》《疯狂SpringCloud微服务架构实战》《疯狂工作流讲义等书籍。

目录

第1章 概述1
1.1 JavaEE开发技术2
1.1.1 JavaEE的三层架构2
1.1.2 MVC框架2
1.1.3 数据访问层框架3
1.1.4 视图技术3
1.2 JDK的下载与安装3
1.3 安装与配置Maven4
1.3.1 关于Maven4
1.3.2 下载与安装Maven4
1.3.3 配置远程仓库5
1.4 安装Eclipse5
1.4.1 Eclipse版本5
1.4.2 在Eclipse中配置Maven5
1.4.3 获取《Spring Boot 2+Thymeleaf企业应用实战》代码6
1.5 本章小结6

第2章 初试SpringBoot7
2.1 SpringBoot介绍8
2.1.1 SpringBoot简介8
2.1.2 starter模块8
2.2 构建第一个SpringBoot程序9
2.2.1 新建Maven项目9
2.2.2 编写启动类10
2.2.3 编写控制器11
2.2.4 开发环境的热部署12
2.3 运行单元测试12
2.3.1测试Web服务12
2.3.2 模拟Web测试13
2.3.3 测试业务组件13
2.3.4 模拟业务组件14
2.4 发布与调用REST服务15
2.4.1 REST15
2.4.2 发布REST服务15
2.4.3 使用RestTemplate调用服务16
2.4.4 使用Feign调用服务18
2.5 本章小结19

第3章 SpringBoot配置20
3.1 配置文件21
3.1.1 默认配置文件21
3.1.2 指定配置文件22
3.1.3 yml文件22
3.1.4 使用profile指定配置23
3.2 Web配置24
3.2.1 Servlet配置24
3.2.2 Listener配置25
3.2.3 Filter配置26
3.2.4 构建可部署的war包26
3.2.5 JSP配置28
3.3 其他配置30
3.3.1 服务器常用配置30
3.3.2 响应压缩30
3.3.3 SSL配置32
3.3.4 使用其他服务器32
3.3.5 服务器访问日志33
3.3.6 banner配置34
3.4 自定义配置35
3.4.1 @Value注解35
3.4.2 定义属性映射对象36
3.4.3 使用配置37
3.4.4 属性自动识别38
3.5 本章小结39

第4章 SpringBoot的注解40
4.1 Spring的常用注解41
4.1.1 bean定义41
4.1.2 依赖注入42
4.1.3 使用Primary注解44
4.1.4 Scope注解45
4.1.5 方法注入46
4.1.6 AOP注解47
4.1.7 ComponentScan注解49
4.2 高级Spring注解50
4.2.1 限定注解50
4.2.2 自定义限定注解51
4.2.3 自定义bean的生命周期52
4.3 SpringMVC的常用注解54
4.3.1 Controller注解54
4.3.2 RequestMapping注解55
4.3.3 PathVariable注解56
4.3.4 MatrixVariable注解56
4.3.5 RequestParam注解57
4.3.6 文件上传58
4.3.7 RestController注解58
4.4 SpringBoot的条件注解59
4.4.1 类条件注解59
4.4.2 项目依赖问题60
4.4.3 其他条件注解61
4.4.4 自定义条件注解61
4.4.5 SpringBoot的自动配置62
4.5 本章小结63

第5章 初试Thymeleaf64
5.1 Thymeleaf65
5.1.1 什么是Thymeleaf65
5.1.2 支持的模板类型65
5.1.3 HTML模板65
5.1.4 XML模板66
5.2 初试ThymeleafAPI66
5.2.1 处理HTML66
5.2.2 更换模板解析器67
5.2.3 处理资源文件67
5.2.4 变量处理68
5.2.5 遍历集合69
5.2.6 设置前缀与后缀69
5.3 在Servlet应用中整合Thymeleaf70
5.3.1 建立项目70
5.3.2 配置模板引擎71
5.3.3 在Servlet中使用Thymeleaf72
5.3.4 编写模板文件73
5.4 在Struts2中整合Thymeleaf74
5.4.1 建立与配置Struts2项目74
5.4.2 配置StrutsAction75
5.4.3 整合Themeleaf76
5.5 在SpringBoot中整合Thymeleaf77
5.5.1 建立与配置项目77
5.5.2 编写控制器与模板78
5.5.3 静态资源79
5.6 本章小结79

第6章 Thymeleaf对象的使用80
6.1 文本处理81
6.1.1 外部文本输出81
6.1.2 文本国际化82
6.1.3 处理转义文本83
6.1.4 读取变量83
6.1.5 在文本信息中使用变量84
6.1.6 其他读取变量的方式84
6.1.7 链接表达式85
6.2 基本对象86
6.2.1 基本对象概述86
6.2.2 #ctx对象87
6.2.3 Web对象87
6.2.4 内置变量88
6.2.5 使用基本对象的注意事项88
6.3 数字对象89
6.3.1 整数格式化89
6.3.2 小数格式化90
6.3.3 货币格式化91
6.3.4 百分比格式化92
6.3.5 使用sequence方法92
6.4 字符串对象92
6.4.1 toString与length方法93
6.4.2 非空判断与默认值处理93
6.4.3 包含判断94
6.4.4 截取与替换94
6.4.5 追加与拼接95
6.4.6 分割与连接96
6.4.7 大小写转换96
6.4.8 字符串编码与解码97
6.4.9 其他处理98
6.5 日期对象98
6.5.1 格式化日期98
6.5.2 获取日期字段99
6.5.3 创建日期100
6.6 数组与集合对象101
6.6.1 数组101
6.6.2 List与Set101
6.6.3 Map101
6.7 其他内置对象102
6.7.1 messages对象102
6.7.2 uris对象102
6.7.3 aggregates对象103
6.8 本章小结103

第7章 Thymeleaf常用语法104
7.1 表达式语法之运算符105
7.1.1 表达式常量105
7.1.2 字符串拼接106
7.1.3 算术运算符106
7.1.4 关系运算符107
7.1.5 条件运算符108
7.1.6 无操作符108
7.2 表达式语法进阶108
7.2.1 数据转换108
7.2.2 自定义数据转换类109
7.2.3 SpringBoot数据转换110
7.2.4 表达式预处理112
7.2.5 表达式调用工具方法113
7.3 属性设置114
7.3.1 使用th:attr114
7.3.2 设置HTML节点属性114
7.3.3 属性值拼接115
7.3.4 HTML5属性支持115
7.4 条件判断与数据迭代116
7.4.1 条件判断116
7.4.2 switchcase语法117
7.4.3 使用th:each属性117
7.4.4 常见迭代类型118
7.4.5 迭代状态对象118
7.4.6 数据延迟加载120
7.4.7 在SpringBoot中使用延迟加载121
7.4.8 星号表达式121
7.5 本章小结122

第8章 深入Thymeleaf模板123
8.1 模板片断124
8.1.1 定义与引用模板片断124
8.1.2 片断引用语法125
8.1.3 选择器的基础语法126
8.1.4 选择器的其他语法128
8.1.5 insert、replace与include的区别128
8.1.6 含有变量的片断引用129
8.1.7 片断块引用130
8.1.8 无操作符的使用131
8.1.9 删除模板132
8.1.10 基本表达式总结134
8.2 模板与逻辑分离134
8.2.1 逻辑分离例子134
8.2.2 逻辑分离配置136
8.2.3 关联节点的选择137
8.3 模板注释137
8.3.1 解析层注释138
8.3.2 原型注释139
8.4 内联语法139
8.4.1 使用内联语法显示文本139
8.4.2 在JavaScript中使用内联语法140
8.4.3 在CSS中使用内联语法140
8.4.4 内联语法注释141
8.4.5 内联语法序列化142
8.5 模板缓存143
8.5.1 开启与配置缓存143
8.5.2 缓存有效时间145
8.6 本章小结146

第9章 Thymeleaf原理与扩展147
9.1 概念与接口介绍148
9.1.1 方言148
9.1.2 处理器149
9.1.3 模板处理者150
9.1.4 模板解析事件150
9.1.5 节点与标签151
9.2 深入Thymeleaf模板处理151
9.2.1 策略模式151
9.2.2 责任链模式153
9.2.3 合并使用策略模式与责任链模式156
9.2.4 模板处理过程159
9.2.5 模板事件161
9.3 处理器161
9.3.1 预处理器161
9.3.2 后处理器163
9.3.3 一般处理器164
9.3.4 处理器优先级165
9.3.5 标签处理器167
9.3.6 模型处理器168
9.3.7 边界处理器170
9.3.8 其他处理器170
9.4 Thymeleaf扩展171
9.4.1 自定义标签171
9.4.2 自定义模板属性173
9.4.3 自定义内置对象175
9.4.4 自定义执行属性176
9.5 本章小结177

第10章 SpringBoot与Thymeleaf整合178
10.1 在SpringBoot中配置Thymeleaf179
10.1.1 模板引擎配置179
10.1.2 SpringMVC视图解析器181
10.1.3 Thymeleaf视图解析器184
10.1.4 数据转换配置186
10.1.5 模板国际化186
10.2 表单处理188
10.2.1 表单提交188
10.2.2 使用th:field属性189
10.2.3 HTML节点的id生成190
10.2.4 实现label节点192
10.2.5 在模板中处理checkbox与radio193
10.2.6 表单提交处理checkbox与radio195
10.3 表单验证195
10.3.1 表单验证195
10.3.2 修改信息文件197
10.3.3 输出错误信息197
10.4 片断的使用198
10.4.1 引用片断198
10.4.2 使用bean选择片断199
10.4.3 在控制器中引用片断201
10.5 自定义标签201
10.5.1 方言与处理器201
10.5.2 配置方言203
10.6 本章小结204

第11章 使用JavaScript库205
11.1 使用jQuery206
11.1.1 概述206
11.1.2 选择器206
11.1.3 事件207
11.1.4 数据列表208
11.1.5 AJAX调用GET方法209
11.1.6 AJAX调用POST方法210
11.1.7 表单验证211
11.2 Bootstrap213
11.2.1 概述213
11.2.2 数据列表214
11.2.3 分页215
11.2.4 表单218
11.2.5 警告框的使用219
11.3 Vue.js221
11.3.1 概述221
11.3.2 组件222
11.3.3 指令224
11.3.4 循环指令225
11.3.5 表单验证226
11.4 本章小结227

第12章 数据库实战228
12.1 概述229
12.1.1 关于SpringData229
12.1.2 SpringData的功能229
12.1.3 SpringData模块230
12.2 SpringData与JPA230
12.2.1 构建项目230
12.2.2 数据访问层与业务层231
12.2.3 自定义数据存储逻辑233
12.2.4 方法名查询233
12.2.5 使用@Query注解234
12.3 SpringData与MongoDB235
12.3.1 安装MongoDB235
12.3.2 配置权限236
12.3.3 MongoDB的相关概念236
12.3.4 构建项目236
12.3.5 数据访问层与业务层237
12.3.6 自定义数据存储逻辑238
12.3.7 方法名查询239
12.3.8 使用@Query注解240
12.4 SpringData与Redis241
12.4.1 Redis的安装与配置241
12.4.2 Redis的数据类型242
12.4.3 使用Jedis242
12.4.4 构建SpringData项目243
12.4.5 数据访问层与业务层244
12.4.6 自定义数据存储逻辑246
12.4.7 方法名查询247
12.5 本章小结247

第13章 开发微服务248
13.1 微服务与SpringCloud249
13.1.1 微服务简介249
13.1.2 Netflix与SpringCloud249
13.1.3 SpringCloud模块介绍250
13.2 Eureka服务治理250
13.2.1 Eureka架构250
13.2.2 构建服务器251
13.2.3 服务提供者253
13.2.4 服务调用者255
13.2.5 程序结构257
13.3 Ribbon负载均衡257
13.3.1 Ribbon介绍258
13.3.2 第一个Ribbon程序258
13.3.3 在SpringCloud中测试使用Ribbon259
13.4 客户端Feign260
13.4.1 Feign介绍260
13.4.2 第一个Feign程序260
13.4.3 使用Feign调用微服务262
13.5 容错框架Hystrix263
13.5.1 Hystrix介绍263
13.5.2 第一个Hystrix程序265
13.5.3 在SpringCloud中整合Hystrix266
13.6 本章小结268

第14章 实战案例269
14.1 系统功能及界面270
14.1.1 登录与首页270
14.1.2 图书管理模块271
14.1.3 入库模块272
14.1.4 销售模块273
14.1.5 导航组件与分页组件274
14.1.6 运行本章案例275
14.2 数据库设计275
14.2.1 用户表275
14.2.2 图书表与库存表275
14.2.3 入库单数据表276
14.2.4 销售单数据表276
14.3 搭建项目框架277
14.3.1 项目依赖与项目结构277
14.3.2 项目配置278
14.3.3 实体设计279
14.3.4 用户登录281
14.3.5 片断定义282
14.4 图书管理283
14.4.1 数据列表283
14.4.2 通用的分页组件285
14.4.3 图片上传286
14.4.4 新建图书288
14.4.5 查看与修改图书289
14.4.6 删除图书290
14.5 销售单模块291
14.5.1 列表与分页功能291
14.5.2 选择图书293
14.5.3 删除已选图书与修改数量295
14.5.4 新建销售单297
14.5.5 操作库存299
14.6 首页数据查询与排序300
14.6.1 库存查询300
14.6.2 图书查询与轮播301
14.6.3 数据排序303
14.7 本章小结304

前言/序言

  Java经过多年的发展,市面上出现的开发框架多不胜数,技术发展日新月异。程序员群体是一个求知若渴的群体,也是一个容易接受新知识的群体,为了学习新技术,多少人食不知味、夜不能寐。笔者有幸成为一名平凡的程序员,从业十余年,面对各种新技术,时常怀着一颗谦卑的心,不停前进,不断学习。
  笔者从2006年开始进行JavaWeb开发,使用过大部分主流的Java技术,例如EJB、Servlet、MVC框架等,在此过程中开发过多个大型项目,经历了这些项目从无到有的过程,深知系统开发之不易。一直以来,期望能使用最简单的方式开发出最完美的系统。近年来随着SpringBoot的兴起,Java的Web开发趋向简单,笔者希望能将SpringBoot等技术进行推广,从而降低JavaWeb开发的门槛,因此编纂《Spring Boot 2+Thymeleaf企业应用实战》。笔者学识浅薄,加之仓促付梓,书中错漏定然难免,望读者指正。
  《Spring Boot 2+Thymeleaf企业应用实战》能得以出版,得益于多方襄助,对他们的感激之情,难以言表。感谢传道并解惑的恩师,感谢聪颖而好学的读者,感谢善良和亲爱的家人,笔者会谢意永存、铭感不忘。
  《Spring Boot 2+Thymeleaf企业应用实战》特点
  笔者长期工作于企业的IT部门,有着丰富的企业应用开发经验,因此《Spring Boot 2+Thymeleaf企业应用实战》有以下特点。
  1.涵盖多个技术框架
  笔者期望《Spring Boot 2+Thymeleaf企业应用实战》能给读者提供一整套的企业应用开发方案,因此《Spring Boot 2+Thymeleaf企业应用实战》介绍了目前最为流行的SpringBoot、Thymeleaf、SpringData以及多个JavaScript框架。学习完《Spring Boot 2+Thymeleaf企业应用实战》知识后,读者掌握的并不是一两个技术框架,而是一整套当前非常流行的开发技术。
  2.内容深入
  《Spring Boot 2+Thymeleaf企业应用实战》以SpringBoot与Thymeleaf为核心,其中Thymeleaf是目前非常流行的模板框架,《Spring Boot 2+Thymeleaf企业应用实战》对该框架进行了系统讲解,内容由浅入深,务求使读者充分掌握这个模板框架。
  3.案例贴近实际,视频带领入门
  笔者长期供职于IT企业,奋斗于研发一线,因此《Spring Boot 2+Thymeleaf企业应用实战》的各个知识点对应的案例更加贴近实际。看得懂、学得会、做得出是笔者一贯的风格,对于初次接触这些知识的读者,《Spring Boot 2+Thymeleaf企业应用实战》提供了配套的视频,助力你更快地掌握知识。
  4.注释详细
  简单易懂是笔者一直以来坚持的目标,《Spring Boot 2+Thymeleaf企业应用实战》中的几乎每行Java代码均有注释,读者可以很容易地了解代码的意思,轻松掌握知识。
  《Spring Boot 2+Thymeleaf企业应用实战》写给谁看
  笔者一直以来希望能将复杂的技术简单化,因此将《Spring Boot 2+Thymeleaf企业应用实战》定位成一本入门级的JavaWeb开发书籍,只要你有一定的Java语言基础,就可以在《Spring Boot 2+Thymeleaf企业应用实战》的基础上,学习使用SpringBoot+Thymeleaf进行JavaWeb应用开发。
  衷心感谢
  首先非常感谢李刚老师,一直以来,他既是我的老师,也是我的技术后盾,非常幸运人生能有这样一位良师益友。
  最后感谢我的家人,你们是我前进的动力。
  下载《Spring Boot 2+Thymeleaf企业应用实战》代码与联系作者
  《Spring Boot 2+Thymeleaf企业应用实战》的所有代码、软件,均可以到以下网盘获取:http://pan.baidu.com/s/1sl5FWK1。读者也可以扫描以下的二维码,关注“疯狂图书”公众号获取《Spring Boot 2+Thymeleaf企业应用实战》资料。公众号内除了提供《Spring Boot 2+Thymeleaf企业应用实战》代码外,还提供了相关视频供读者下载。

其他推荐