2018-01-19 13:46:55 520浏览
Spring拥有自己的校验框架,使用起来非常的简便。本次主要使用的是继续Validator接口来实现的数据校验。最终配合i18n来实现不同语言版本的校验信息的显示。
环境说明,sts3.8.2+maven3.3.9+tomcat8.5
实现步骤:
1. 新增maven web项目,在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中设置
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. 新增校验类StudentValidater实现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 {
// 任何请求将都被该请求对应的页面来处理
@GetMapping("/{view}")
public String getView(@PathVariable String view, Model model){
// 在model中添加student对象,用来在表单中显示和处理对象的数据
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下新增两个msg文件以支持中文(msg_zh_CN.properties)和英文(msg_en_US.properties)的校验,如果有需要还是自行按照规则添加该文件
#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
#后面的东西全部是上面对应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
this is success page.
9. 整体项目的结构图片
10. 整体项目的运行结果
a. 英文不合法校验
b. 中文不合法校验
c. 校验成功页面
以上就是关于扣丁学堂Java培训之Spring校验框架代码的详细介绍,最后想要了解更多关于Java发展前景趋势,请关注扣丁学堂Java培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的Java视频教程系统,通过千锋扣丁学堂金牌讲师在线录制的第一套自适应Java在线视频课程系统,让你快速掌握Java从入门到精通开发实战技能。
【关注微信公众号获取更多学习资料】