在之前的案例上面! 引入需要的验证jar包

创建index.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML>
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<form action="student/addStudent" method="post">
年龄:<input type="text" name="age"/> ${ageE} <br/>
姓名: <input type="text" name="userName"/>${userNameE}<br/>
电话:<input type="text" name="phone"> ${phoneE}<br/>
<input type="submit" value="新增"/>
</form>
</body>
</html>

对应的Student类

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size; import org.hibernate.validator.constraints.NotBlank; /**
*
* @NotNull 作用在基本数据类型上
* @NotBlank 作用在String上
* @NotEmpty 作用在集合上
* @Min 最小值
* @Max 最大值
* @Size 字符串的长度
* @Pattern 自定义验证规则
*
*/
public class Student { @NotNull(message="年龄不能为空")
@Min(value=0,message="年龄不能低于{value}")
@Max(value=150,message="年龄不能高于{value}")
private Integer age; //年龄
@NotBlank(message="姓名不能为空")
@Size(min=6,max=10,message="长度必须在{min}---{max}之间")
private String userName; //姓名
@NotBlank(message="手机号不能为空")
@Pattern(regexp="^1[345789]\\d{9}$",message="手机格式不正确")
private String phone; //电话 public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Student(Integer age, String userName, String phone) {
super();
this.age = age;
this.userName = userName;
this.phone = phone;
}
public Student() {
super();
} }

对应的controller

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; import sun.util.calendar.BaseCalendar; import cn.bdqn.bean.Student; @Controller
@RequestMapping("/student")
public class StudentController { /**
*
*@Validated :会对student对象中所有标注 注解的属性进行验证!
*BindingResult:如果 验证出现错误 ,就会把错误信息给这个result
*
*result.getFieldError("age").getDefaultMessage()
*获取我们设置的错误 信息!
*
*/
@RequestMapping("/addStudent")
public ModelAndView addStudent(@Validated Student student,BindingResult result) {
System.out.println("进入了 addStudent");
ModelAndView mv=new ModelAndView();
if (result.hasErrors()) { //出现了验证错误
if (result.getFieldError("age")!=null) { //证明age验证有错误
mv.addObject("ageE", result.getFieldError("age").getDefaultMessage());
}
if (result.getFieldError("userName")!=null) { //证明userName验证有错误
mv.addObject("userNameE", result.getFieldError("userName").getDefaultMessage());
}
if (result.getFieldError("phone")!=null) { //证明phone验证有错误
mv.addObject("phoneE", result.getFieldError("phone").getDefaultMessage());
}
mv.setViewName("/index.jsp");
return mv;
}
mv.setViewName("/success.jsp");
return mv;
} }

xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<!-- 配置springmvc的组件 -->
<context:component-scan base-package="cn.bdqn.controller"/>
<!-- 开启 注解的方式-->
<mvc:annotation-driven validator="myValidator"/>
<!-- 生成我们的验证器 -->
<bean id="myValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
</bean> </beans>

