springboot接受数组对象_SpringBoot校验、异常和热部署学习主题:SpringBoot
1. SpringBoot服务端数据-实现添加⽤户功能
1. 创建⼀个Maven的jar⼯程。
2. 修改POM⽂件添加Web启动器与Thymeleaf坐标。
<!-- springBoot 的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- web 启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
1. 在项⽬中使⽤Thymeleaf编写⼀个添加⽤户的视图。
<!DOCTYPE html>
<html lang="en" xmlns:th="/1999/xhtml">
<!--<html lang="en" xmlns:th="">-->
<head>
<meta charset="UTF-8">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache" content="no-cache">
<title>添加⽤户</title>
</head>
<body>
<form th:action="@{/save}" method="post">
⽤户姓名:<input type="text" name="name"/>
⽤户密码:<input type="password" name="password"/>
⽤户年龄:<input type="text" name="age"/>
<input type="submit" value="OK"/>
</form>
</body>
</html>
1. 创建⼀个Controller处理添加⽤户请求。
springboot架构图j.controller;
j.pojo.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**SpringBoot 表单数据校验
* @author cyj
* @date 2019-11-19 21:23
*/
@Controller
public class StudentController {
/**
* 程序⼊⼝
* @return
*/
@RequestMapping("/addUser")
public String showPage(){
return "add";
}
/**
* 完成⽤户添加
* @param student
* @return
*/
@RequestMapping("/save")
public String saveStudent(Student student){
System.out.println(student);
return "ok";
}
}
1. SpringBoot服务端数据-数据校验
1. Spring Boot中服务端数据校验技术的特点是什么?
使⽤了Hibernate-validate校验框架
1. 阐述Spring Boot中如何实现服务端数据校验?
2. 在实体类的属性加上对应校验注解
3. 控制层调⽤⽅法中使⽤@Valid表明开启数据校验,并将校验结果封装在BindingResult中
1. @NotBlank注解的作⽤是什么?
⾮空校验
1. @Valid注解的作⽤是什么?
开启该对象的数据校验
1. BindingResult的作⽤是什么?
封装了校验结果
1. SpringBoot服务端数据-解决异常
1. 在服务端数据校验时会出现什么异常?
1. 产⽣异常的原因是什么?
不到对象
1. 如何解决该异常?
可以在跳转页⾯的⽅法中注⼊该对象。
注意:由于 springmvc 会将该对象放⼊到 Model 中传递。key 的名称会使⽤ 该对象的驼峰式的命名规则来作为 key。 参数的变量名需要与对象的名称相同。将⾸字母⼩写。
1. @ModelAttribute注解的作⽤是什么?
表⽰当前传递对象的key为aa
1. SpringBoot服务端数据-其他校验规则
1. @NotBlank: 注解的作⽤是什么?
判断字符串是否为null或者是空串(去掉⾸尾空格)⼀定要和valid⼀起使⽤
1. @NotEmpty: 注解的作⽤是什么?
判断字符串是否为null或者是空串
1. @Length: 注解的作⽤是什么?
判断字符的长度(最⼤或者最⼩)
1. @Min: 注解的作⽤是什么?
判断数值最⼩值
1. @Max: 注解的作⽤是什么?
判断数值最⼤值
1. @Email:注解的作⽤是什么?
判断邮箱是否合法
1. SpringBoot异常处理-⾃定义错误页⾯
1. 在Spring Boot中⼀共提供了⼏种处理异常的⽅式?
5种
1⾃定义错误页⾯
2 @ExceptionHandle 注解处理异常
3 @ControllerAdvice+@ExceptionHandler 注解处理异常
4配置 SimpleMappingExceptionResolver 处理异常
5⾃定义 HandlerExceptionResolver 类处理异常
1. 什么是⾃定义错误页⾯⽅式?
SpringBoot 默认的处理异常的机制: SpringBoot 默认的已经提供了⼀套处理异常的机制。 ⼀旦程序中出现了异常 SpringBoot 会
像/error 的 url 发送请求。在 springBoot 中提供了⼀个 叫 BasicExceptionController 来处理/error 请求,然后跳转到默认显⽰异常的页⾯来展⽰异常信息。
1. ⾃定义错误页⾯的命名上有何要求?
报错页⾯的html必须为error.html
1. ⾃义定错误页⾯应该放到项⽬的什么位置?
src/main/resources/templates⽬录下
1. SpringBoot异常处理-@ExceptionHandler
1. @ExceptionHandler注解的作⽤是什么?
确定异常具体类型,有异常时就会匹配上并执⾏该注解下的⽅法实现异常对象返回和异常视图跳转
1. 使⽤@ExceptionHandler注解处理异常的步骤是什么?
1在需要异常处理的⽅法上添加注解@ExceptionHandler(value={异常全限定路径名})
2 编写返回参数类型为ModelAndView的类,⽬的是封装异常信息以及视图指定
3 返回该对象
1. SpringBoot异常处理-@ControlleAdvice
1. @ControllerAdvice注解的作⽤是什么?
声明处理异常的全局异常类
1. @ControllerAdvice+@ExceptionHandler注解处理异常有什么特点?
@ControllerAdvice修饰的类下⾯可以有多个@ExceptionHandler修饰的注解,但是会造成代码的冗余,但是@ExceptionHandler中也可以写数组形式,需要在⽅法内添加条件判断。且只能返回视图,不能返回异常对象,但是前端使⽤th:text=”${exception}”可以接收到异常对象⽽th:text=”${error}”不⾏
1. SpringBoot异常处理-SimpleMappingExceptionResolver
1. SimpleMappingExceptionResolver的作⽤是什么?
在全局异常类中添加⼀个⽅法完成异常的统⼀处理
1. 阐述使⽤SimpleMappingExceptionResolver处理异常的⽅式是什么?
1 使⽤@Configuration注解声明全局异常类为配置类
2 @Bean使在扫描配置类时⾃动加载该注解修饰的⽅法
3 添加⽅法,返回类型为SimpleMappingExceptionResolver
4 实例SimpleMappingExceptionResolver对象,在该对象中添加Properties,Properties中包含了异常信息的集合
1. SpringBoot异常处理-⾃定义HandlerExceptionResolver
1. HandlerExceptionResolver接⼝的作⽤是什么?
可以实现返回错误视图⼜可以返回错误对象
1. 阐述使⽤HandlerExceptionResolver接⼝处理异常的⽅式是什么?
1 在全局异常处理类中实现HandlerExceptionResolver 接⼝
2 重写resolveException⽅法
3 ⽅法中定义ModelAndView对象,最后返回该对象
1. Spring Boot整合junit单元测试
1. @RunWith注解的作⽤是什么?
启动器
1. @SpringBootTest注解的作⽤是什么?
当前类为spring boot的测试类并加载spring boot启动类,启动spring boot
1. Spring Boot热部署-SpringLoader-⽅式⼀
1. 使⽤SpringLoader实现热部署的⽅式有⼏种?
2种:SpringLoader 插件和 DevTools ⼯具
1. SpringLoader实现热部署有什么缺陷?
只能实现后端的更新热部署,不能实现视图层,且需要去任务管理器⼿动关闭进程1. 如何启动通过Maven插件⽅式引⼊SpringLoader实现热部署的服务?
<!-- springloader 插件 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
1. 如何关闭使⽤SpringLoader热部署的服务?
任务管理器⼿动关闭进程
1. Spring Boot热部署-SpringLoader-⽅式⼆
1. ⼿动添加SpringLoader的jar实现项⽬的热部署的步骤是什么?
1. 启动服务时与基于插件⽅式添加SpringLoader⽅式有何区别?
启动不会抢占端⼝,不需要去杀死进程
1. 启动服务时需要添加什么启动参数?
-javaagent:.libspringloaded-1.2.5.RELEASE.jar-noverify
1. Spring Boot热部署-Devtools的使⽤
1. Spring Loader与Devtools的区别是什么?
1 Spring Loader启动后实现的热部署不会重新build加载
Devtools会重新build
2 Spring Loader只能实现后端热部署
Devtools可以实现前端后端热部署
1. 使⽤Devtools实现热部署的步骤是什么?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论