SpringMVC 之 Validation介绍—— 使用Validator接口进行验证

来源:互联网 发布:知乎中国人到底有多穷 编辑:程序博客网 时间:2024/05/21 12:40


/*--------------------------------Java实体类 -----------------------------*/

public class Sys_user {    private String id;            //主键    private String usercode;    //用户名    private String name;        //姓名    private String pwd;            //密码    private String email;        //邮箱    private String tel;            //电话    private String org_id;        //企业id    private Integer role_id;    //角色ID    private String is_audit;    //是否审核    private Date reg_date;        //注册时间    private Date audit_date;    //审核时间        //辅助字段  企业名称    private String company_name;//企业名称    private String company_address;//企业地址    private String againpwd;    //确认密码        private String role_name;    //角色名称    private String is_admin;    //是否管理员        private Integer declare_num;//申报产品数        public String getCompany_address() {        return company_address;    }    public void setCompany_address(String company_address) {        this.company_address = company_address;    }    public String getAgainpwd() {        return againpwd;    }    public void setAgainpwd(String againpwd) {        this.againpwd = againpwd;    }    public String getCompany_name() {        return company_name;    }    public void setCompany_name(String company_name) {        this.company_name = company_name;    }    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getUsercode() {        return usercode;    }    public void setUsercode(String usercode) {        this.usercode = usercode;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPwd() {        return pwd;    }    public void setPwd(String pwd) {        this.pwd = pwd;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }    public String getTel() {        return tel;    }    public void setTel(String tel) {        this.tel = tel;    }    public String getOrg_id() {        return org_id;    }    public void setOrg_id(String org_id) {        this.org_id = org_id;    }    public Integer getRole_id() {        return role_id;    }    public void setRole_id(Integer role_id) {        this.role_id = role_id;    }    public String getRole_name() {        return role_name;    }    public void setRole_name(String role_name) {        this.role_name = role_name;    }    public String getIs_admin() {        return is_admin;    }    public void setIs_admin(String is_admin) {        this.is_admin = is_admin;    }    public String getIs_audit() {        return is_audit;    }    public void setIs_audit(String is_audit) {        this.is_audit = is_audit;    }    public Integer getDeclare_num() {        return declare_num;    }    public void setDeclare_num(Integer declare_num) {        this.declare_num = declare_num;    }    public Date getReg_date() {        return reg_date;    }    public void setReg_date(Date reg_date) {        this.reg_date = reg_date;    }    public Date getAudit_date() {        return audit_date;    }    public void setAudit_date(Date audit_date) {        this.audit_date = audit_date;    }  }


/*--------------------------------Java后台工具类代码 -----------------------------*/

@Componentpublic class SysUserValidat implements Validator{/**************************************************************************    调用service    如果未使用到spring管理的service层则这部分可省略***************************************************************************/        @Autowired    private UserService userService;    private static SysUserValidat  sysUserValidat ;    //关键点1   静态初使化 一个工具类  这样是为了在spring初使化之前        public void setUserService(UserService  userService) {          this.userService = userService;      }    public void setXhOrgService(XhOrgService  xhorgService) {          this.xhorgService = xhorgService;      }        //关键二   通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作    @PostConstruct        public void init() {            sysUserValidat = this;            sysUserValidat.userService = this.userService;       // 初使化时将已静态化的testService实例化    }//    这样下面的代码中就可以通过 testUtils.testService 来调用service处理/************************************************************************/                public boolean supports(Class<?> clazz) {          return Sys_user.class.equals(clazz);      }        public void validate(Object obj, Errors errors) {          Sys_user sys_user = (Sys_user)obj;                        //此处用到spring管理的service层。。。看需求,如果不需要用到service,就不需要写。        Sys_user user=sysUserValidat.userService.queryUserByCode(sys_user.getUsercode());                        //用户名        if(StringUtils.isEmpty(sys_user.getUsercode())){            errors.rejectValue("usercode","usercode.null");        }else if(sys_user.getUsercode().length() < 5){            errors.rejectValue("usercode", "usercode.short");        }else if(sys_user.getUsercode().length() > 32){            errors.rejectValue("usercode", "usercode.long");        }else if(user!=null&&sys_user.getUsercode().equals(user.getUsercode())){            errors.rejectValue("usercode", "usercode.repeat");        }                //姓名        if(StringUtils.isEmpty(sys_user.getName())){            errors.rejectValue("name","name.null");        }else if(sys_user.getName().length()>16){            errors.rejectValue("name","name.long");        }                //密码        if(StringUtils.isEmpty(sys_user.getPwd())){            errors.rejectValue("pwd","pwd.null");        }else if(sys_user.getPwd().length() <6){              errors.rejectValue("pwd","pwd.short");        }else if(sys_user.getPwd().length() >16){            errors.rejectValue("pwd", "pwd.long");          }                //确认密码        if(StringUtils.isEmpty(sys_user.getAgainpwd())){            errors.rejectValue("againpwd", "againpwd.null");        }        else if(!(sys_user.getAgainpwd().equals(sys_user.getPwd()))){            errors.rejectValue("againpwd", "againpwd.inconformity");        }                //邮箱        String pattern = "\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}";        Pattern r = Pattern.compile(pattern);        Matcher m = r.matcher(sys_user.getEmail());        if(!(StringUtils.isEmpty(sys_user.getEmail())) && m.matches()==false){            errors.rejectValue("email","email.error");        }else if(sys_user.getEmail().length()>32){            errors.rejectValue("email","email.long");        }                //验证手机号        String tel_pattern = "(13\\d|14[57]|15[^4,\\D]|17[13678]|18\\d)\\d{8}|170[0589]\\d{7}";        Pattern telr = Pattern.compile(tel_pattern);        Matcher telm = telr.matcher(sys_user.getTel());        if(!(StringUtils.isEmpty(sys_user.getTel())) && telm.matches()==false){            errors.rejectValue("tel","tel.error");        }                //企业地址验证        if(sys_user.getCompany_address().length()>128){            errors.rejectValue("company_address","company_address.long");        }    }      }



/*-----------------------------------------Java后台代码 --------------------------------------*/
@Controllerpublic class RegController   {        @InitBinder      public void initBinder(WebDataBinder binder) {          binder.setValidator(new SysUserValidat());      }          @RequestMapping(value = "/reg",method = RequestMethod.GET)    public String index(Model model, HttpServletRequest request) throws ParseException {        model.addAttribute(new Sys_user());          return "/www/reg";                    }        @RequestMapping(value = "/reg/register",method = RequestMethod.POST)    public String index(@Validated Sys_user sys_user, BindingResult br,Model model, HttpServletRequest request) throws ParseException {        if(br.hasErrors()) {            //出现错误             return "/www/reg";          }else{            //未出现错误正常注册                        。。。。。。                        return "redirect:/ucenter/main";                                                    }            }    }




/*---------------------------messages_zh_CN.properties------------------------*/

usercode.null.usercode=\u002a\u0009\u4f01\u4e1a\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a  usercode.short.usercode=\u002a\u0009\u4f01\u4e1a\u540d\u79f0\u4e0d\u80fd\u5c11\u4e8e\u0035\u4f4dusercode.repeat.usercode=\u002a\u0009\u4f01\u4e1a\u5df2\u7ecf\u6ce8\u518cpwd.null.pwd=\u002a\u0009\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7apwd.long.pwd=\u002a\u0009\u0036\u002d\u0031\u0036\u4f4d\u6570\u5b57\u6216\u5b57\u6bcd\u7ec4\u6210pwd.short.pwd=\u002a\u0009\u0036\u002d\u0031\u0036\u4f4d\u6570\u5b57\u6216\u5b57\u6bcd\u7ec4\u6210againpwd.inconformity.againpwd=\u002a\u0009\u4e24\u6b21\u5bc6\u7801\u4e0d\u4e00\u81f4againpwd.null.againpwd=\u002a\u0009\u786e\u8ba4\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7aemail.error.email=\u002a\u0009\u90ae\u7bb1\u683c\u5f0f\u9519\u8beftel.error.tel=\u002a\u0009\u624b\u673a\u53f7\u683c\u5f0f\u9519\u8befcompany_name.null.company_name=\u002a\u0009\u4f01\u4e1a\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7acompany_name.repeat.company_name=\u002a\u0009\u8be5\u4f01\u4e1a\u5df2\u7ecf\u6ce8\u518cname.null.name=\u002a\u0009\u59d3\u540d\u4e0d\u80fd\u4e3a\u7a7ausercode.long.usercode=\u002a\u0009\u4f01\u4e1a\u540d\u79f0\u8fc7\u957fname.long.name=\u002a\u0009\u59d3\u540d\u8fc7\u957femail.long.email=\u002a\u0009\u90ae\u7bb1\u8fc7\u957fcompany_address.long.company_address=\u002a\u0009\u4f01\u4e1a\u5730\u5740\u8fc7\u957f


/*------------------------applicationContext.xml配置读取properties----------------------*/

<!-- 配置properties --><bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">    <property name="basename">    <value>messages</value>    </property></bean>


/*-----------------------------------------前台代码-------------------------------------------*/
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@taglib prefix="sf" uri="http://www.springframework.org/tags/form"%><sf:form class="m-t" role="form" modelAttribute="sys_user" action="reg/register" method="post">    <div class="form-group">        <sf:input path="usercode" class="form-control" type="text" placeholder="企业名称"></sf:input>        <div style="color:red;"><sf:errors path="usercode"></sf:errors></div>    </div>    <div class="form-group">        <sf:input path="name" class="form-control" type="text" placeholder="姓名"></sf:input>        <div style="color:red;"><sf:errors path="name"></sf:errors></div>    </div>    <div class="form-group">        <sf:input path="pwd" class="form-control" type="password" placeholder="密码"></sf:input>        <div style="color:red;"><sf:errors path="pwd"></sf:errors></div>    </div>    <div class="form-group">        <sf:input path="againpwd" class="form-control" type="password" placeholder="确认密码"></sf:input>        <div style="color:red;"><sf:errors path="againpwd"></sf:errors></div>    </div>    <div class="form-group">        <sf:input path="email" class="form-control" type="text" placeholder="邮箱"></sf:input>        <div style="color:red;"><sf:errors path="email"></sf:errors></div>    </div>    <div class="form-group">        <sf:input path="tel" class="form-control" type="text" placeholder="手机号"></sf:input>        <div style="color:red;"><sf:errors path="tel"></sf:errors></div>    </div>    <div class="form-group">        <sf:input path="company_address" class="form-control" type="text" placeholder="企业地址"></sf:input>        <div style="color:red;"><sf:errors path="company_address"></sf:errors></div>    </div>            <button type="submit" class="btn btn-primary block full-width m-b">注册</button>    <p class="text-muted text-center"><small>已经有一个账户?</small></p>    <a class="btn btn-sm btn-white btn-block" href="logout">登录</a>    </sf:form>











原创粉丝点击