1. SpringBoot服务端数据-实现添加用户功能

(1)创建一个Maven的jar工程。

SpringBoot flowable 配置 表区分大小写_spring

(2)修改POM文件添加Web启动器与Thymeleaf坐标。

SpringBoot flowable 配置 表区分大小写_spring_02

(3)在项目中使用Thymeleaf编写一个添加用户的视图。

SpringBoot flowable 配置 表区分大小写_java_03

(4)创建一个Controller处理添加用户请求。

@Controller
public class UsersController {
     @RequestMapping("/{page}")
    public String showPage(@PathVariable String page){
         return page;
     }

    /**
     * 完成添加用户
     * @return
     */
    @RequestMapping("/addUser")
    public String addUser(Users users){
        System.out.println(users);
        return "ok";
     }
}

2.SpringBoot服务端数据-数据校验

(1)Spring Boot中服务端数据校验技术的特点是什么?

SpringBoot 中使用了 Hibernate-validate 校验框架

(2)阐述Spring Boot中如何实现服务端数据校验?

第一步:在实体类中添加校验规则

SpringBoot flowable 配置 表区分大小写_热部署_04


第二步:在controller中开启校验

两种方式,第一种:

SpringBoot flowable 配置 表区分大小写_spring_05


第二种:

SpringBoot flowable 配置 表区分大小写_spring_06

第三步:在页面中获取提示信息

SpringBoot flowable 配置 表区分大小写_spring_07


或者

SpringBoot flowable 配置 表区分大小写_spring_08

(3)@NotBlank注解的作用是什么?

对数据进行非空校验

(4)@Valid注解的作用是什么?

开启对实体类对象的数据校验

(5)BindingResult的作用是什么?

封装了校验的结果

3.SpringBoot服务端数据-解决异常

(1)在服务端数据校验时会出现什么异常?

SpringBoot flowable 配置 表区分大小写_spring_09

(2)产生异常的原因是什么?

因为当我们第一次访问界面的时候,还没有进入controller层去进行添加操作,只是在跳转界面这个操作中,所以在html中我们进行数据校验的参数无法得到,则无法进行显示,就会出现错误。

(3)如何解决该异常?

两种方式解决:
第一种:可以在跳转页面的方法中注入一个 Uesrs 对象。注意:由于 springmvc 会将该对象放入到 Model 中传递。key 的名称会使用该对象的驼峰式的命名规则来作为 key。参数的变量名需要与对象的名称相同。将首字母小写。
第二种:如果想为传递的对象更改名称,可以使用@ModelAttribute(“aa”)这表示当前传递的对象的 key 为 aa。那么我们在页面中获取该对象的 key 也需要修改为 aa

(4)@ModelAttribute注解的作用是什么?

为传递参数对象更改名称

4.SpringBoot服务端数据-其他校验规则

(1)@NotBlank: 注解的作用是什么?

对实体类的对象进行非空校验,判断是否为null或空字符串

(2)@NotEmpty: 注解的作用是什么?

非空校验,但是可以识别空字符串

(3)@Length: 注解的作用是什么?

判断字符的长度(最大或最小)

(4)@Min: 注解的作用是什么?

判断数值最小值

(5)@Max: 注解的作用是什么?

判断数组最大值

(6)@Email:注解的作用是什么?

判断邮箱是否合法

5.SpringBoot异常处理-自定义错误页面

(1)在Spring Boot中一共提供了几种处理异常的方式?

五种处理异常方式

(2)什么是自定义错误页面方式?

SpringBoot默认的处理异常的机制:SpringBoot默认已经提供了一套处理异常的机制。一旦程序中出现了异常SpringBoot会向/error的url发送请求。在SpringBoot中提供了一个叫BasicExceptionController来处理/error请求。然后跳转到默认显示异常的页面来展示异常信息。

(3)自定义错误页面的命名上有何要求?

名称必须叫error

(4)自义定错误页面应该放到项目的什么位置?

如果我们需要将所有的异常统一跳转到自定义的错误页面,需要在src/main/resources/templates目录下创建error.html页面。

6.SpringBoot异常处理-@ExceptionHandler

(1)@ExceptionHandler注解的作用是什么?

使得不同的异常跳转到不同的异常界面

(2)使用@ExceptionHandler注解处理异常的步骤是什么?

第一步:controller层
/**
 * java.lang.NullPointerException
 * * 该方法需要返回一个 ModelAndView:目的是可以让我们封装异常信息以及视
 * 图的指定
 * * 参数 Exception e:会将产生异常对象注入到方法中
 */
@ExceptionHandler(value = {java.lang.NullPointerException.class})
public ModelAndView nullPointerExceptionHandler(Exception e){
    ModelAndView model=new ModelAndView();
    model.addObject("error",e.toString());
    model.setViewName("error1");
    return model;
}

