书籍详情
Spring Boot+MVC实战指南
作者:高洪岩 著
出版社:人民邮电出版社
出版时间:2022-01-01
ISBN:9787115580610
定价:¥99.90
购买这本书可以去
内容简介
《Spring Boot+MVC实战指南》主要讲解如何在Spring Boot框架中开发MVC应用,包括主流的JavaEE框架,如MyBatis、Spring、SpringMVC、FreeMarker和Thymeleaf等。读者可以进行“精要”式学习,正确地进行项目实战,同时汲取JavaEE的思想,并最终将这种思想灵活运用到实际工作中。《Spring Boot+MVC实战指南》主要涉及MVC框架的原理实现、上传、下载、数据验证、国际化、多模块分组开发、转发/重定向、JSON的解析、将Ajax及JSON和MVC框架进行整合开发,以及MyBatis中映射文件的使用。本书还介绍了Spring中的核心技术(依赖注入与AOP),掌握这两项技术是学习Spring的重中之重。《Spring Boot+MVC实战指南》语言简洁,示例丰富,以掌握实用技术为目的,帮助读者迅速掌握使用主流开源JavaEE框架进行开发所需的各种技能。本书适合已具有一定Java编程基础(具有Servlet编程经验)的读者阅读,也可供Java平台下进行各类软件开发的开发人员、测试人员参考。
作者简介
高洪岩,世界500强企业高级项目经理,具有10余年项目管理与开发经验,在多线程和并发、Android移动开发、智能报表和分布式处理等企业级架构技术领域深耕多年,深谙Java技术开发要点与难点,拥有良好的技术素养和丰富的实践经验,一直在持续关注架构的优化和重构领域,喜欢用技术与理论相结合的方式分享知识,以共同提高。著有《Java多线程编程核心技术》《Java并发编程:核心方法与框架》《Java EE核心框架实战》《NIO与Socket编程技术指南》《虚拟化高性能NoSQL存储案例精粹:Redis+Docker》《Java Web实操》等书籍。
目录
第 1章 Spring 5核心技术之IoC\t1
1.1 什么是框架 1
1.2 反射与XML操作 1
1.2.1 基础知识准备——反射 1
1.2.2 基础知识准备——操作XML文件 13
1.3 Spring框架介绍 20
1.4 Spring框架的模块组成 20
1.5 控制反转和依赖注入介绍 21
1.6 IoC容器介绍 22
1.7 AOP介绍 22
1.8 初步体会IoC的优势 23
1.8.1 传统方式 23
1.8.2 Spring方式 24
1.8.3 依赖注入的原理是反射 28
1.9 在Spring中创建JavaBean 28
1.9.1 使用创建对象 29
1.9.2 使用创建并获取对象 30
1.9.3 使用“全注解”法创建对象 30
1.9.4 使用“全注解”法获取对象时出现NoUniqueBeanDefinitionException异常的解决办法 32
1.9.5 使用@ComponentScan(basePackages=)创建并获取对象 33
1.9.6 使用@ComponentScan(basePackages=)扫描多个包 34
1.9.7 使用@ComponentScan的basePackageClasses属性进行扫描 36
1.9.8 使用@ComponentScan而不使用basePackages属性时的效果 37
1.9.9 解决不同包中有相同类名时出现异常的问题 38
1.9.10 推荐使用的代码结构 40
1.9.11 使用@Lazy注解实现延迟加载 40
1.9.12 出现Overriding bean definition情况时的解决方法 42
1.9.13 在IoC容器中创建单例对象和多例对象 43
1.10 装配Spring Bean 45
1.10.1 使用注解法注入对象 45
1.10.2 多实现类的歧义性 46
1.10.3 使用@Autowired注解向构造方法的参数进行注入 49
1.10.4 使用@Autowired注解向方法的参数进行注入 50
1.10.5 使用@Autowired注解向字段进行注入 50
1.10.6 使用@Inject注解向字段、方法和构造方法进行注入 51
1.10.7 使用@Bean注解向工厂方法的参数进行注入 53
1.10.8 使用@Autowired(required = false)的写法 54
1.10.9 使用@Bean对JavaBean的id重命名 56
1.10.10 Spring上下文的相关知识 58
1.10.11 BeanFactory与ApplicationContext 65
1.10.12 使用注解@Value进行注入 65
1.10.13 解决BeanCurrentlyInCreationException异常问题 67
第 2章 Spring 5核心技术之AOP 71
2.1 AOP 71
2.2 AOP原理之代理设计模式 71
2.2.1 静态代理的实现 72
2.2.2 使用JDK实现动态代理 74
2.2.3 使用Spring实现动态代理 76
2.2.4 使用cglib实现动态代理 79
2.2.5 使用javassist实现动态代理 80
2.3 AOP相关的概念 81
2.3.1 横切关注点 82
2.3.2 切面 82
2.3.3 连接点 84
2.3.4 切点 84
2.3.5 通知 85
2.3.6 织入 85
2.4 AOP核心案例 86
2.4.1 实现前置通知、后置通知、返回通知和异常通知 86
2.4.2 向前置通知、后置通知、返回通知和异常通知传入JoinPoint参数 91
2.4.3 实现环绕通知 92
2.4.4 使用bean表达式 92
2.4.5 使用@Pointcut定义全局切点 94
2.4.6 向切面传入参数 96
2.4.7 使用@AfterReturning和@AfterThrowing向切面传入参数 98
2.4.8 向环绕通知传入参数 100
2.4.9 实现多切面的应用 102
2.4.10 使用@Order注解制定切面的运行顺序 105
第3章 Spring 5 MVC实战技术 106
3.1 简介 106
3.2 在Spring Boot框架中搭建Spring MVC开发环境 106
3.2.1 搭建Spring MVC开发环境 107
3.2.2 搭建CSS+JavaScript+HTML+JSP开发环境 114
3.3 核心技术 118
3.3.1 执行控制层——无传递参数 118
3.3.2 执行控制层——有传递参数 119
3.3.3 执行控制层——有传递参数简化版 120
3.3.4 实现登录功能 120
3.3.5 将URL参数封装到实体类 122
3.3.6 限制提交方式 123
3.3.7 控制层方法的参数类型 124
3.3.8 控制层方法的返回值类型 125
3.3.9 取得request-response-session对象 126
3.3.10 实现登录失败后的提示信息 126
3.3.11 向Controller控制层注入Service业务逻辑层 128
3.3.12 重定向——无传递参数 129
3.3.13 重定向——有传递参数 130
3.3.14 重定向传递参数——Redirect-Attributes.addAttribute()方法 131
3.3.15 重定向传递参数——Redirect-Attributes.addFlashAttribute()方法 132
3.3.16 使用jackson库在服务端将JSON字符串转换成各种Java数据类型 133
3.3.17 在控制层返回JSON对象 137
3.3.18 在控制层返回JSON字符串 139
3.3.19 使用HttpServletResponse对象输出响应字符 140
3.3.20 解决日期问题 142
3.3.21 单文件上传1——使用MultipartHttpServletRequest 146
3.3.22 单文件上传2——使用MultipartFile 147
3.3.23 单文件上传3——使用MultipartFile并结合实体类 148
3.3.24 多文件上传1——使用MultipartHttpServletRequest 149
3.3.25 多文件上传2——使用MultipartFile[] 151
3.3.26 多文件上传3——使用MultipartFile[]并结合实体类 152
3.3.27 使用AJAX实现文件上传 154
3.3.28 支持中文文件名的文件下载 156
3.3.29 使用@RestController注解 157
3.4 扩展技术 158
3.4.1 使用prefix和suffix简化返回的视图名称 158
3.4.2 控制层返回List对象及实体 159
3.4.3 实现国际化 163
3.4.4 处理异常 172
3.4.5 方法的参数是Model数据类型 177
3.4.6 方法的参数是ModelMap数据类型 178
3.4.7 方法的返回值是ModelMap数据类型 179
3.4.8 方法的返回值是ModelAndView数据类型 180
3.4.9 方法的返回值是ModelAndView数据类型(实现重定向) 182
3.4.10 使用@RequestAttribute和@SessionAttribute注解 182
3.4.11 使用@CookieValue和@RequestHeader注解 183
3.4.12 使用@SessionAttributes注解 184
3.4.13 使用@ModelAttribute注解实现作用域别名 186
3.4.14 在路径中添加通配符的功能 187
3.4.15 控制层返回void数据的情况 188
3.4.16 解决多人开发路径可能重复的问题 189
3.4.17 使用@PathVariable注解 191
3.4.18 通过URL参数访问指定的业务方法 192
3.4.19 使用@GetMapping、@PostMapping、@PutMapping和@Delete Mapping注解 193
3.4.20 使用拦截器 197
3.4.21 Spring 5 MVC应用AOP切面 203
第4章 MyBatis 3核心技术之必备技能 205
4.1 ORM简介 205
4.2 MyBatis的优势 206
4.3 使用JDBC+反射技术实现泛型DAO 207
4.4 三大核心对象的介绍 213
4.5 三大核心对象的生命周期 213
4.6 使用MyBatis Generator插件:单模块 214
4.6.1 操作Oracle数据库 215
4.6.2 操作MySQL数据库 222
4.7 使用MyBatis Generator插件:多模块 227
4.7.1 操作Oracle数据库 227
4.7.2 操作MySQL数据库 232
4.8 自建环境使用Mapper接口操作Oracle-MySQL数据库 236
4.8.1 接口-SQL映射的对应关系 236
4.8.2 针对Oracle的CURD 237
4.8.3 针对MySQL的CURD 244
4.9 向Mapper接口传入参数类型 250
4.10 从SQL映射取得返回值类型 253
第5章 MyBatis 3核心技术之实战技能 255
5.1 实现输出日志 255
5.2 SQL语句中特殊符号的处理 255
5.3 使用别名 256
5.3.1 系统预定义别名 256
5.3.2 使用type-aliases-package配置设置别名 257
5.3.3 别名重复的解决办法 258
5.4 对yml文件中的数据库密码进行加密 260
5.5 不同数据库对执行不同SQL语句的支持 262
5.5.1 使用实现执行不同的SQL语句 262
5.5.2 如果SQL映射的id值相同,有无databaseId的优先级 263
5.6 动态SQL 264
5.6.1 使用标签实现映射 264
5.6.2 标签与实体类有参构造方法 265
5.6.3 使用${}拼接SQL语句 266
5.6.4 标签的使用 266
5.6.5 标签的使用 268
5.6.6 标签的使用 269
5.6.7 针对Oracle/MySQL实现like模糊查询 270
5.6.8 标签的使用 271
5.6.9 标签的使用 272
5.6.10 标签的使用 273
5.6.11 使用执行批量插入 274
5.6.12 使用标签对like语句进行适配 276
5.6.13 使用标签规范SQL语句 278
5.7 读写大文本类型的数据 281
5.7.1 操作Oracle数据库 281
5.7.2 操作MySQL数据库 283
5.8 实现数据分页 283
5.9 实现一对一级联 284
5.9.1 数据表结构和内容以及关系 285
5.9.2 创建实体类 285
5.9.3 创建SQL映射文件 287
5.9.4 级联解析 288
5.9.5 根据ID查询记录 288
5.9.6 查询所有记录 289
5.9.7 对SQL语句的执行次数进行优化 289
5.10 实现一对多级联 291
5.10.1 数据表结构和内容以及关系 291
5.10.2 创建实体类 291
5.10.3 创建SQL映射文件 293
5.10.4 级联解析 294
5.10.5 根据ID查询记录 294
5.10.6 查询所有记录 294
5.10.7 对SQL语句的执行次数进行优化 295
5.11 延迟加载 297
5.11.1 默认采用立即加载策略 297
5.11.2 使用全局延迟加载策略与两种加载方式 298
5.11.3 使用fetchType属性设置局部加载策略 304
5.12 缓存的使用 305
5.12.1 一级缓存 305
5.12.2 二级缓存 307
5.12.3 验证update语句具有清除二级缓存的特性 308
5.13 Spring事务传播特性 310
5.13.1 事务传播特性REQUIRED 310
5.13.2 事务传播特性SUPPORTS 311
5.13.3 事务传播特性MANDATORY 311
5.13.4 事务传播特性REQUIRES_NEW 312
5.13.5 事务传播特性NOT_SUPPORTED 314
5.13.6 事务传播特性NEVER 315
5.13.7 事务传播特性NESTED 317
5.13.8 事务传播特性总结 318
第6章 模板引擎FreeMarker和Thymeleaf的使用 320
6.1 使用FreeMarker模板引擎 321
6.1.1 FreeMarker的优势 321
6.1.2 FreeMarker的输出 321
6.1.3 整合Spring Boot与输出常见数据类型 322
6.1.4 输出布尔值 327
6.1.5 输出Date数据类型 328
6.1.6 循环集合中的数据 329
6.1.7 使用if命令实现判断 333
6.1.8 判断List的size值是否为0 334
6.1.9 处理null值 335
6.1.10 实现隔行变色 338
6.1.11 对象嵌套有null值的处理 340
6.1.12 比较运算符 341
6.1.13 遗拾增补 342
6.1.14 填充select中的option 342
6.1.15 实现自动选中select中的option 343
6.1.16 实现页面静态化 344
6.1.17 将ftlh文件中的内容输出到内存中 345
6.2 使用Thymeleaf模板引擎 346
6.2.1 整合Spring Boot与常见的使用方式 346
6.2.2 处理复杂数据类型 351
6.2.3 处理嵌套数据类型 353
6.2.4 访问Array 354
6.2.5 访问List 355
6.2.6 访问Map 356
6.2.7 访问request-session-application作用域 358
6.2.8 访问URL参数值 358
6.2.9 循环Array 359
6.2.10 循环List 359
6.2.11 循环Set 360
6.2.12 循环Map 361
6.2.13 生成Table 361
6.2.14 循环生成 362
6.2.15 获得状态变量 363
6.2.16 获得状态变量的简化版 364
6.2.17 实现国际化 365
6.2.18 处理URL 366
6.2.19 处理布尔值 367
6.2.20 操作属性 367
1.1 什么是框架 1
1.2 反射与XML操作 1
1.2.1 基础知识准备——反射 1
1.2.2 基础知识准备——操作XML文件 13
1.3 Spring框架介绍 20
1.4 Spring框架的模块组成 20
1.5 控制反转和依赖注入介绍 21
1.6 IoC容器介绍 22
1.7 AOP介绍 22
1.8 初步体会IoC的优势 23
1.8.1 传统方式 23
1.8.2 Spring方式 24
1.8.3 依赖注入的原理是反射 28
1.9 在Spring中创建JavaBean 28
1.9.1 使用创建对象 29
1.9.2 使用创建并获取对象 30
1.9.3 使用“全注解”法创建对象 30
1.9.4 使用“全注解”法获取对象时出现NoUniqueBeanDefinitionException异常的解决办法 32
1.9.5 使用@ComponentScan(basePackages=)创建并获取对象 33
1.9.6 使用@ComponentScan(basePackages=)扫描多个包 34
1.9.7 使用@ComponentScan的basePackageClasses属性进行扫描 36
1.9.8 使用@ComponentScan而不使用basePackages属性时的效果 37
1.9.9 解决不同包中有相同类名时出现异常的问题 38
1.9.10 推荐使用的代码结构 40
1.9.11 使用@Lazy注解实现延迟加载 40
1.9.12 出现Overriding bean definition情况时的解决方法 42
1.9.13 在IoC容器中创建单例对象和多例对象 43
1.10 装配Spring Bean 45
1.10.1 使用注解法注入对象 45
1.10.2 多实现类的歧义性 46
1.10.3 使用@Autowired注解向构造方法的参数进行注入 49
1.10.4 使用@Autowired注解向方法的参数进行注入 50
1.10.5 使用@Autowired注解向字段进行注入 50
1.10.6 使用@Inject注解向字段、方法和构造方法进行注入 51
1.10.7 使用@Bean注解向工厂方法的参数进行注入 53
1.10.8 使用@Autowired(required = false)的写法 54
1.10.9 使用@Bean对JavaBean的id重命名 56
1.10.10 Spring上下文的相关知识 58
1.10.11 BeanFactory与ApplicationContext 65
1.10.12 使用注解@Value进行注入 65
1.10.13 解决BeanCurrentlyInCreationException异常问题 67
第 2章 Spring 5核心技术之AOP 71
2.1 AOP 71
2.2 AOP原理之代理设计模式 71
2.2.1 静态代理的实现 72
2.2.2 使用JDK实现动态代理 74
2.2.3 使用Spring实现动态代理 76
2.2.4 使用cglib实现动态代理 79
2.2.5 使用javassist实现动态代理 80
2.3 AOP相关的概念 81
2.3.1 横切关注点 82
2.3.2 切面 82
2.3.3 连接点 84
2.3.4 切点 84
2.3.5 通知 85
2.3.6 织入 85
2.4 AOP核心案例 86
2.4.1 实现前置通知、后置通知、返回通知和异常通知 86
2.4.2 向前置通知、后置通知、返回通知和异常通知传入JoinPoint参数 91
2.4.3 实现环绕通知 92
2.4.4 使用bean表达式 92
2.4.5 使用@Pointcut定义全局切点 94
2.4.6 向切面传入参数 96
2.4.7 使用@AfterReturning和@AfterThrowing向切面传入参数 98
2.4.8 向环绕通知传入参数 100
2.4.9 实现多切面的应用 102
2.4.10 使用@Order注解制定切面的运行顺序 105
第3章 Spring 5 MVC实战技术 106
3.1 简介 106
3.2 在Spring Boot框架中搭建Spring MVC开发环境 106
3.2.1 搭建Spring MVC开发环境 107
3.2.2 搭建CSS+JavaScript+HTML+JSP开发环境 114
3.3 核心技术 118
3.3.1 执行控制层——无传递参数 118
3.3.2 执行控制层——有传递参数 119
3.3.3 执行控制层——有传递参数简化版 120
3.3.4 实现登录功能 120
3.3.5 将URL参数封装到实体类 122
3.3.6 限制提交方式 123
3.3.7 控制层方法的参数类型 124
3.3.8 控制层方法的返回值类型 125
3.3.9 取得request-response-session对象 126
3.3.10 实现登录失败后的提示信息 126
3.3.11 向Controller控制层注入Service业务逻辑层 128
3.3.12 重定向——无传递参数 129
3.3.13 重定向——有传递参数 130
3.3.14 重定向传递参数——Redirect-Attributes.addAttribute()方法 131
3.3.15 重定向传递参数——Redirect-Attributes.addFlashAttribute()方法 132
3.3.16 使用jackson库在服务端将JSON字符串转换成各种Java数据类型 133
3.3.17 在控制层返回JSON对象 137
3.3.18 在控制层返回JSON字符串 139
3.3.19 使用HttpServletResponse对象输出响应字符 140
3.3.20 解决日期问题 142
3.3.21 单文件上传1——使用MultipartHttpServletRequest 146
3.3.22 单文件上传2——使用MultipartFile 147
3.3.23 单文件上传3——使用MultipartFile并结合实体类 148
3.3.24 多文件上传1——使用MultipartHttpServletRequest 149
3.3.25 多文件上传2——使用MultipartFile[] 151
3.3.26 多文件上传3——使用MultipartFile[]并结合实体类 152
3.3.27 使用AJAX实现文件上传 154
3.3.28 支持中文文件名的文件下载 156
3.3.29 使用@RestController注解 157
3.4 扩展技术 158
3.4.1 使用prefix和suffix简化返回的视图名称 158
3.4.2 控制层返回List对象及实体 159
3.4.3 实现国际化 163
3.4.4 处理异常 172
3.4.5 方法的参数是Model数据类型 177
3.4.6 方法的参数是ModelMap数据类型 178
3.4.7 方法的返回值是ModelMap数据类型 179
3.4.8 方法的返回值是ModelAndView数据类型 180
3.4.9 方法的返回值是ModelAndView数据类型(实现重定向) 182
3.4.10 使用@RequestAttribute和@SessionAttribute注解 182
3.4.11 使用@CookieValue和@RequestHeader注解 183
3.4.12 使用@SessionAttributes注解 184
3.4.13 使用@ModelAttribute注解实现作用域别名 186
3.4.14 在路径中添加通配符的功能 187
3.4.15 控制层返回void数据的情况 188
3.4.16 解决多人开发路径可能重复的问题 189
3.4.17 使用@PathVariable注解 191
3.4.18 通过URL参数访问指定的业务方法 192
3.4.19 使用@GetMapping、@PostMapping、@PutMapping和@Delete Mapping注解 193
3.4.20 使用拦截器 197
3.4.21 Spring 5 MVC应用AOP切面 203
第4章 MyBatis 3核心技术之必备技能 205
4.1 ORM简介 205
4.2 MyBatis的优势 206
4.3 使用JDBC+反射技术实现泛型DAO 207
4.4 三大核心对象的介绍 213
4.5 三大核心对象的生命周期 213
4.6 使用MyBatis Generator插件:单模块 214
4.6.1 操作Oracle数据库 215
4.6.2 操作MySQL数据库 222
4.7 使用MyBatis Generator插件:多模块 227
4.7.1 操作Oracle数据库 227
4.7.2 操作MySQL数据库 232
4.8 自建环境使用Mapper接口操作Oracle-MySQL数据库 236
4.8.1 接口-SQL映射的对应关系 236
4.8.2 针对Oracle的CURD 237
4.8.3 针对MySQL的CURD 244
4.9 向Mapper接口传入参数类型 250
4.10 从SQL映射取得返回值类型 253
第5章 MyBatis 3核心技术之实战技能 255
5.1 实现输出日志 255
5.2 SQL语句中特殊符号的处理 255
5.3 使用别名 256
5.3.1 系统预定义别名 256
5.3.2 使用type-aliases-package配置设置别名 257
5.3.3 别名重复的解决办法 258
5.4 对yml文件中的数据库密码进行加密 260
5.5 不同数据库对执行不同SQL语句的支持 262
5.5.1 使用实现执行不同的SQL语句 262
5.5.2 如果SQL映射的id值相同,有无databaseId的优先级 263
5.6 动态SQL 264
5.6.1 使用标签实现映射 264
5.6.2 标签与实体类有参构造方法 265
5.6.3 使用${}拼接SQL语句 266
5.6.4 标签的使用 266
5.6.5 标签的使用 268
5.6.6 标签的使用 269
5.6.7 针对Oracle/MySQL实现like模糊查询 270
5.6.8 标签的使用 271
5.6.9 标签的使用 272
5.6.10 标签的使用 273
5.6.11 使用执行批量插入 274
5.6.12 使用标签对like语句进行适配 276
5.6.13 使用标签规范SQL语句 278
5.7 读写大文本类型的数据 281
5.7.1 操作Oracle数据库 281
5.7.2 操作MySQL数据库 283
5.8 实现数据分页 283
5.9 实现一对一级联 284
5.9.1 数据表结构和内容以及关系 285
5.9.2 创建实体类 285
5.9.3 创建SQL映射文件 287
5.9.4 级联解析 288
5.9.5 根据ID查询记录 288
5.9.6 查询所有记录 289
5.9.7 对SQL语句的执行次数进行优化 289
5.10 实现一对多级联 291
5.10.1 数据表结构和内容以及关系 291
5.10.2 创建实体类 291
5.10.3 创建SQL映射文件 293
5.10.4 级联解析 294
5.10.5 根据ID查询记录 294
5.10.6 查询所有记录 294
5.10.7 对SQL语句的执行次数进行优化 295
5.11 延迟加载 297
5.11.1 默认采用立即加载策略 297
5.11.2 使用全局延迟加载策略与两种加载方式 298
5.11.3 使用fetchType属性设置局部加载策略 304
5.12 缓存的使用 305
5.12.1 一级缓存 305
5.12.2 二级缓存 307
5.12.3 验证update语句具有清除二级缓存的特性 308
5.13 Spring事务传播特性 310
5.13.1 事务传播特性REQUIRED 310
5.13.2 事务传播特性SUPPORTS 311
5.13.3 事务传播特性MANDATORY 311
5.13.4 事务传播特性REQUIRES_NEW 312
5.13.5 事务传播特性NOT_SUPPORTED 314
5.13.6 事务传播特性NEVER 315
5.13.7 事务传播特性NESTED 317
5.13.8 事务传播特性总结 318
第6章 模板引擎FreeMarker和Thymeleaf的使用 320
6.1 使用FreeMarker模板引擎 321
6.1.1 FreeMarker的优势 321
6.1.2 FreeMarker的输出 321
6.1.3 整合Spring Boot与输出常见数据类型 322
6.1.4 输出布尔值 327
6.1.5 输出Date数据类型 328
6.1.6 循环集合中的数据 329
6.1.7 使用if命令实现判断 333
6.1.8 判断List的size值是否为0 334
6.1.9 处理null值 335
6.1.10 实现隔行变色 338
6.1.11 对象嵌套有null值的处理 340
6.1.12 比较运算符 341
6.1.13 遗拾增补 342
6.1.14 填充select中的option 342
6.1.15 实现自动选中select中的option 343
6.1.16 实现页面静态化 344
6.1.17 将ftlh文件中的内容输出到内存中 345
6.2 使用Thymeleaf模板引擎 346
6.2.1 整合Spring Boot与常见的使用方式 346
6.2.2 处理复杂数据类型 351
6.2.3 处理嵌套数据类型 353
6.2.4 访问Array 354
6.2.5 访问List 355
6.2.6 访问Map 356
6.2.7 访问request-session-application作用域 358
6.2.8 访问URL参数值 358
6.2.9 循环Array 359
6.2.10 循环List 359
6.2.11 循环Set 360
6.2.12 循环Map 361
6.2.13 生成Table 361
6.2.14 循环生成 362
6.2.15 获得状态变量 363
6.2.16 获得状态变量的简化版 364
6.2.17 实现国际化 365
6.2.18 处理URL 366
6.2.19 处理布尔值 367
6.2.20 操作属性 367
猜您喜欢