参数校验补充

通过注解可以给前端传递过来的值进行校验,例如:
image.png
但是这个注解必须配合 @Valid 使用,完成对参数的校验:
image.png
而校验的结果,也会自动封装到 BindingResult 类型中,通过这个参数可以很方便的对错误的参数进行处理。
hasErrors() 可以判断是否有参数校验错误,如果有,可以通过 getFieldsErrors() 方法获取错误列表。
image.png
注意:@Valid 和 BindingResult 是一一对应的,多个 @Valid 标注的参数实体后面要对应各自的 BindingResult.

SpringMVC 重定向携带数据

image.png

MD5&MD5盐值加密

MD5

Message Digest algorithm 5,信息摘要算法

  • 压缩性:任意长度的数据,算出的 MD5 值长度都是固定的;
  • 容易计算:从原数据计算出 MD5 值很容易;
  • 抗修改性:对原数据进行任何改动,哪怕只修改 1 个字节,所得到的 MD5 值都有很大区别;
  • 强抗碰撞:想找到两个不同的数据,使它们具有相同的 MD5 值是非常困难的;
  • 不可逆

    1. @Test
    2. void contextLoads() {
    3. String s = DigestUtils.md5Hex("123456");
    4. System.out.println(s);
    5. // 盐值加密
    6. System.out.println(Md5Crypt.md5Crypt("123456".getBytes()));
    7. System.out.println(Md5Crypt.md5Crypt("123456".getBytes(), "$1$qqqqqqqq"));
    8. // Spring 盐值加密
    9. BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
    10. //$2a$10$GT0TjB5YK5Vx77Y.2N7hkuYZtYAjZjMlE6NWGE2Aar/7pk/Rmhf8S
    11. //$2a$10$cR3lis5HQQsQSSh8/c3L3ujIILXkVYmlw28vLA39xz4mHDN/NBVUi
    12. String encode = bCryptPasswordEncoder.encode("123456");
    13. boolean matches = bCryptPasswordEncoder.matches("123456", "$2a$10$GT0TjB5YK5Vx77Y.2N7hkuYZtYAjZjMlE6NWGE2Aar/7pk/Rmhf8S");
    14. System.out.println(encode + "==>" + matches);
    15. }