/**
 * java.lang.ArithmeticException
 * * 该方法需要返回一个 ModelAndView:目的是可以让我们封装异常信息以及视
 * 图的指定
 * * 参数 Exception e:会将产生异常对象注入到方法中
 */
@ExceptionHandler(value = {java.lang.ArithmeticException.class})
public ModelAndView arithmeticExceptionHandler(Exception e){
    ModelAndView model=new ModelAndView();
    model.addObject("error",e.toString());
    model.setViewName("error2");
    return model;
}

第二步:界面显示

SpringBoot flowable 配置 表区分大小写_热部署_10

SpringBoot flowable 配置 表区分大小写_java_11

7.SpringBoot异常处理-@ControlleAdvice

(1)@ControllerAdvice注解的作用是什么?

处理异常的全局异常类

(2)@ControllerAdvice+@ExceptionHandler注解处理异常有什么特点?

在全局异常类上要加上@ControllerAdvice注解,然后在该类中加入@ExceptionHandler注解处理异常的方法。

8.SpringBoot异常处理-SimpleMappingExceptionResolver

(1)SimpleMappingExceptionResolver的作用是什么?

完成异常的同一处理

(2)阐述使用SimpleMappingExceptionResolver处理异常的方式是什么?

/**
 * 通过 SimpleMappingExceptionResolver 做全局异常处理
 */
@Configuration
public class GlobalException {
    /**
     * 该方法必须要有返回值。返回值类型必须是:
     SimpleMappingExceptionResolver
     */
    @Bean
    public SimpleMappingExceptionResolver getSimpleMappingExceptionResolver(){
        SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();

        Properties mappings = new Properties();
        /**
         * 参数一:异常的类型,注意必须是异常类型的全名
         * 参数二:视图名称
         */
        mappings.put("java.lang.NullPointerException","error1");
        mappings.put("java.lang.ArithmeticException","error2");
        //设置视图与异常的映射关系
        resolver.setExceptionMappings(mappings);
        return resolver;
    }
}

9.SpringBoot异常处理-自定义HandlerExceptionResolver

(1)HandlerExceptionResolver接口的作用是什么?

全局异常处理

(2)阐述使用HandlerExceptionResolver接口处理异常的方式是什么?

@Configuration
public class GlobalException implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        ModelAndView model = new ModelAndView();
        if (e instanceof NullPointerException){
            model.setViewName("error1");
        }
        if (e instanceof ArithmeticException){
            model.setViewName("error2");
        }
        model.addObject("error",e.toString());
        return model;
    }
}

10.Spring Boot整合junit单元测试

(1)@RunWith注解的作用是什么?

类启动器

(2)@SpringBootTest注解的作用是什么?

1、表示当前类为springBoot的测试类
2、加载SpringBoot启动类,启动springBoot

11.Spring Boot热部署-SpringLoader-方式一

(1)使用SpringLoader实现热部署的方式有几种?

两种
1、SpringLoader插件
2、DevTools工具

(2)SpringLoader实现热部署有什么缺陷?

该部署方法只对Java代码做部署处理,但是对页面无能为力。

(3)如何启动通过Maven插件方式引入SpringLoader实现热部署的服务?

Spring-boot:run

SpringBoot flowable 配置 表区分大小写_spring_12

(4)如何关闭使用SpringLoader热部署的服务?

需要在后台手动关闭该进程

12.Spring Boot热部署-SpringLoader-方式二

(1)手动添加SpringLoader的jar实现项目的热部署的步骤是什么?

1、添加 springloader 的jar 包

SpringBoot flowable 配置 表区分大小写_java_13


2、启动项目

SpringBoot flowable 配置 表区分大小写_java_14


SpringBoot flowable 配置 表区分大小写_java_15

(2)启动服务时与基于插件方式添加SpringLoader方式有何区别?

一个通过maven命令 spring-boot:run来启动
这种方式通过-javaagent:.\lib\springloaded-1.2.5.RELEASE.jar -noverify来启动项目。

(3)启动服务时需要添加什么启动参数?

添加 -javaagent:.\lib\springloaded-1.2.5.RELEASE.jar -noverify

13.Spring Boot热部署-Devtools的使用

(1)Spring Loader与Devtools的区别是什么?

SpringLoader在部署项目的时候使用的是热部署的方式
DevTools在部署项目的时候使用的是重写部署的方式

(2)使用Devtools实现热部署的步骤是什么?

1、修改项目的pom文件,添加devtools的依赖
2、启动项目
3、更改后台数据或者前台数据,等待一会就会重新自行部署