2018-01-19 13:46:55 1327瀏覽
Spring擁有自己的校驗(yàn)框架,使用起來非常的簡便。本次主要使用的是繼續(xù)Validator接口來實(shí)現(xiàn)的數(shù)據(jù)校驗(yàn)。最終配合i18n來實(shí)現(xiàn)不同語言版本的校驗(yàn)信息的顯示。
環(huán)境說明,sts3.8.2+maven3.3.9+tomcat8.5
實(shí)現(xiàn)步驟:
1. 新增maven web項(xiàng)目,在pom中添加依賴
org.springframework
spring-webmvc
4.3.6.RELEASE
2. 在web.xml中配置Spring MVC的配置文件
springDispatcherServlet
org.springframework.web.servlet.DispatcherServlet
1
springDispatcherServlet
/
3. 在Spring MVC配置文件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
package com.qfedu.pojo;
public class Student {
private int sid;
private String name;
private int age;
private double score;
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
}
5. 新增校驗(yàn)類StudentValidater實(shí)現(xiàn)Spring的Validate接口5
package com.qfedu.validate;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
import com.qfedu.pojo.Student;
public class StudentValidate implements Validator {
@Override
public boolean supports(Class clazz) {
return Student.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
Student stu = (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");
int age = stu.getAge();
if(age < 0 || age > 200){
errors.rejectValue("age", "stu.age.invalid");
}
double score = stu.getScore();
if(score < 0 || score > 100){
errors.rejectValue("score", "stu.score.invalid");
}
}
}
6. 新增控制器類StudentController
package com.qfedu.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import com.qfedu.pojo.Student;
import com.qfedu.validate.StudentValidate;
@Controller
public class StudentController {
// 任何請求將都被該請求對應(yīng)的頁面來處理
@GetMapping("/{view}")
public String getView(@PathVariable String view, Model model){
// 在model中添加student對象,用來在表單中顯示和處理對象的數(shù)據(jù)
model.addAttribute("student", new Student());
return view;
}
@PostMapping("/saveStudent")
public String saveStudent(Student student, BindingResult errors, Model model){
StudentValidate sv = new StudentValidate();
sv.validate(student, errors);
if(errors.hasErrors()){
return "saveStudent";
}
return "success";
}
}
6. WEB-INF下新增兩個(gè)msg文件以支持中文(msg_zh_CN.properties)和英文(msg_en_US.properties)的校驗(yàn),如果有需要還是自行按照規(guī)則添加該文件
#msg_en_US.properties
stu.name=name must not be empty!
stu.age=age must not be empty!
stu.score=score must not be empty!
stu.sid=sid must not be empty!
stu.age.invalid=age is not available, must be between 0 - 200
stu.score.invalid=score is not available, must be between 0 - 100
#msg_zh_CN.properties
#后面的東西全部是上面對應(yīng)key的中文翻譯,自動(dòng)被轉(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
this is success page.
9. 整體項(xiàng)目的結(jié)構(gòu)圖片
10. 整體項(xiàng)目的運(yùn)行結(jié)果
a. 英文不合法校驗(yàn)
b. 中文不合法校驗(yàn)
c. 校驗(yàn)成功頁面
以上就是關(guān)于扣丁學(xué)堂Java培訓(xùn)之Spring校驗(yàn)框架代碼的詳細(xì)介紹,最后想要了解更多關(guān)于Java發(fā)展前景趨勢,請關(guān)注扣丁學(xué)堂Java培訓(xùn)官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺(tái)為您提供權(quán)威的Java視頻教程系統(tǒng),通過千鋒扣丁學(xué)堂金牌講師在線錄制的第一套自適應(yīng)Java在線視頻課程系統(tǒng),讓你快速掌握J(rèn)ava從入門到精通開發(fā)實(shí)戰(zhàn)技能。
【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“Java開發(fā)資訊”的相關(guān)文章>>