`

springMVC 使用JSR-303 Validation验证

阅读更多
JSR-303是一个数据验证的规范,但是spring并没有对其进行实现,Hibernate Validator是实现了这一规范的,通过此这个实现来讲SpringMVC对JSR-303的支持。
JSR-303的校验是基于注解的,首先要把这些注解标记在需要验证的实体类的属性上或是其对应的get方法上。

登录需要验证类
public class Login {

	@NotEmpty(message="用户名不能为空")
	private String userName;
	@NotEmpty(message="密码不能为空")
	private String password;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}	
	
}


控制器类

@Controller  
public class UserController {  
   
    @RequestMapping("login")  
    public String login(@Valid Login user, BindingResult result) {  
       if (result.hasErrors())  
           return "user/login";  
       return "redirect:/";  
    }  
     
} 

我们的处理器方法必须给定包含Errors的参数,这可以是Errors本身,也可以是它的子类BindingResult,使用了Errors参数就是告诉Spring关于表单对象数据校验的错误将由我们自己来处理,否则Spring会直接抛出异常,而且这个参数是必须紧挨着@Valid参数的,即必须紧挨着需要校验的参数,这就意味着我们有多少个@Valid参数就需要有多少个对应的Errors参数,它们是一一对应的

在springMvc的配置里加上了<mvn:annotation-driven/>(这是springMvc默认的配置,在Spring3.1只有推荐使用RequestMappingHandlerAdapter代替)之后Spring会自动检测classpath下的JSR-303提供者并自动启用对JSR-303的支持,把对应的校验错误信息放到Spring的Errors对象中。详细配置如下:

<!--Spring3.1开始的注解 替代<mvc:annotation-driven/>-->
<bean		class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"
		p:ignoreDefaultModelOnRedirect="true">
		<property name="webBindingInitializer"><!--
			<bean
				class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
				<property name="validator" ref="validator" />
				<property name="conversionService">
					<bean
						class="org.springframework.format.support.FormattingConversionServiceFactoryBean"></bean>
				</property>
			</bean>
		</property>
		
</bean>


<bean id="messageSource"
		class="org.springframework.context.support.ResourceBundleMessageSource"
		p:basename="i18n/messages" />


<bean id="validator"
		class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
		<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
		<!-- 如果不加默认到 使用classpath下的 ValidationMessages.properties -->
		<property name="validationMessageSource" ref="messageSource" />
</bean>
分享到:
评论

相关推荐

    SpringMVC使用JSR-303进行验证Bean.docx

    本篇文章将详细介绍如何在SpringMVC中使用JSR-303进行Bean验证。 首先,我们需要引入JSR-303的实现库。通常使用的是Hibernate Validator,它是JSR-303规范的一个成熟实现。在不使用Maven的情况下,我们需要下载`...

    SpringMVC 使用JSR-303进行校验 @Valid示例

    使用SpringMVC结合JSR-303进行数据校验的流程一般包括以下几个步骤: 1. 准备校验时使用的JAR包:在项目中添加validation-api和具体的实现库(如hibernate-validator),用于执行校验规则。 2. 编写需要校验的Java...

    springmvc使用JSR-303进行数据校验实例

    SpringMVC结合JSR-303可以实现对数据的有效验证,确保接收到的数据是符合业务要求的。接下来,我们会详细讲解如何在SpringMVC项目中集成JSR-303进行数据校验。 首先,我们来看如何集成JSR-303到SpringMVC项目中。...

    springmvc表单验证JSR-303验证框架jar包

    hibernate-validator-5.2.4.Final.jar hibernate-validator-annotation-processor...validation-api-1.1.0.Final.jar jboss-logging-3.2.1.Final.jar classmate-1.1.0.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar

    springmvc-data-object

    此外,Spring MVC还支持数据验证,通过实现Validator接口或使用JSR-303/JSR-349 Bean Validation,可以对用户输入进行验证,确保数据的正确性和完整性。 总结来说,Spring MVC通过一系列机制实现了从前端页面到后端...

    springmvc 使用hibernate-validator校验包

    Hibernate Validator是Hibernate组织开发的一个开源项目,它是JSR 380(Java Bean Validation 2.0)的参考实现。它提供了一套API和注解,可以方便地在Java对象中定义验证规则,对输入数据进行校验,从而确保程序的...

    springmvc&JSR303;的jar包

    Spring MVC是Spring框架的一部分,用于构建MVC(Model-View-Controller)架构的Web应用,而JSR303(Java Bean Validation)则提供了一种标准的数据验证机制。 Spring MVC详解: Spring MVC 是一个轻量级的MVC框架,...

    SpringMVC精品资源--这是一个Java开发宝典,所有的Java技术都在这里,用心学习,努力提升!.zip

    10. **验证**:SpringMVC可以与JSR-303/JSR-349 Bean Validation集成,实现数据校验。 这个压缩包可能包含了SpringMVC的教程文档、实战案例、源代码分析等多方面的资源,对于初学者或进阶者都是极好的学习材料。在...

    SpringMVC杂记(五) JSR303数据验证

    在本篇《SpringMVC杂记(五) JSR303数据验证》中,我们将深入探讨SpringMVC框架如何集成并使用JSR303(JavaBeans Validation)来进行数据验证,这是一种强大的验证机制,可以确保应用程序接收到的数据是合法且符合...

    hibernate-validator-5.1.0.zip

    然后,我们可以在控制器的方法参数上使用JSR-303注解,比如`@Validated`或`@Valid`,SpringMVC会自动调用Hibernate Validator进行验证。 四、数据校验实例 以下是一个简单的例子,展示如何使用`@NotNull`和`@Size`...

    SpringMVC精品资源--以API接口开发为例,探索开发的最佳实践.zip

    使用JSR-303/JSR-349的Bean Validation进行数据校验,例如`@NotBlank`、`@Size`等注解,确保API请求的数据合法性。 8. **JSON序列化与反序列化** JSON是API接口常用的数据交换格式,SpringMVC默认使用Jackson库...

    SpringMVC JSR303数据校验DEMO(附:JSR303的JAR包)

    JSR303的JAR包通常包含了核心验证API(javax.validation.*)和实现,如Hibernate Validator,它是JSR303的一个流行实现。在项目中引入这个JAR包,可以方便地进行数据校验。例如,如果你在SpringMVC的Controller中有...

    SpringMVC入门很简单之数据验证

    SpringMVC提供了多种方式进行数据验证,包括使用JSR-303/JSR-349(Bean Validation)标准以及自定义验证注解。 1. **使用JSR-303/JSR-349 (Bean Validation)** Bean Validation 提供了一种统一的验证API,允许在...

    SpringMVC4教程-超权威--超详细_spriingmvc4_

    1. **JSR-303/JSR-349 Bean Validation**:使用注解进行数据验证,如`@NotNull`、`@Size`。 2. **Hibernate Validator**:SpringMVC与Hibernate Validator集成,实现验证逻辑。 ### 八、国际化与本地化 1. **消息...

    SpringMVC使用Validation验证表单

    创建一个实体类,例如`User`,并使用JSR-303/JSR-349注解(这些是Validation API的一部分)来指定验证规则。例如: ```java public class User { @NotNull private String name; @Email @NotNull private ...

    springmvc 使用validation使用的jar包!

    在这个场景中,我们关注的两个关键jar包是`hibernate-validator-5.2.2.Final.jar`和`validation-api-1.1.0.Final.jar`,它们都是实现JSR-303和JSR-349(即Bean Validation)规范的重要组件。 **Hibernate Validator...

    springmvc4与hibernate validation校验器完全兼容jar包

    而Hibernate Validation则是Java世界中用于数据验证的主流库,它基于JSR 303和JSR 349标准,提供了丰富的验证规则和易于使用的API。在Spring MVC中集成Hibernate Validation,可以实现对输入数据的有效性检查,从而...

    SpringMvc_RestfullAPI

    5. **验证**:SpringMvc支持JSR-303/JSR-349 Bean Validation标准,可以通过`@Valid`和`@Validated`注解进行数据校验。 6. **拦截器**:`HandlerInterceptor`接口可以用来实现预处理和后处理逻辑,比如权限检查、...

    跟开涛学SpringMVC(7.3)SpringMVC数据

    在SpringMVC中,数据验证通常通过使用JSR-303/JSR-349(Bean Validation)规范实现,该规范定义了一套标准的注解,如`@NotNull`、`@Size`、`@Pattern`等,用于验证对象属性。开发者可以在模型类的字段上添加这些注解...

    SpringMVC4.2.4中文文档 PDF-高清带书签版本

    6. **数据绑定与验证**:介绍如何进行表单数据绑定,包括@ModelAttribute的使用,以及基于JSR-303/JSR-349的Bean Validation验证。 7. **上传下载**:说明如何处理文件上传和下载,包括使用...

Global site tag (gtag.js) - Google Analytics