数据校验框架

来源:互联网 发布:上海整合网络推广 编辑:程序博客网 时间:2024/06/06 18:51

数据校验框架

1.JSR 303

SR 303JavaBean数据合法性校验所提供的标准框架,它已经包含在Java EE 6.0中。JSR 303通过在Bean属性上标注类似于@NotNull@Max等标准的注解指定校验规则,并通过标准的验证接口对Bean进行验证。

      你可以通过http://jcp.org/en/jsr/detail?id=303了解JSR 303的详细内容。

 

    解

功能说明

@Null

 被注释的元素必须为 null

@NotNull

 被注释的元素必须不为 null

@AssertTrue

 被注释的元素必须为 true

@AssertFalse

 被注释的元素必须为 false

@Min(value)

 被注释的元素必须是一个数字,其值必须大于等于指定的最小值

@Max(value)

 被注释的元素必须是一个数字,其值必须小于等于指定的最大值

@DecimalMin(value)

 被注释的元素必须是一个数字,其值必须大于等于指定的最小值

@DecimalMax(value)

 被注释的元素必须是一个数字,其值必须小于等于指定的最大值

@Size(max, min)

 被注释的元素的大小必须在指定的范围内

@Digits (integer, fraction)

 被注释的元素必须是一个数字,其值必须在可接受的范围内

@Past

 被注释的元素必须是一个过去的日期

@Future

 被注释的元素必须是一个将来的日期

@pattern

验证注解的元素值与指定的正则表达式匹配

@DateTimeFormat(pattern=”yyyy-MM-dd”)

时间格式

加入依赖:

 

<!-- jsr 303验证 -->    <dependency>    <groupId>org.hibernate</groupId>    <artifactId>hibernate-validator</artifactId>    <version>4.3.2.Final</version></dependency>

2.@NotNull@NotEmpty

@NotNull 属性名!=null

@NotEmpty 属性名!=null && !属性名.equals(“”)

3.后台验证步骤

 

 1.javabeen添加验证注解 * 2.action中使用@valid表示javabean 使用Errors或者BindingResult判断是否检验失败 * 3.出现jar包冲突4.3.2版本注:在springmvc中使用标签和国际化都要spring的支持1.引入标签:<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>2.配置显示错误注解<form:errors path="user.pass"></form:errors><!-- 路径=类名.属性名 -->3.编程式设置错误信息:@RequestMapping(value="/reg",method=RequestMethod.POST)public String reg(@ModelAttribute("user") @Valid UserInfo user,BindingResult error){//@ModelAttribute("user"):改变名称if(!user.getPass().equals(user.getRepass())){error.addError(new FieldError("user", "repass", "密码不一致"));//"user":对象;"repass":显示位置;"密码不一致":显示信息}}案例:实体类:@NotEmpty(message="用户名不能为空")private String userName;@NotEmpty(message="密码不能为空")private String pass;@NotEmpty(message="确认密码不能为空")private String repass;jsp页面:  <form action="<%=path %>/reg" method="post">     用户名    :<input type="text" name="userName"/>    <font color="red"><form:errors path="user.userName"></form:errors></font><br/><br/>    密码       :<input type="text" name="pass"/><font color="red">    <form:errors path="user.pass"></form:errors></font><br/><br/>确认密码:<input type="text" name="repass"/><font color="red">    <form:errors path="user.repass"></form:errors></font><br/><br/></form> Controller层:@RequestMapping(value="/reg",method=RequestMethod.POST)public String reg(@ModelAttribute("user") @Valid UserInfo user,BindingResult error){if(!user.getPass().equals(user.getRepass())){error.addError(new FieldError("user", "repass", "密码不一致"));}}}

4.访问数据模型

springmvc中Model相关对象是处理和数据相关的对象 * @ModelAttribute 重命名 参数数据 * Model(ModelMap|Map)传递数据到视图(request,setAttribute) * ModelMap传递数据到视图 * ModelAndView绑定数据到视图(ModelMap用于传递数据View对象用于跳转)1.Map:@RequestMapping(value="/case",method=RequestMethod.GET)public String case1(Map map){map.put("sex", "model");return "lesson03/res.jsp";}2.ModelAndView:@RequestMapping(value="/case2",method=RequestMethod.GET)public ModelAndView case2(){ModelAndView model=new ModelAndView();model.setViewName("lesson03/res.jsp");model.addObject("sex","boy");return model;}在jsp页面中获取${requestScope.sex }3.访问数据模型:@ModelAttribute@SessionAttributes("user")@Controllerpublic class SessionController {//手动实例化@ModelAttribute("user")public User getUser(){User user=new User();return user;}/** * 请求转发 forward 不需要任何处理 * 请求重定向 redirect:使用SesionAttribute方式 用于在重定向中传值 * 将值存储在session中用完记得清除 * @param user * @return */@RequestMapping(value="/s1",method=RequestMethod.GET)public String case1(@ModelAttribute("user") User user){return "redirect:/s2";}@RequestMapping(value="/s2",method=RequestMethod.GET)public String case2(String id,Map map,HttpServletResponse response,SessionStatus status) throws IOException{User user=(User)map.get("user");response.getWriter().println(user.getId());status.setComplete();//清除return null;}} 


 

阅读全文
0 0
原创粉丝点击