springMVC注解式校验

时间:2021-08-30 20:32:04

springMVC注解式校验

使用步骤:
1.搭建好springMVC工程,并能正常访问其中任何一个方法。
2.添加hibernate-validator-4.3.0.Final-dist.zip,validation-api-1.1.0.Alpha1.jar到lib文件夹下,如果是maven工程,则需要添加此jar包依赖。
3.在要进行校验的javaBean上添加注解

private static final long serialVersionUID = 1L;
    @Length(min = 6, max = 18, message = "用户名称只能是6-18位")
    private String username;
    @Pattern(regexp = "^[A-Za-z0-9]{6,18}$", message = "密码只能是6-18位")
    private String password;
    @Max(value = 60, message = "年龄只能小于或等于60岁")
    @Min(value = 18, message = "年龄只能大于或等于18岁")
    private Integer age;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Past(message = "生日只能是今天之前的")
    private Date birth;
    @Email(regexp = "^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$", message = "邮箱地址不正确,例如:ddd@ddd.com")
    private String email;
            4.在controller中的方法中必须添加一个入参是Errors,此对象封装了校验的错误信息,要使校验起作用还必须添加@valid注解,注解才能起作用
@RequestMapping("/test")
    public String test(@Valid @ModelAttribute("user") User user, Errors errors) {
        System.out.println("test...");
        System.out.println(user + " 前");
        if (errors.hasErrors()) {
            System.out.println("出错了!!!");
            return "login";
        } else {
            System.out.println(user + " 后");
            return "success";
            // return "forward:login"; //请求转发
            // return "redirect:login";//重定向
        }
    }
            5.在页面中使用spring提供的一套标签来获取错误信息
    <form:form commandName="user" action="user/test">
        用户名称:<form:input path="username"/> <form:errors path="username" cssClass="errorClass" /><br>
        用户口令:<form:password path="password"/><form:errors path="password" cssClass="errorClass" /><br>
        用户年龄:<form:input path="age"/><form:errors path="age" cssClass="errorClass" /><br>
        用户生日:<form:input path="birth"/><form:errors path="birth" cssClass="errorClass" /><br>       
        用户邮箱:<form:input path="email"/><form:errors path="email" cssClass="errorClass" /><br>
        <input type="submit" value="提交2">   
   </form:form>

注意:不能写一个按钮或超链接等前端技术直接跳到错误信息提示页面,否则校验失效,应该先让跳进任何一个方法,然后从方法中再跳回此页面,目的就是为了创建校验对象。

    @RequestMapping("/index")
    public String test(@ModelAttribute("user") User user) {
        System.out.println("test...");
        System.out.println(user);
        return "login";
    }

至此校验完成!

created by 杜丹东

springMVC注解式校验