SpringMVC10数据验证的更多相关文章

  1. 我这么玩Web Api(二):数据验证,全局数据验证与单元测试

    目录 一.模型状态 - ModelState 二.数据注解 - Data Annotations 三.自定义数据注解 四.全局数据验证 五.单元测试   一.模型状态 - ModelState 我理解 ...

  2. MVC 数据验证

    MVC 数据验证 前一篇说了MVC数据验证的例子,这次来详细说说各种各样的验证注解.System.ComponentModel.DataAnnotations 一.基础特性 一.Required 必填 ...

  3. kpvalidate开辟验证组件,通用Java Web请求服务器端数据验证组件

    小菜利用工作之余编写了一款Java小插件,主要是用来验证Web请求的数据,是在服务器端进行验证,不是简单的浏览器端验证. 小菜编写的仅仅是一款非常初级的组件而已,但小菜为它写了详细的说明文档. 简单介 ...

  4. MVC3 数据验证用法之密码验证设计思路

    描述:MVC数据验证使用小结 内容:display,Required,stringLength,Remote,compare,RegularExpression 本人最近在公司用mvc做了一个修改密码 ...

  5. jQuery MiniUI开发系列之:数据验证

    在开发应用系统界面时,往往需要进行很多.复杂的数据验证,当填写的数据符合规定,才能提交保存. jQuery MiniUI提供了比较完美的表单数据验证和错误显示的方式. 常见的表单控件,都有一个验证事件 ...

  6. AngularJS快速入门指南14:数据验证

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  7. atitit.数据验证--db数据库数据验证约束

    atitit.数据验证--db数据库数据验证约束 1. 为了加强账户数据金额的安全性,需要增加验证字段..1 2. 创建帐户1 3. 更改账户2 4. ---code3 5. --fini4 1. 为 ...

  8. MVC数据验证原理及自定义ModelValidatorProvider实现无编译修改验证规则和错误信息

    Asp.net MVC中的提供非常简单易用的数据验证解决方案. 通过System.ComponentModel.DataAnnotations提供的很多的验证规则(Required, StringLe ...

  9. MVC 数据验证[转]

    前一篇说了MVC数据验证的例子,这次来详细说说各种各样的验证注解. 一.基础特性 一.Required 必填选项,当提交的表单缺少该值就引发验证错误. 二.StringLength 指定允许的长度 指 ...

随机推荐

  1. 项目知识点.Part1

    1. storyboard中添加scrollview: 先添加scrollView,进行约束 添加View 进行约束 相对于scrollView 如果水平滑动:设置vertically in Cont ...

  2. App的token机制

    这只是网上看来的后期可能还会修改. 理论版的描述如下: (1) 服务器接收到app发送的用户名和密码后,验证用户名和密码是否正确. 如果错误则返回错误信息. 如果验证正确,生成一个随机的不重复的tok ...

  3. 应用SecureCRT(发送接收文件)

    使用 SecureCRT 和 cz. sz,可以从 Linux 服务器上下载/上传文件. Linux 上要安装 lszrz 包 (1)编译安装root 账号登陆后,依次执行以下命令 cd /tmp w ...

  4. 运用MyEclipse插件(link方式注意点)

    Windows7 中 MyEclipse 安装位置下,有以下两个目录: MyEclipse 10 Common 注意点一 Common 下的子目录是 plugins 和 features : 而在 M ...

  5. Unity3D RPC调用顺序问题

    使用Unity自带的Network实现多人协同任务时,因为使用RPC传递消息.RPC即远程过程调用,对于它的使用,第一反应的问题就是如果连续两次调用RPC,RPC的函数会顺序执行吗?还是只要RPC的消 ...

  6. ORACLE和MONGODB,必须也得进入。

    先在WIN下面操作一下. 参考的是<MONGODB权威指南>

  7. 石英晶振频率后面带的PPM是什么单位

    PPM是石英晶振的基本单位之一,表示晶振的精度和相对偏差, PPM代表着百万分之一,它表明晶体的频率可能会偏离标称值多少.晶振频率是以MHZ(10的6次方)和KHZ(10的3次方)为基本单位的,标称频 ...

  8. Caption,Text,WindowText的区别——TControl也有FText,是为了模拟一个窗口

    TControl = class(TComponent) // 控件的Windows功能从TControl开始 property Caption: TCaption read GetText writ ...

  9. Linux Kernel 本地拒绝服务漏洞

    漏洞名称: Linux Kernel 本地拒绝服务漏洞 CNNVD编号: CNNVD-201308-090 发布时间: 2013-08-08 更新时间: 2013-08-08 危害等级:    漏洞类 ...

  10. 安装Maven、nexus

    一.软件包版本 jdk:jdk1.7.0_79 maven:apache-maven-3.3.3-bin.tar.gz nexus:nexus-webapp-2.8.0-05.war 二.安装mave ...