Spring校驗框架代碼詳解
Spring擁有自己的校驗框架,使用起來非常的簡便。本次主要使用的是繼續(xù)Validator接口來實現(xiàn)的數(shù)據(jù)校驗。最終配合i18n來實現(xiàn)不同語言版本的校驗信息的顯示。
環(huán)境說明,sts3.8.2+maven3.3.9+tomcat8.5
實現(xiàn)步驟:
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中設(shè)置
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實現(xiàn)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{
//任何請求將都被該請求對應(yīng)的頁面來處理
@GetMapping("/{view}")
publicStringgetView(@PathVariableStringview,Modelmodel){
//在model中添加student對象,用來在表單中顯示和處理對象的數(shù)據(jù)
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)的校驗,如果有需要還是自行按照規(guī)則添加該文件
#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
#后面的東西全部是上面對應(yīng)key的中文翻譯,自動被轉(zhuǎn)成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.整體項目的結(jié)構(gòu)圖片
10.整體項目的運行結(jié)果
a.英文不合法校驗
b.中文不合法校驗
c.校驗成功頁面
以上就是關(guān)于扣丁學(xué)堂Java培訓(xùn)之Spring校驗框架代碼的詳細介紹,最后想要了解更多關(guān)于Java發(fā)展前景趨勢,請關(guān)注扣丁學(xué)堂Java培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺為您提供權(quán)威的Java視頻教程系統(tǒng),通過千鋒扣丁學(xué)堂金牌講師在線錄制的第一套自適應(yīng)Java在線視頻課程系統(tǒng),讓你快速掌握Java從入門到精通開發(fā)實戰(zhàn)技能??鄱W(xué)堂Java技術(shù)交流群:850353792。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。