扣丁学堂Java培训之Spring校验框架代码详解

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从入门到精通开发实战技能。


扣丁学堂微信公众号



关注微信公众号获取更多学习资料



查看更多关于“Java开发资讯的相关文章>>

标签: JavaEE视频教程 JavaEE培训 JavaEE开发工程师 Java培训

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号