`

springmvc之数据验证

 
阅读更多

一、Spring集成JSR-303验证框架:

1、在pom.xm中添加JSR-303验证框架的hibernate实现:hibernate-validator

 

<dependency>
	<groupId>org.hibernate</groupId>
	<artifactId>hibernate-validator</artifactId>
	<version>5.2.2.Final</version>
</dependency>

 

2、在springmvc-servlet.xml配置中添加对JSR-303验证框架的支持

<!--配置HibernateValidator-->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
	<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
	<property name="validationMessageSource" ref="messageSource"/>
</bean>

<!--使用Spring的MessageSource Bean进行消息键值的查找-->
<bean id= "messageSource"
	  class= "org.springframework.context.support.ReloadableResourceBundleMessageSource">
	<property name= "basename" value= "classpath:messages"/>
	<property name= "fileEncodings" value= "utf-8"/>
	<property name= "cacheSeconds" value= "120"/>
</bean>

<!-- 默认的注解映射支持,配置注册validator -->
<mvc:annotation-driven validator="validator"/>

 

3、在classpath下添加错误消息属性文件messages.properties:

NotNull.user.username=用户姓名不能为空
Length.user.username=用户名长度必须在5-10之间
Pattern.user.username=用户名必须以字母下划线开头,可由字母数字下划线组

 

4、使用JSR-303验证框架注解为模型对象指定验证信息

public class UserModel {
    @NotNull(message="{NotNull.user.username}")
    @Length(min=5, max=20,message="{Length.user.username}")
    @Pattern(regexp = "^[a-zA-Z_]\\w{4,19}$",message="{Pattern.user.username}")
    private String username;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

 

5、在Controller需要验证的模型对象前加@Valid注解:

@Controller  
public class HelloWorldController {  
    @RequestMapping("/validate/hello")  
    public String validate(@Valid @ModelAttribute("user") UserModel user, Errors errors) {  
          
        if(errors.hasErrors()) {  
            return "validate/error";  
        }  
        return "redirect:/success";  
    }  
} 

 

6、验证失败后需要展示的页面(/WEB-INF/jsp/validate/error.jsp):

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>  
  
<form:form commandName="user">  
    <form:errors path="*" cssStyle="color:red"></form:errors><br/>  
</form:form>  

 

二、扩展讨论:

1、错误消息属性文件的键的命名推荐:

验证错误注解简单类名.验证对象名.字段名

如NotNull.user.username

ps:简单、精准、不费脑,而且spring默认识别该错误消息键,验证注解的message属性可以省了,不过这样在属性文件中就不支持占位符了

 

2、方法上添加了@ResponseBody注解,验证是否有效:

有效,如果需要返回错误信息,可通过errors.getFieldError("username").getDefaultMessage()获取错误信息

 

 

3、一个功能处理方法上需要验证多个模型对象时,需要通过如下形式来获取验证结果:

@RequestMapping("/validate/multi")  
public String multi(  
            @Valid @ModelAttribute("a") A a, BindingResult aErrors,  
            @Valid @ModelAttribute("b") B b, BindingResult bErrors) {  
          
        if(aErrors.hasErrors()) { //如果a模型对象验证失败  
            return "validate/error";  
        }  
        if(bErrors.hasErrors()) { //如果a模型对象验证失败  
            return "validate/error";  
        }  
        return "redirect:/success";  
}

 

 每一个模型对象后边都需要跟一个Errors或BindingResult对象来保存验证结果,其方法体内部可以使用这两个验证结果对象来选择出错时跳转的页面。

在错误页面,需要针对不同的模型来显示错误消息:

<form:form commandName="a">  
    <form:errors path="*" cssStyle="color:red"></form:errors><br/>  
</form:form>  
<form:form commandName="b">  
    <form:errors path="*" cssStyle="color:red"></form:errors><br/>  
</form:form>

 

三、引用:

开涛的博客:http://jinnianshilongnian.iteye.com/blog/1733708

私熟在线:http://sishuok.com/forum/blogPost/list/6991.html

分享到:
评论

相关推荐

    springmvc数据验证jar包

    这个"springmvc数据验证jar包"正是为了实现这一功能而必备的组件。它包含了多个关键库,如Hibernate Validator、JBoss Logging和Validation API,这些库协同工作以确保输入数据的有效性,从而增强应用程序的安全性和...

    springmvc数据验证

    在Spring MVC中,数据验证是确保输入数据正确性和安全性的关键环节。 数据验证是任何应用程序中不可或缺的部分,它帮助我们防止非法或无效的数据进入系统,从而保护系统免受潜在的攻击。在Spring MVC中,我们可以...

    SpringMVC入门很简单之数据验证

    在这个"SpringMVC入门很简单之数据验证"的主题中,我们将深入探讨如何在SpringMVC中实现数据验证。 在Web应用中,数据验证是必不可少的一环,它确保了用户提交的数据符合预设的规则和格式,防止非法或无效的数据...

    SpringMVC数据验证——注册用户格式的验证实例

    在Spring MVC框架中,数据验证是一项关键功能,用于确保用户提交的数据符合预设的规则和格式,从而保证系统的稳定性和数据的准确性。本教程将详细讲解如何在Spring MVC中实现注册用户时的数据验证实例。 首先,我们...

    springMVC数据校验.zip

    SpringMVC JSR 数据校验完整jar包下载,一共六个jar包,classmate-1.0.0.jar,hibernate-validator-5.0.0.final.jar,hibernate-validator-annotation-processor-5.0.1.final.jar,hibernate-validator-cdi-5.0.0....

    搭建SpringMVC(数据访问 Springdata)

    SpringMVC和SpringData是Java开发中常用的两个框架,它们分别负责Web应用的模型-视图-控制器架构和数据访问层的操作。在这个项目中,我们将深入理解如何将这两个框架集成,构建一个完整的数据访问系统。 首先,让...

    springmvc注解式控制器的数据验证、类型转换及格式化 SpringMVC数据验证

    当控制器接收到请求后,Spring会自动进行数据验证,并在验证失败时抛出异常,提供错误信息,帮助开发者快速定位问题。 接着,**类型转换** 是将HTTP请求中的字符串数据转化为业务层所需的对象类型。Spring MVC的`...

    SpringMVC入门很简单之数据绑定(下)

    1. 数据验证:SpringMVC通过`@Valid`和`BindingResult`可以实现模型数据的校验,例如利用JSR-303/JSR-349的注解进行字段级验证。 2. 自动转换:SpringMVC提供了一套完整的类型转换系统,可以自动将请求参数转换为...

    大三(二)springmvc数据校验.zip

    在本资料包 "大三(二)springmvc数据校验.zip" 中,我们主要探讨的是 Spring MVC 中的数据校验机制。 在 Spring MVC 中,数据校验是非常重要的一环,它确保了从客户端提交到服务器的数据是准确无误的。数据校验...

    SpringMVC 数据校验方法(必看篇)

    SpringMVC 数据校验方法 SpringMVC 框架提供了强大的数据校验功能,通过使用 Hibernate Validator 框架,可以轻松实现数据校验。下面将详细介绍 SpringMVC 数据校验方法。 一、导入必要的jar包 要实现数据校验...

    SpringMVC 数据校验实例解析

    SpringMVC 数据校验实例解析 在本文中,我们将详细介绍 SpringMVC 数据校验实例解析的实现过程。数据校验是软件开发中非常重要的一步骤,它可以帮助我们确保用户输入的数据是正确的和可靠的。在 SpringMVC 框架中,...

    SSM笔记-SpringMVC的数据格式化 、数据校验、错误提示、错误信息国际化、返回json

    通过在模型类的字段上添加验证注解(如`@NotNull`, `@Size`, `@Min`, `@Max`等),可以对用户提交的数据进行校验。在控制器中,使用`@Valid`注解可以触发校验,如果数据不合法,Spring会自动将错误信息放入Binding...

    跟开涛学SpringMVC(7.3)SpringMVC数据

    在本课程"跟开涛学SpringMVC(7.3)SpringMVC数据验证"中,我们将深入探讨SpringMVC框架中的数据处理和验证技术。SpringMVC是Spring框架的一个重要组成部分,它专为构建Web应用程序提供了一种模型-视图-控制器(MVC...

    SpringMVC数据类型转换超详细介绍

    4. **自定义验证困难**:数据验证过程需要手动实现,缺乏统一的接口或框架支持。 #### 三、Spring 3之后的数据绑定改进 从Spring 3开始,SpringMVC引入了更为强大的数据绑定框架,解决了上述问题,并提供了更加...

    SpringMVC-8 数据类型转换、数据格式化与数据校验

    Spring MVC集成了JSR 303/JSR 349(Bean Validation)规范,提供了基于注解的数据验证。我们可以使用`@NotNull`、`@Size`、`@Min`、`@Max`等预定义的校验注解,以及自定义校验注解,来对模型对象的属性进行验证。当...

    springmvc的validator数据校验的实现示例代码

    在SpringMVC中,Validator是基于Hibernate Validator的,Hibernate Validator是Java的数据校验标准之一。SpringMVC使用Hibernate Validator来实现数据校验,通过使用Validator来验证用户输入的数据,以确保数据的...

    使用SpringMVC进行数据的传送,数据来自mysql数据库 (1)没有使用hibernate

    2. **数据验证**:在接收到用户输入前进行验证,确保数据格式正确。 通过以上步骤,你可以构建一个不依赖Hibernate的SpringMVC应用,直接利用JDBC与MySQL数据库进行数据交互。这种方式虽然比使用ORM工具更繁琐,但...

    SpringMVC实现动态加表及字段并显示数据

    本主题将深入探讨如何利用SpringMVC来实现动态添加数据库表以及字段,并能实时地在前端显示这些数据。动态表单的创建是现代Web应用中的一个重要需求,它允许用户或管理员根据业务需要灵活地增减表结构,提高系统的可...

    springmvc增删改,分页,导入数据等功能

    5. **验证机制**:在增删改操作中,数据验证是必不可少的。SpringMVC可以结合JSR-303/JSR-349 Bean Validation,通过在模型对象上添加验证注解,如@NotBlank、@Size等,进行前端和后端的数据校验。 6. **模板引擎**...

Global site tag (gtag.js) - Google Analytics