精华内容
下载资源
问答
  • 11g rman validate验证数据库==========================11g rman中增加validate来检查数据库状况可以针对全库、控制文件、参数文件等进行验证validate database;validate datafile 3;validate spfile;validate ...

    11g rman validate验证数据库

    ==========================

    11g rman中增加validate来检查数据库状况

    可以针对全库、控制文件、参数文件等进行验证

    validate database;

    validate datafile 3;

    validate spfile;

    validate current controlfile;

    validate backupset xxx;

    validate tablespace system;

    ======================

    [oracle@localhost 2011_11_08]$ rman target /

    Recovery Manager: Release 11.2.0.1.0 - Production on Tue Nov 8 11:08:39 2011

    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

    connected to target database: DB11 (DBID=1298141643)

    --全库验证

    --结果包括所有文件的状态、是否有坏块、空块、使用量、以及scn

    --同时还有文件中数据和索引各占用的块等信息

    --全库验证的结果默认包含参数文件和控制文件

    RMAN> validate database;

    Starting validate at 08-NOV-11

    using target database control file instead of recovery catalog

    allocated channel: ORA_DISK_1

    channel ORA_DISK_1: SID=41 device type=DISK

    channel ORA_DISK_1: starting validation of datafile

    channel ORA_DISK_1: specifying datafile(s) for validation

    input datafile file number=00001 name=/oracle/oradata/db11/db11/system01.dbf

    input datafile file number=00002 name=/oracle/oradata/db11/db11/sysaux01.dbf

    input datafile file number=00003 name=/oracle/oradata/db11/db11/undotbs01.dbf

    input datafile file number=00004 name=/oracle/oradata/db11/db11/users01.dbf

    channel ORA_DISK_1: validation complete, elapsed time: 00:00:35

    List of Datafiles

    =================

    File Status Marked Corrupt Empty Blocks Blocks Examined High SCN

    ---- ------ -------------- ------------ --------------- ----------

    1    OK     0              13729        87041           877449

    File Name: /oracle/oradata/db11/db11/system01.dbf

    Block Type Blocks Failing Blocks Processed

    ---------- -------------- ----------------

    Data       0              58037

    Index      0              12168

    Other      0              3106

    File Status Marked Corrupt Empty Blocks Blocks Examined High SCN

    ---- ------ -------------- ------------ --------------- ----------

    2    OK     0              17402        60183           877455

    File Name: /oracle/oradata/db11/db11/sysaux01.dbf

    Block Type Blocks Failing Blocks Processed

    ---------- -------------- ----------------

    Data       0              10067

    Index      0              7025

    Other      0              25666

    File Status Marked Corrupt Empty Blocks Blocks Examined High SCN

    ---- ------ -------------- ------------ --------------- ----------

    3    OK     0              112          9600            877455

    File Name: /oracle/oradata/db11/db11/undotbs01.dbf

    Block Type Blocks Failing Blocks Processed

    ---------- -------------- ----------------

    Data       0              0

    Index      0              0

    Other      0              9488

    File Status Marked Corrupt Empty Blocks Blocks Examined High SCN

    ---- ------ -------------- ------------ --------------- ----------

    4    OK     0              481          640             749391

    File Name: /oracle/oradata/db11/db11/users01.dbf

    Block Type Blocks Failing Blocks Processed

    ---------- -------------- ----------------

    Data       0              15

    Index      0              2

    Other      0              142

    channel ORA_DISK_1: starting validation of datafile

    channel ORA_DISK_1: specifying datafile(s) for validation

    including current control file for validation

    including current SPFILE in backup set

    channel ORA_DISK_1: validation complete, elapsed time: 00:00:01

    List of Control File and SPFILE

    ===============================

    File Type    Status Blocks Failing Blocks Examined

    ------------ ------ -------------- ---------------

    SPFILE       OK     0              2

    Control File OK     0              594

    Finished validate at 08-NOV-11

    RMAN> validate datafile 3;

    Starting validate at 08-NOV-11

    using channel ORA_DISK_1

    channel ORA_DISK_1: starting validation of datafile

    channel ORA_DISK_1: specifying datafile(s) for validation

    input datafile file number=00003 name=/oracle/oradata/db11/db11/undotbs01.dbf

    channel ORA_DISK_1: validation complete, elapsed time: 00:00:03

    List of Datafiles

    =================

    File Status Marked Corrupt Empty Blocks Blocks Examined High SCN

    ---- ------ -------------- ------------ --------------- ----------

    3    OK     0              112          9600            877455

    File Name: /oracle/oradata/db11/db11/undotbs01.dbf

    Block Type Blocks Failing Blocks Processed

    ---------- -------------- ----------------

    Data       0              0

    Index      0              0

    Other      0              9488

    Finished validate at 08-NOV-11

    --验证参数文件

    --比较简单

    RMAN> validate spfile;

    Starting validate at 08-NOV-11

    using channel ORA_DISK_1

    channel ORA_DISK_1: starting validation of datafile

    channel ORA_DISK_1: specifying datafile(s) for validation

    including current SPFILE in backup set

    channel ORA_DISK_1: validation complete, elapsed time: 00:00:00

    List of Control File and SPFILE

    ===============================

    File Type    Status Blocks Failing Blocks Examined

    ------------ ------ -------------- ---------------

    SPFILE       OK     0              2

    Finished validate at 08-NOV-11

    --验证控制文件

    --与参数文件类似

    RMAN> validate current controlfile;

    Starting validate at 08-NOV-11

    using channel ORA_DISK_1

    channel ORA_DISK_1: starting validation of datafile

    channel ORA_DISK_1: specifying datafile(s) for validation

    including current control file for validation

    channel ORA_DISK_1: validation complete, elapsed time: 00:00:01

    List of Control File and SPFILE

    ===============================

    File Type    Status Blocks Failing Blocks Examined

    ------------ ------ -------------- ---------------

    Control File OK     0              594

    Finished validate at 08-NOV-11

    --使用list命令可以将现存在catalog中的backupset列出

    --根据列出的backupset key可以对backupset进行验证

    RMAN> list backupset;

    List of Backup Sets

    ===================

    BS Key  Type LV Size       Device Type Elapsed Time Completion Time

    ------- ---- -- ---------- ----------- ------------ ---------------

    4       Full    954.85M    DISK        00:01:26     08-NOV-11

    BP Key: 4   Status: AVAILABLE  Compressed: NO  Tag: TAG20111108T112236

    Piece Name: /oracle/flash_recovery_area/DB11/backupset/2011_11_08/o1_mf_nnndf_TAG20111108T112236_7ck83wn9_.bkp

    List of Datafiles in backup set 4

    File LV Type Ckp SCN    Ckp Time  Name

    ---- -- ---- ---------- --------- ----

    1       Full 878265     08-NOV-11 /oracle/oradata/db11/db11/system01.dbf

    2       Full 878265     08-NOV-11 /oracle/oradata/db11/db11/sysaux01.dbf

    3       Full 878265     08-NOV-11 /oracle/oradata/db11/db11/undotbs01.dbf

    4       Full 878265     08-NOV-11 /oracle/oradata/db11/db11/users01.dbf

    BS Key  Type LV Size       Device Type Elapsed Time Completion Time

    ------- ---- -- ---------- ----------- ------------ ---------------

    5       Full    9.36M      DISK        00:00:02     08-NOV-11

    BP Key: 5   Status: AVAILABLE  Compressed: NO  Tag: TAG20111108T112236

    Piece Name: /oracle/flash_recovery_area/DB11/backupset/2011_11_08/o1_mf_ncsnf_TAG20111108T112236_7ck86x1h_.bkp

    SPFILE Included: Modification time: 08-NOV-11

    SPFILE db_unique_name: DB11

    Control File Included: Ckp SCN: 878298       Ckp time: 08-NOV-11

    RMAN> validate backupset 5;

    Starting validate at 08-NOV-11

    using channel ORA_DISK_1

    channel ORA_DISK_1: starting validation of datafile backup set

    channel ORA_DISK_1: reading from backup piece /oracle/flash_recovery_area/DB11/backupset/2011_11_08/o1_mf_ncsnf_TAG20111108T112236_7ck86x1h_.bkp

    channel ORA_DISK_1: piece handle=/oracle/flash_recovery_area/DB11/backupset/2011_11_08/o1_mf_ncsnf_TAG20111108T112236_7ck86x1h_.bkp tag=TAG20111108T112236

    channel ORA_DISK_1: restored backup piece 1

    channel ORA_DISK_1: validation complete, elapsed time: 00:00:01

    Finished validate at 08-NOV-11

    RMAN> validate tablespace system;

    Starting validate at 08-NOV-11

    using channel ORA_DISK_1

    channel ORA_DISK_1: starting validation of datafile

    channel ORA_DISK_1: specifying datafile(s) for validation

    input datafile file number=00001 name=/oracle/oradata/db11/db11/system01.dbf

    channel ORA_DISK_1: validation complete, elapsed time: 00:00:15

    List of Datafiles

    =================

    File Status Marked Corrupt Empty Blocks Blocks Examined High SCN

    ---- ------ -------------- ------------ --------------- ----------

    1    OK     0              13729        87041           878568

    File Name: /oracle/oradata/db11/db11/system01.dbf

    Block Type Blocks Failing Blocks Processed

    ---------- -------------- ----------------

    Data       0              58037

    Index      0              12168

    Other      0              3106

    channel ORA_DISK_1: starting validation of datafile

    channel ORA_DISK_1: specifying datafile(s) for validation

    including current control file for validation

    including current SPFILE in backup set

    channel ORA_DISK_1: validation complete, elapsed time: 00:00:01

    List of Control File and SPFILE

    ===============================

    File Type    Status Blocks Failing Blocks Examined

    ------------ ------ -------------- ---------------

    SPFILE       OK     0              2

    Control File OK     0              594

    Finished validate at 08-NOV-11

    展开全文
  • MySQL密码策略管理插件validate_password

    千次阅读 多人点赞 2021-01-03 16:40:48
    MySQL5.6版本,引入了新密码校验插件validate_password, 用于管理用户密码长度、强度等,保障账号的安全性。本文让我们一起学习一下用户密码策略如何配置,简单易会

    小伙伴想精准查找自己想看的MySQL文章?喏 → MySQL江湖路 | 专栏目录

      自MySQL5.6版本,引入了新密码校验插件validate_password, 用于管理用户密码长度、强度等,保障账号的安全性。而到了MySQL 8.0,引入了服务器组件(Components)这个特性,validate_password插件已用服务器组件重新实现。

    一、密码策略插件validate_password用法介绍

      validate_password是MySQL默认的密码管理策略插件,可通过配置对用户密码长度、强度进行管理;

    1 - 1、策略查询命令

    mysql> SHOW VARIABLES LIKE 'validate_password%';
    +--------------------------------------+--------+
    | Variable_name                        | Value  |
    +--------------------------------------+--------+
    | validate_password_check_user_name    | OFF    |
    | validate_password_dictionary_file    |        |
    | validate_password_length             | 8      |
    | validate_password_mixed_case_count   | 1      |
    | validate_password_number_count       | 1      |
    | validate_password_policy             | MEDIUM |
    | validate_password_special_char_count | 1      |
    +--------------------------------------+--------+
    7 rows in set (0.00 sec)
    

    1 - 2、属性信息介绍

    属性默认值属性描述
    validate_password_check_user_nameOFF设置为ON的时候表示能将密码设置成当前用户名。
    validate_password_dictionary_file用于检查密码的字典文件的路径名,默认为空
    validate_password_length8密码的最小长度,也就是说密码长度必须大于或等于8
    validate_password_mixed_case_count1如果密码策略是中等或更强的,validate_password要求密码具有的小写和大写字符的最小数量。对于给定的这个值密码必须有那么多小写字符和那么多大写字符。
    validate_password_number_count1密码必须包含的数字个数
    validate_password_policyMEDIUMright-aligned 密码强度检验等级,可以使用数值0、1、2或相应的符号值LOW、MEDIUM、STRONG来指定。
    0/LOW:只检查长度。
    1/MEDIUM:检查长度、数字、大小写、特殊字符。
    2/STRONG:检查长度、数字、大小写、特殊字符、字典文件。
    validate_password_special_char_count1密码必须包含的特殊字符个数

    1 - 3、修改方式(命令)

    如下,是修改密码强度等级

    SET GLOBAL validate_password_policy=LOW;     -- For LOW
    SET GLOBAL validate_password_policy=MEDIUM;  -- For MEDIUM
    SET GLOBAL validate_password_policy=STRONG;  -- For HIGH
    -- 同等于下                            _
    SET GLOBAL validate_password_policy = 0;     -- For LOW
    SET GLOBAL validate_password_policy = 1;     -- For MEDIUM
    SET GLOBAL validate_password_policy = 2;     -- For HIGH
    

    MySQL密码强度等级

    密码规则强度得分
    Length < 40
    Length ≥ 4 and < validate_password.length25
    Satisfies policy 1 (LOW:只验证长度)50
    Satisfies policy 2 (MEDIUM:验证长度、数字、大小写、特殊字符)75
    Satisfies policy 3 (STRONG:验证长度、数字、大小写、特殊字符、字典文件)100

    如下,是密码长度策略控制,代表最小长度,但最小长度为4;如果设置小于4,也会默认为4的。

    SET GLOBAL validate_password_length=6;
    

    二、首次安装MySQL后的策略配置

      通常,在我们安装完并启动MySQL后,validate_password插件就会开始运行,系统会给root用户自动生成一个随机密码,存放到日志文件mysqld.log中,用于首次登录使用。

      可通过命令获取root用户的临时密码,如下:waQ,qR%be2(5,可以用该密码进行首次登录。

    # grep “password” /var/log/mysqld.log
    
    2020-12-19T05:16:36.218234Z 1 [Note] A temporary password is generated for root@localhost: waQ,qR%be2(5
    

    登录后系统会强制让你重置root密码,否则不允许对数据库进行操作。

    mysql> select user();
    ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
    

    如果只是修改为一个简单的密码,会报以下错误:

    mysql>  ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';
    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    

    如果你想设置成“123456”这种弱口令,需要先将validate_password_policy设为LOW;这样MySQL就只检查密码长度了。

    mysql> SET GLOBAL validate_password_policy=LOW;
    Query OK, 0 rows affected (0.04 sec)
    

    三、安装validate_password插件

    有些版本较低或未进行全部插件安装的MySQL,会发现如下情况:

    mysql> SHOW VARIABLES LIKE 'validate_password%';
    Empty set (0.00 sec)
    

    没看错,未安装~

    那么请执行如下命令安装即可:

    mysql> install plugin validate_password soname 'validate_password.so';
    Query OK, 0 rows affected (0.17 sec)
    

    卸载命令:

    mysql> UNINSTALL PLUGIN  validate_password;
    Query OK, 0 rows affected, 1 warning (0.01 sec)
    

    安装后可通过命令 show plugins 查看已安装的MySQL插件:状态为:ACTIVE表示已激活。

    mysql> show plugins;
    +----------------------------+----------+--------------------+----------------------+---------+
    | Name                       | Status   | Type               | Library              | License |
    +----------------------------+----------+--------------------+----------------------+---------+
    | binlog                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
    | mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL                 | GPL     |
    | sha256_password            | ACTIVE   | AUTHENTICATION     | NULL                 | GPL     |
    | MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
    | PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
    | MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
    | InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
    | INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_TEMP_TABLE_INFO     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | INNODB_SYS_VIRTUAL         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
    | CSV                        | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
    | MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
    | FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL                 | GPL     |
    | BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
    | partition                  | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
    | ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
    | ngram                      | ACTIVE   | FTPARSER           | NULL                 | GPL     |
    | validate_password          | ACTIVE   | VALIDATE PASSWORD  | validate_password.so | GPL     |
    +----------------------------+----------+--------------------+----------------------+---------+
    45 rows in set (0.00 sec)
    

    附、一张有故事的照片(十四)

    在这里插入图片描述


    是心灵的寄托

    我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:竹蜻蜓不会飞,邀请大家一同入驻:https://www.oschina.net/sharing-plan/apply

    展开全文
  • } /** * 静态方法校验使用,并且带分组的 * * @param object * @param group * @return */ public static String validate(Object object, Class group) { if (group == null) { return validate(object);...

    前言

    相信项目中做一些htttp接口,避免不了要对参数进行校验,大多数情况下,其实我们只是校验是否为NULL就可以了

    1、通过注解实现各种状态的字段

    1.1、引入依赖

    默认的版本是6.0.9.Final 使用过程中NotBlank会显示红色,所以这里讲版本降低,这样就不会显示红色了

    org.hibernate

    hibernate-validator

    validation-api

    javax.validation

    4.3.2.Final

    validation-api

    javax.validation

    1.2、注解

    1、如果变量传入的时候是NULL,则不会校验 类似于 @AssertTrue @Size(min=, max=) 等

    2、为了我们以后方便, 所有校验属性必须加组,方便阅读

    空检查

    @Null 验证对象是否为null

    @NotNull 验证对象是否不为null, 无法查检长度为0的字符串

    Hibernate

    @NotEmpty 检查约束元素是否为NULL或者是EMPTY.

    @NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.

    Booelan检查

    @AssertTrue 验证 Boolean 对象是否为 true

    @AssertFalse 验证 Boolean 对象是否为 false

    长度检查

    @Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内

    @Length(min=, max=) 验证字符串的长度

    日期检查

    @Past 验证 Date 和 Calendar 对象是否在当前时间之前

    @Future 验证 Date 和 Calendar 对象是否在当前时间之后

    @Pattern(regexp="[1-9]{1,3}", message="数量X: 必须为正整数,并且0

    数值检查,建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”时无法转换为int,但可以转换为Stirng为"",Integer为null

    @Min 验证 Number 和 String 对象是否大等于指定的值

    @Max 验证 Number 和 String 对象是否小等于指定的值

    @DecimalMax 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度

    @DecimalMin 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度

    @Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。

    Hibernate

    @Range(min=10000,max=50000,message="range.bean.wage")

    @Valid 对象传递参数的时候用到

    public String doAdd(Model model, @Valid AnimalForm form, BindingResult result){}

    其中 Hibernate Validator 附加的 constraint (也就是说如果下面的内容中,不引入hibernate包就不会起作用)

    @NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.

    @Email 验证是否是邮件地址,如果为null,不进行验证,算通过验证。

    @Length(min=, max=) 验证字符串的长度

    @NotEmpty 被注释的字符串的必须非空

    @Range(min=,max=,message=) 被注释的元素必须在合适的范围内

    1.3、config

    @Configuration

    public class ValidatorConfiguration {

    @Bean

    public MethodValidationPostProcessor methodValidationPostProcessor() {

    MethodValidationPostProcessor processor = new MethodValidationPostProcessor();

    processor.setValidator(validator());

    return processor;

    }

    @Bean

    public static Validator validator() {

    return ValidateUtils.validator;

    }

    }

    1.3、DTO类

    1.3.1、被校验对象 JavaBean

    package com.hlj.vialidate.data;

    import com.hlj.vialidate.ValidateGroup;

    import com.hlj.vialidate.inter.NameInclude;

    import lombok.Data;

    import org.hibernate.validator.constraints.Length;

    import org.hibernate.validator.constraints.Range;

    import javax.validation.Valid;

    import javax.validation.constraints.*;

    import java.util.List;

    /**

    * @author HealerJean

    * @version 1.0v

    * @Description

    * 注意点

    * 1、 下面出了判断空的注解之外,必须有值才回校验

    * 2、 所有校验属性必须加组,方便阅读

    * @ClassName JavaBean

    * @date 2019/4/17 14:08.

    */

    @Data

    public class JavaBean extends BaseBean{

    @NotBlank(message = "name 为空 ",groups = ValidateGroup.HealerJean.class)

    @Size(min = 1,max = 5,message = "name @Size(min = 1,max = 5 字符串长度 最低为1 最大为5",groups = ValidateGroup.HealerJean.class)

    private String name ;

    @Size(min = 1,max = 2, message = "list @Size(min = 1,max = 2 集合大小 最低为1 最大为2",groups = ValidateGroup.HealerJean.class)

    private List list;

    @Length(min = 1,max = 5,message = "@Length(min = 1,max = 5 字符串长度 最低为1 最大为5",groups = ValidateGroup.HealerJean.class)

    private String strLength;

    @Min(value = 5, message = "strNum @Min(value = 5,message = 字符串(数字的字符串大小判断)【数字类型的变量都可以】",groups = ValidateGroup.HealerJean.class)

    private String strNum ;

    @Range(min = 1,max = 10 ,message = "strRange @Range(min = 1,max = 10 最小为1,最大为10 ",groups = ValidateGroup.HealerJean.class)

    private String strRange ;

    @DecimalMin(value = "100.1",message = "小数值的判断,最小为 100.1",groups = ValidateGroup.HealerJean.class)

    private String strDecimal ;

    @Digits(integer = 2,fraction = 2,message = "strDigts @Digits(integer = 2,fraction = 2 整数最高2位,小数最高2位",groups = ValidateGroup.HealerJean.class)

    private String strDigts;

    @AssertFalse(message = " @AssertFalse 必须为false " ,groups = ValidateGroup.HealerJean.class)

    private Boolean assertFalse ;

    /**

    * 内部对象校验

    */

    @Valid

    @NotNull(message = "内部对象不能为空" ,groups = ValidateGroup.HealerJean.class)

    private InnerBean innerBean ;

    /**

    * 自定义注解校验

    */

    @NameInclude(message = "类型必须是type value必须是HealerJean" ,type = "Mail",groups = {ValidateGroup.HealerJean.class})

    private String myName ;

    }

    1.3.2、父类

    package com.hlj.vialidate.data;

    import com.hlj.vialidate.ValidateGroup;

    import lombok.Data;

    import org.hibernate.validator.constraints.NotBlank;

    /**

    * @author HealerJean

    * @version 1.0v

    * @ClassName BaseBean

    * @date 2019/6/11 16:38.

    * @Description

    */

    @Data

    public class BaseBean {

    @NotBlank(message = "父类String 不能为空",groups = ValidateGroup.HealerJean.class)

    private String fatherString;

    }

    1.3.3、内部使用使用类

    package com.hlj.vialidate.data;

    import com.hlj.vialidate.ValidateGroup;

    import lombok.Data;

    import org.hibernate.validator.constraints.Length;

    import org.hibernate.validator.constraints.NotBlank;

    /**

    * @author HealerJean

    * @version 1.0v

    * @ClassName InnerBean

    * @date 2019/6/11 16:39.

    * @Description

    */

    @Data

    public class InnerBean {

    @NotBlank(message = "innerBean不能为空",groups = ValidateGroup.HealerJean.class)

    @Length(max = 2,message = "innerNname 长度最长为2",groups = ValidateGroup.HealerJean.class)

    private String innerNname ;

    }

    1.4、校验工具类

    package com.hlj.utils;

    import com.hlj.data.general.AppException;

    import org.hibernate.validator.HibernateValidator;

    import javax.validation.ConstraintViolation;

    import javax.validation.Validation;

    import javax.validation.Validator;

    import java.util.Set;

    /**

    * @Description 校验工具

    */

    public class ValidateUtils {

    public static Validator validator;

    static {

    validator = Validation

    .byProvider(HibernateValidator.class)

    .configure()

    //快速返回模式,有一个验证失败立即返回错误信息

    .failFast(true)

    .buildValidatorFactory()

    .getValidator();

    }

    /**

    * 静态方法校验使用的

    *

    * @param object

    * @return

    */

    public static String validate(Object object) {

    if(object == null){

    throw new AppException("参数不完整");

    }

    Set> validate = validator.validate(object);

    return resultValidate(validate);

    }

    /**

    * 静态方法校验使用,并且带分组的

    *

    * @param object

    * @param group

    * @return

    */

    public static String validate(Object object, Class group) {

    if (group == null) {

    return validate(object);

    } else {

    Set> validate = validator.validate(object, group);

    return resultValidate(validate);

    }

    }

    private static String resultValidate(Set> validate) {

    if (!validate.isEmpty()) {

    final StringBuffer stringBuffer = new StringBuffer();

    validate.stream().forEach(

    item -> stringBuffer.append(item.getMessage()).append(","));

    stringBuffer.setLength(stringBuffer.length() - 1);

    return stringBuffer.toString();

    }

    return "success";

    }

    }

    1.5、组

    package com.hlj.vialidate;

    /**

    * @author HealerJean

    * @version 1.0v

    * @Description

    * @ClassName CoreValidateGroup

    * @date 2019/4/17 9:30.

    */

    public class ValidateGroup {

    public interface HealerJean {};

    }

    1.6 、测试

    1.6.1、Controller

    package com.hlj.moudle.validate;

    import com.hlj.data.general.ResponseBean;

    import com.hlj.utils.ValidateUtils;

    import com.hlj.vialidate.data.JavaBean;

    import com.hlj.vialidate.ValidateGroup;

    import io.swagger.annotations.*;

    import lombok.extern.slf4j.Slf4j;

    import org.springframework.http.MediaType;

    import org.springframework.stereotype.Controller;

    import org.springframework.web.bind.annotation.*;

    /**

    * @Description

    * @Author HealerJean

    * @Date 2018/3/22 上午10:22.

    */

    @ApiResponses(value = {

    @ApiResponse(code = 200, message = "访问正常"),

    @ApiResponse(code = 301, message = "逻辑错误"),

    @ApiResponse(code = 500, message = "系统错误"),

    @ApiResponse(code = 401, message = "未认证"),

    @ApiResponse(code = 403, message = "禁止访问"),

    @ApiResponse(code = 404, message = "url错误")

    })

    @Api(description = "demo控制器")

    @Controller

    @RequestMapping("hlj")

    @Slf4j

    public class VialidateController {

    @ApiOperation(value = "Post接口",

    notes = "Post接口",

    consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,

    produces = MediaType.APPLICATION_JSON_VALUE,

    response = ResponseBean.class

    )

    @PostMapping( value = "validate",produces="application/json;charset=utf-8")

    @ResponseBody

    public ResponseBean post(@RequestBody JavaBean JavaBean){

    String validate = ValidateUtils.validate(JavaBean,ValidateGroup.HealerJean.class);

    if(!"success".equals(validate)){

    log.info("错误信息:{}", validate);

    }

    return ResponseBean.buildSuccess(validate);

    }

    }

    1.6.2、测试样例

    POST http://localhost:8888/hlj/validate

    Content-Type: application/json; charset=UTF-8

    {

    "name":"1234",

    "strLength":"12345",

    "list": ["list","list2"],

    "strNum":"6",

    "strRange":"9",

    "strDecimal":"100.2",

    "strDigts":"15.66",

    "fatherString":"fatherString",

    "innerBean":{

    "innerNname":"in"

    },

    }

    2、自定注解实现

    可以用于字典校验

    4.1、自定义注解

    import javax.validation.Constraint;

    import javax.validation.Payload;

    import java.lang.annotation.*;

    /**

    * 自定义注解

    */

    @Constraint(validatedBy = {NameIncludeValidator.class})

    @Documented

    @Target( { ElementType.FIELD })

    @Retention(RetentionPolicy.RUNTIME)

    public @interface NameInclude {

    String message() ; //报错返回的信息

    Class>[] groups() default { }; //被哪个组校验

    String type() ; //自己定义的

    Class extends Payload>[] payload() default { };

    }

    4.2、自定义注解验证数据

    package com.hlj.vialidate.inter;

    import org.apache.commons.lang3.StringUtils;

    import javax.validation.ConstraintValidator;

    import javax.validation.ConstraintValidatorContext;

    /**

    * 校验数据

    */

    public class NameIncludeValidator implements ConstraintValidator {

    private String type;

    /**

    * 获取注解中的值

    * @param constraintAnnotation

    */

    @Override

    public void initialize(NameInclude constraintAnnotation) {

    type = constraintAnnotation.type();

    }

    /**

    * @param value 字段数据

    * @param context

    * @return

    */

    @Override

    public boolean isValid(String value, ConstraintValidatorContext context) {

    if(StringUtils.isBlank(value)){

    return true;

    }

    if("Mail".equals(type)&&"HealerJean".equals(value)){

    return true ;

    }else {

    return false ;

    }

    }

    }

    4.3、对象中自定义注解的使用

    /**

    * 自定义注解校验

    */

    @NameInclude(message = "类型必须是type value必须是HealerJean" ,type = "Mail",groups = {ValidateGroup.HealerJean.class})

    @NotNull(message = "自定义校验不能为空",groups = {ValidateGroup.HealerJean.class})

    private String myName ;

    4.4、测试

    POST http://localhost:8888/hlj/validate

    Content-Type: application/json; charset=UTF-8

    {

    "name":"1234",

    "strLength":"12345",

    "list": ["list","list2"],

    "strNum":"6",

    "strRange":"9",

    "strDecimal":"100.2",

    "strDigts":"15.66",

    "fatherString":"fatherString",

    "innerBean":{

    "innerNname":"in"

    },

    "myName":"HealerJean"

    }

    感兴趣的,欢迎添加博主微信

    哈,博主很乐意和各路好友交流,如果满意,请打赏博主任意金额,感兴趣的在微信转账的时候,备注您的微信或者其他联系方式。添加博主微信哦。

    请下方留言吧。可与博主自由讨论哦

    微信

    微信公众号

    支付宝

    展开全文
  • php扩展ZF——Validate扩展更新时间:2008年01月10日 20:27:49 作者:php扩展ZF——Validate扩展之前写了一片文章关于如何在ZF0.6版本下扩展ZF的。这篇应该说是类似的文章,但环境换成ZF1.0RC1版本了。在开始ZF扩展...

    php扩展ZF——Validate扩展

    更新时间:2008年01月10日 20:27:49   作者:

    php扩展ZF——Validate扩展

    之前写了一片文章关于如何在ZF0.6版本下扩展ZF的。这篇应该说是类似的文章,但环境换成ZF1.0RC1版本了。

    在开始ZF扩展之前,推荐先看看ZF手册中的一些命令规范(ZF推荐使用),同时希望读者对ZF有较好的理解。如果没有,可以先上PHPCHIAN的ZF版本详细了解,或者到phpeye查找相关资料。

    ZF的validator提供了强大的验证功能,但在实际的操作中还是过于烦琐。比如说验证邮件,是用ZF的代码如下

    require_once 'Zend/Validate/EmailAddress.php';

    $validator = new Zend_Validate_EmailAddress();

    if ($validator->isValid($email)) {

    // email appears to be valid

    } else {

    // email is invalid; print the reasons

    foreach ($validator->getMessages() as $message) {

    echo "$message\n";

    }

    }

    ?>

    有没有发现,还是很类似我们不使用ZF的验证方式。只不过ZF帮我们把邮件验证的细节封装好了。那么我们如何简化成这样效果呢?(下面是我扩展后的调用方式)

    $validate = new Phpbean_Validate();

    $validate -> set_breakOnFailure(false);

    $validate -> add('email',new Zend_Validate_EmailAddress(),'邮件地址不正确!');

    $validate -> add('username',new Zend_Validate_StringLength(3,15),'用户名长度必须在3到15之间!\'%value%\'不满足条件');

    $validate -> add('password',new Zend_Validate_StringLength(6,20),'密码长度必须在6到20之间!');

    $validate -> add('password',new Phpbean_Validate_isEqual($_POST['repassword']),'两次输入密码不匹配');

    $authcode = new Phpbean_Img_Code();

    $validate -> add('yanxue8_authcode',new Phpbean_Validate_isEqual($authcode->authcode($_POST['yanxue8_authcode_mdcode'],'DECODE')),'验证码不匹配!');

    if( !$validate -> validator($_POST) ){

    error_page('注册失败',$validate->getMessageText());

    }

    ?>

    用上面这种方式一方面代码清晰,另一方面也有利同意的出错处理。那么如何做到这样呢?

    关键是Phpbean_Validate这个类。

    其实实现起来很简单,Phpbean_Validate::add()方法是把一条条的验证规则加入进来。然后调用Phpbean_Validate::validator()来验证就OK了。

    具体实现步骤如下:

    首先,在zend的同级目录中增加一个phpbean文件夹,然后在里面增加一个Validator.php文件。

    然后,在validator.php文件加入Phpbean_Validate这个类的定义。注意(你可以修改成自己的文件名和路径名,但注意一定要和类的名称保持一致)。

    这里,我给出我的Phpbean_Validate类的实现过程,仅供参考。

    class Phpbean_Validate{

    protected $_fileds =array();

    protected $_message = array();

    protected $_breakOnFailure = true;

    public function set_breakOnFailure($value){

    $this->_breakOnFailure = $value;

    }

    public function add($key,$validate,$message='',$breakOnFailure=''){

    if( empty($breakOnFailure) ) $breakOnFailure = $this->_breakOnFailure;

    $this->_fileds[] = array($key,$validate,$message,$breakOnFailure);

    return $this;

    }

    public function validator($array = array()){

    if(empty($array)) $array = $_POST;

    if (is_array($this->_fileds)) {

    foreach ($this->_fileds as $filed){

    list($key,$validate,$message,$breakOnFailure) = $filed;

    if(empty($key)){

    if(!$validate){

    $this->_message[][] = $message;

    if($breakOnFailure) break;

    }

    continue;

    }

    if(!empty($message)) $validate->setMessage($message);

    if( !$validate->isValid($array[$key]) ){

    $this->_message[$key][] = $validate->getMessages();

    if($breakOnFailure) break;

    }

    }

    if(!empty($this->_message))return false;

    return true;

    }

    return true;

    }

    public function getMessage(){

    return $this->_message;

    }

    public function getMessageText(){

    $str = '';

    foreach ($this->_message as $ms){

    foreach ($ms as $m) $str .= $m[0]."\n";

    }

    return $str;

    }

    }

    ?>

    另外你还可以直接扩展一些验证规则类。下篇我再详细说。

    相关文章

    1a1b05c64693fbf380aa1344a7812747.png

    本文给大家分享的是个人对于PHP编码转换问题的理解以及处理方法,非常的简单实用,有需要的小伙伴可以参考下。2015-07-07

    4f55910a645b073bc4fc65dc10dc14bd.png

    最近做一个网页小偷程序的时候才发现file_get_content已经完全不能满足需求了。我觉得,在读取远程内容的时候,file_get_content除了使用比curl便捷以外,其他都没有curl好2014-05-05

    0ea3c7666119d5615e582f823fb3fad6.png

    这篇文章主要介绍了PHP过滤黑名单关键字的方法,通过保存过滤关键字到txt文件,再读取txt文件内容进行正则匹配替换来实现过滤功能,需要的朋友可以参考下2014-12-12

    4f96a78db829b1556ff16de21e013c7a.png

    今天小编就为大家分享一篇关于在PHP中输出JS语句以及乱码问题的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2019-02-02

    8cc1031babc6aff2319f1c6af8544aa0.png

    以下是对php中的strrpos函数与strripos函数的用法进行了详细的介绍,需要的朋友可以过来参考下2013-08-08

    0c932a99bb7b6f23c937db507070cc7b.png

    这篇文章主要为大家详细

    介绍了php图像验证码的生成代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-06-06

    cca732bf65a93ed2ec0ac80c638460fe.png

    ExtJS与PHP、MySQL实现存储的方法,需要的朋友可以参考下,里面有详细的步骤。2010-04-04

    2d9f31f2af7b675a3d153d2b7f1035a7.png

    array_splice() 函数与 array_slice() 函数类似,选择数组中的一系列元素,但不返回,而是删除它们并用其它值代替2011-11-11

    b452cee8ec5cd9e58ab98eba17281e59.png

    今天想提一下如何配置PHPMyAdmin,因为在开发者,是比较普遍用到的。2009-05-05

    f4838ec7e2d4da28e0b57d4e852dadd4.png

    这篇文章主要介绍了PHP程序设计中的MVC编程思想,对于深入理解MVC程序设计思想有一定的帮助,需要的朋友可以参考下2014-07-07

    最新评论

    展开全文
  • validate的使用

    千次阅读 2021-02-28 18:04:09
    // Validate and return a String String result = validator.validate("abc-def"); // Validate and return a String[] String[] groups = validator.match("abc-def"); System.out.println(valid); System.out....
  • } 这里涵盖了validate注解中的@NotNull、@NotBlank、@Min、@Max还有个自定义的validate注解@AgeAdultCompare。 除了自定义的validate注解以外,其他的几个注解想必大家一眼就能看出来是什么意思,这里就不再赘述。 ...
  • jQuery(六)插件、Validate验证提交表单、submitHandler、更改错误信息显示的位置、required、Validator、内置验证方式表、validate ()的可选项汇总 文章目录jQuery(六)插件、Validate验证提交表单、...
  • Spring boot 结合hibernate-validate校验数据学习 spring boot的web起步依赖中已经引入的hibernate-validate数据校验依赖,只要项目依赖的web起步依赖就无需再引入依赖。 依赖引入 <dependency> <groupId&...
  • HTML validate分享

    2021-06-30 02:57:34
    HTML validate是指HTML验证。它是通过与标准HTML规则进行比较的方式,分析HTML文档、标记出错误和非标准代码的处理过程。Web页面使用HTML进行渲染,而HTML本身采用了HTML规范作为其规则和标准。通过验证HTML代码...
  • plugin-load=validate_password.dll validate-password = FORCE_PLUS_PERMANENT validate_password_dictionary_file = "D:/mysql57/lib/plugin/dictionary_file" validate_password_policy = STRONG测试结果: ...
  • 1、validate: 对整个表单进行校验的方法,参数为一个回调函数。 该回调函数会在校验结束后被调用,并传入两个参数:是否校验成功和未通过校验的字段。 若不传入回调函数,则会返回一个 promise Function(callback...
  • 每次写博客都觉得自己话多,我第一次用VeeValidate,首先打开百度… 发现好多安装VeeValidate没有说注意安装的版本, 安装插件 cnpm install vee-validate#2.0.0-beta.13 --save 我一开始用npm install vee-...
  • validate如何使用

    千次阅读 2021-01-27 06:26:40
    一、 validate的使用步骤 引入jquery.min.js 引入 jquery.validate.js 页面加载后对表单进行验证 $("#表单id名").validate({}) 页面加载时,让validate生效。 在validate中的rules中编写验证规则(格式...
  • 搜索很久,没有发现有关于vue+VeeValidate部分校验的。自己写一个。主要是两个场景:1. 校验范围内,所有的字段。2. 校验全局所有字段。主要方法:1.validate(fields, scope)2. validateAll(fields)场景: 遍历得到...
  • use think\Validate;class Index{public function index(){return view();}// 用户登录public function login(){return view();}// 定义ajax处理方法public function checkLoginData(){$status...
  • vue + validate 表单校验

    2021-11-02 11:40:50
    在uitls文件夹中新建一个validate.js文件 validate.js文件定义需要验证的方法 在所需要的页面中引入这个文件 在用于校验的rules中使用它 validate.js 中定义验证规则 // 只能为数字验证 export function ...
  • $("#form-activity-add").validate({ focusCleanup: true, rules:{ actDateRange:{ timeRange:true, } } }); $(function(){ jQuery.validator.addMethod("timeRange", functi
  • $validate = new Validate($rule,$msg); if(!$validate->check($params)){ return json(array('msg'=>$validate->getError())); } 自定义验证器设置 1.首先创建一个控制器的类 2.编辑该控制器 3.在需要使用到的控制...
  • 并且,如果存在错误的话,模型save方法默认调用的验证方法Validate也不会通过,这样也就不会完成表单提交。 总结 Yii2 的数据model层的操作,是以数据表作为基础的。 gii能默认根据数据库字段自动写入默认验证规则 ...
  • /** * 方法参数校验异常 Validate * @param request * @param ex * @return */ @ExceptionHandler(ConstraintViolationException.class) @ResponseBody public RestResultWrapper handleValidationException...
  • 下面由thinkphp框架教程栏目给大家介绍Thinkphp5使用validate实现验证功能,希望对需要的朋友有所帮助!作为前端er,对于验证这块有着切身的体会,虽然逐渐得心应手,但始终没有一个内置的功能拿来就能用。tp5恰好...
  • 我们在输入框的周围加了一层 ,同时为了确保错误信息可以显示在输入框的下方,我们还添加了一个 新增的JS代码 <script> $().ready(function() { $("#login").validate({ errorPlacement: function(error, element) { ...
  • el-form resetFields无效和validate无效的可能原因及解决方法问题导入简单实例1、官方案例resetFields 失败可能原因2、个人案例resetFields失效及解决办法先添加后编辑先编辑后添加validate失效及解决办法结尾 ...
  • MySQL 密码参数配置与修改 validate_password场景通过root用户创建travel_agency数据库,目标是,新建一个用户然后对仅对该用户开放travel_agency数据库而非其他数据库过程创建对所有ip开放的用户sxCEATE USER 'xx'@...
  • SQL> ALTER TABLE t_part MODIFY CONSTRAINT pk_part DISABLE VALIDATE; Table altered. SQL> quit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the ...
  • 使用validate验证框架

    2021-02-26 10:25:19
    主要是两个配置文件和资源文件的修改,然后就是在jsp中输出验证的结果validator-rules.xml是验证注册类,用于定义验证逻辑,它的部分代码className="org.apache.struts.util.StrutsValidator"method=...
  • $("#checkForm").validate({//######### rules : { username : { required : true, }, idNumber : { required : true, isIdCardNo:true, }, name : { required : true, } }, messages : { username : { required : ...
  • Thinkphp5使用validate实现验证功能的方法发布时间:2020-12-14 13:42:12来源:亿速云阅读:81作者:小新这篇文章给大家分享的是有关Thinkphp5使用validate实现验证功能的方法的内容。小编觉得挺实用的,因此分享给...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 286,386
精华内容 114,554
关键字:

validate