Spring拥有自己的校验框架,使用起来非常的简便。本次主要使用的是继续Validator接口来实现的数据校验。最终配合i18n来实现不同语言版本的校验信息的显示。
环境说明,sts3.8.2+maven3.3.9+tomcat8.5
实现步骤:
1.新增mavenweb项目,在pom中添加依赖
org.springframework
spring-webmvc
4.3.6.RELEASE
2.在web.xml中配置SpringMVC的配置文件
springDispatcherServlet
org.springframework.web.servlet.DispatcherServlet
1
springDispatcherServlet
/
3.在SpringMVC配置文件WEB-INF/springDispatcherServlet-servlet.xml中设置
class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
p:basename="/WEB-INF/msg"/>
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/"p:suffix=".jsp"/>
4.新增pojo类Student
packagecom.qfedu.pojo;
publicclassStudent{
privateintsid;
privateStringname;
privateintage;
privatedoublescore;
publicintgetSid(){
returnsid;
}
publicvoidsetSid(intsid){
this.sid=sid;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicdoublegetScore(){
returnscore;
}
publicvoidsetScore(doublescore){
this.score=score;
}
}
5.新增校验类StudentValidater实现Spring的Validate接口5
packagecom.qfedu.validate;
importorg.springframework.validation.Errors;
importorg.springframework.validation.ValidationUtils;
importorg.springframework.validation.Validator;
importcom.qfedu.pojo.Student;
publicclassStudentValidateimplementsValidator{
@Override
publicbooleansupports(Classclazz){
returnStudent.class.isAssignableFrom(clazz);
}
@Override
publicvoidvalidate(Objecttarget,Errorserrors){
Studentstu=(Student)target;
ValidationUtils.rejectIfEmpty(errors,"name","stu.name");
ValidationUtils.rejectIfEmpty(errors,"age","stu.age");
ValidationUtils.rejectIfEmpty(errors,"score","stu.score");
ValidationUtils.rejectIfEmpty(errors,"sid","stu.sid");
intage=stu.getAge();
if(age<0||age>200){
errors.rejectValue("age","stu.age.invalid");
}
doublescore=stu.getScore();
if(score<0||score>100){
errors.rejectValue("score","stu.score.invalid");
}
}
}
6.新增控制器类StudentController
packagecom.qfedu.controller;
importorg.springframework.stereotype.Controller;
importorg.springframework.ui.Model;
importorg.springframework.validation.BindingResult;
importorg.springframework.web.bind.annotation.GetMapping;
importorg.springframework.web.bind.annotation.PathVariable;
importorg.springframework.web.bind.annotation.PostMapping;
importcom.qfedu.pojo.Student;
importcom.qfedu.validate.StudentValidate;
@Controller
publicclassStudentController{
//任何请求将都被该请求对应的页面来处理
@GetMapping("/{view}")
publicStringgetView(@PathVariableStringview,Modelmodel){
//在model中添加student对象,用来在表单中显示和处理对象的数据
model.addAttribute("student",newStudent());
returnview;
}
@PostMapping("/saveStudent")
publicStringsaveStudent(Studentstudent,BindingResulterrors,Modelmodel){
StudentValidatesv=newStudentValidate();
sv.validate(student,errors);
if(errors.hasErrors()){
return"saveStudent";
}
return"success";
}
}
6.WEB-INF下新增两个msg文件以支持中文(msg_zh_CN.properties)和英文(msg_en_US.properties)的校验,如果有需要还是自行按照规则添加该文件
#msg_en_US.properties
stu.name=namemustnotbeempty!
stu.age=agemustnotbeempty!
stu.score=scoremustnotbeempty!
stu.sid=sidmustnotbeempty!
stu.age.invalid=ageisnotavailable,mustbebetween0-200
stu.score.invalid=scoreisnotavailable,mustbebetween0-100
#msg_zh_CN.properties
#后面的东西全部是上面对应key的中文翻译,自动被转成Unicode编码
stu.name=\u59D3\u540D\u4E0D\u80FD\u4E3A\u7A7A!
stu.age=\u5E74\u9F84\u4E0D\u80FD\u4E3A\u7A7A!
stu.score=\u6210\u7EE9\u4E0D\u80FD\u4E3A\u7A7A!
stu.sid=\u5B66\u751F\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A!
stu.age.invalid=\u5E74\u9F84\u5FC5\u987B\u57280-200\u4E4B\u95F4
stu.score.invalid=\u6210\u7EE9\u5FC5\u987B\u57280-100\u4E4B\u95F4
7.在webapp下新增saveStudent.jsp页面
sid:*
name:*
age:*
score:*
8.在webapp下新增success.jsp
thisissuccesspage.
9.整体项目的结构图片
10.整体项目的运行结果
a.英文不合法校验
b.中文不合法校验
c.校验成功页面
以上就是关于扣丁学堂Java培训之Spring校验框架代码的详细介绍,最后想要了解更多关于Java发展前景趋势,请关注扣丁学堂Java培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的Java视频教程系统,通过千锋扣丁学堂金牌讲师在线录制的第一套自适应Java在线视频课程系统,让你快速掌握Java从入门到精通开发实战技能。扣丁学堂Java技术交流群:850353792。