对应练习于 https://github.com/AganRun/SpringInAction
第二章 开发web应用
2.1 展现信息
Spring提供了多种定义视图的方式,包括JavaServer Pages(JSP)、Thymeleaf、FreeMarker、Mustache和基于Groovy的模板。
使用Thymeleaf
- 添加Starter启动器。
- 在运行时,SpringBoot的自动配置发现Thymeleaf在类路径中,因此会为SpringMVC创建支持Thymeleaf视图的bean。
Thymeleaf模板就是增加了一些额外元素属性的HTML。例如"th:each"会迭代一个元素集合。
2.3 校验表单输入
有种校验是在方法中添加大量乱七八糟的if/then代码块,但是这样会难以阅读和调试。
Spring支持JAVA的Bean校验API。在SpringBoot项目中,Validation API以及Validation API的Hibernate实现将会作
为SpringBoot web starter的传递性依赖自动添加到项目中。
使用步骤
- 在要被校验的类上声明校验规则
- 在控制器方法中声明进行校验
- 修改表单视图以展示校验错误
复杂的自定义逻辑可以使用正则表达式
@Pattern(regexp = "^(0[1-9]|1[0-2])([\\/])([1-9][0-9])$", message = "Must be formatted MM/YY")
2.4 视图控制器
定义Controller除了可以通过新建类,添加@controller注解,还可以通过类实现WebMvcConfigure接口实现。
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("home");
}
}
Thymeleaf作为渲染模板,默认只有第一次使用的时候解析一次,解析的结果会被后续的请求使用。
这样可以提升性能,对于开发环境,可以通过Spring.thymeleaf.cache=false禁用。
第二章小结
- SpringMVC是基于注解的,通过@RequestMapping之类的注解启用请求处理方法的声明。
- SpringMVC支持校验,通过Java Bean Validation API 和 Validation API的实现完成
- Spring支持多种视图方案