springMVC注解方式的校验

除了利用前端框架对表单里的数据校验外,可以利用springMVC框架对数据进行校验,下面总结一下如何校验

第一步:准备相应的jar包,这里就不列举了,可以参照下面类的导入包,就是需要的jar包

第二步:写一个pojo,需要检验的字段上面写上相应的注解

package iss.com.nanhang;

import java.util.Date;



import javax.validation.constraints.Future;    
import javax.validation.constraints.Past;
import javax.validation.constraints.Pattern;


import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.DateTimeFormat;


public class POJO {
@NotBlank(message="blank ,用户Id不能为空-1")
@Pattern(regexp="^\\w{6}$",message="为6为英文或者数字")
private String userId;
@Pattern(regexp="^[\\u4e00-\\u9fa5]{2,6}$",message="姓名只能2--6汉字")
private String name; 
@Past(message="日期只能当前日期之前。。。")
@Future(message="日期只能当前日期之后。。。")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birthday; 
@Range(max=3,min=1,message="身高只在1.0--3.0之间")
private Double height; 
@Range(max=200,min=40,message="体重只在40.0--200.0之间")
private Double weight;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Double getHeight() {
return height;
}
public void setHeight(Double height) {
this.height = height;
}
public Double getWeight() {
return weight;
}
public void setWeight(Double weight) {
this.weight = weight;

}

第三步:写一个校验的控制器


/**
 * 
 */
package iss.spmvc.valid_ann;


import java.util.Map;


import javax.validation.Valid;


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


import qh.Log;


/**
 * 作者:南航
 *2017年11月27日,上午11:08:56
 */
@Controller
@RequestMapping("/valid1")
public class TestValidAnnController {
public TestValidAnnController() {
Log.getLog().info("TestValidAnnController?");
}
@RequestMapping("/open.html")
public ModelAndView open(){   //ModelAndView向前台传递数据
ModelAndView mv=new ModelAndView("/user/TestValid1");
ValidAnnPOJO pojo=new ValidAnnPOJO();
mv.addObject("po", pojo);

return mv;
}
@RequestMapping("/open2.html")
public String open2(Model mo){   //Model的方式向前台传递数据
ValidAnnPOJO po=new ValidAnnPOJO();
mo.addAttribute("po", po);
return "/user/TestValid1";
}
@RequestMapping("/open3.html")
public String open3(Map map){   //Map的方式向前台传递数据
ValidAnnPOJO po=new ValidAnnPOJO();
map.put("po", po);
return "/user/TestValid1";
}
@RequestMapping("/save.html")
public String save(@Valid @ModelAttribute("po") ValidAnnPOJO pojo, BindingResult bind){
//public String save(@Valid @ModelAttribute("po") ValidAnnPOJO pojo, BindingResult bind,Model mo){
// Model可以省略,当前面写了注解的时候 @ModelAttribute("po")
//@Valid @Validated 二选其一
int errors=bind.getErrorCount();
Log.getLog().info(
"出错个数="+errors+
",="+pojo.getUserId()+
",="+pojo.getName()+
",="+pojo.getBirthday()+
",="+pojo.getHeight()+
",="+pojo.getWeight()
);
//mo.addAttribute("po", pojo);当上面写了@ModelAttribute("po")的时候,前面的可以省略

return "/user/TestValid1";
}


}

注解方式的校验算是最简单了,上面只是部分的内容,如若有需求的,可以私信我

猜你喜欢

转载自blog.csdn.net/qq_34520606/article/details/78653764