"); //-->
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。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
[求助]在uClinux下需不需要自己写i2c的驱动
KA2311 (玩具)无线电遥控接收控制调节电路
双环传动:深耕传动布局新能源与机器人赛道
使用模拟预失真进行射频功率放大器线性化
贸泽电子蝉联2024年度华强电子网优质供应商奖
《嵌入式系统设计》17-嵌入式系统设计U-BOOT(跳转到stage2的C入口点到嵌入式系统Bootloader)
苹果、Meta收到欧盟数字市场法首张罚单
禾川科技:技术驱动工业机器人自动化领军者
世界纪实摄影之父——亨利·卡蒂埃.布列松逝世!发其代表作纪念
[求助]
《嵌入式系统设计》15-嵌入式系统设计U-BOOT(Bootloader的一些介绍)
SK海力士Q1利润飙升158% 或取代三星成AI内存芯片新王
绿的谐波:机器人精密传动领域的领军者
基于条形码技术的车间监控系统的实时信息采集
基于梯度调整的矩不变自动阈值图像分割算法
饮鸩止渴!中国三巨头囤积120亿美元的H20 AI加速卡
三花智控:未来人形机器人热管理潜力玩家
《嵌入式系统设计》20-Linux嵌入式系统设计(Linux启动过程第一步到DeBug符号裁减)
M491 (电视机)红外线遥控接收微处理器
《嵌入式系统设计》18-嵌入式系统设计U-BOOT(LILO到连接脚本文件)
基于图像的OMR技术的实现
基于双内存的图形采集卡的设计
KA2306A (玩具)无线电遥控接收控制调节电路
《嵌入式系统设计》19-Linux嵌入式系统设计(开始到Linux Bootloader)
鼎阳科技2025Q1营收增长26.93%,高端产品增长86.60%领跑行业!
新手求救
基于小波变换的遥感影像融合与评价
KA2305A (玩具)无线电遥控接收控制调节电路
请问在vxworks 中如何检测ip地址冲突?
KA2309 (玩具)无线电遥控接收控制调节电路