博客專欄

EEPW首頁 > 博客 > Spring校驗框架代碼詳解

Spring校驗框架代碼詳解

發(fā)布人:only1 時間:2020-09-27 來源:工程師 發(fā)布文章

  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)系工作人員刪除。



關(guān)鍵詞:

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