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验证。 首先,我们需要引入JSR-303的实现库。通常使用的是Hibernate Validator,它是JSR-303规范的一个成熟实现。在不使用Maven的情况下,我们需要下载`...
使用SpringMVC结合JSR-303进行数据校验的流程一般包括以下几个步骤: 1. 准备校验时使用的JAR包:在项目中添加validation-api和具体的实现库(如hibernate-validator),用于执行校验规则。 2. 编写需要校验的Java...
SpringMVC结合JSR-303可以实现对数据的有效验证,确保接收到的数据是符合业务要求的。接下来,我们会详细讲解如何在SpringMVC项目中集成JSR-303进行数据校验。 首先,我们来看如何集成JSR-303到SpringMVC项目中。...
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
此外,Spring MVC还支持数据验证,通过实现Validator接口或使用JSR-303/JSR-349 Bean Validation,可以对用户输入进行验证,确保数据的正确性和完整性。 总结来说,Spring MVC通过一系列机制实现了从前端页面到后端...
Hibernate Validator是Hibernate组织开发的一个开源项目,它是JSR 380(Java Bean Validation 2.0)的参考实现。它提供了一套API和注解,可以方便地在Java对象中定义验证规则,对输入数据进行校验,从而确保程序的...
Spring MVC是Spring框架的一部分,用于构建MVC(Model-View-Controller)架构的Web应用,而JSR303(Java Bean Validation)则提供了一种标准的数据验证机制。 Spring MVC详解: Spring MVC 是一个轻量级的MVC框架,...
10. **验证**:SpringMVC可以与JSR-303/JSR-349 Bean Validation集成,实现数据校验。 这个压缩包可能包含了SpringMVC的教程文档、实战案例、源代码分析等多方面的资源,对于初学者或进阶者都是极好的学习材料。在...
在本篇《SpringMVC杂记(五) JSR303数据验证》中,我们将深入探讨SpringMVC框架如何集成并使用JSR303(JavaBeans Validation)来进行数据验证,这是一种强大的验证机制,可以确保应用程序接收到的数据是合法且符合...
然后,我们可以在控制器的方法参数上使用JSR-303注解,比如`@Validated`或`@Valid`,SpringMVC会自动调用Hibernate Validator进行验证。 四、数据校验实例 以下是一个简单的例子,展示如何使用`@NotNull`和`@Size`...
使用JSR-303/JSR-349的Bean Validation进行数据校验,例如`@NotBlank`、`@Size`等注解,确保API请求的数据合法性。 8. **JSON序列化与反序列化** JSON是API接口常用的数据交换格式,SpringMVC默认使用Jackson库...
JSR303的JAR包通常包含了核心验证API(javax.validation.*)和实现,如Hibernate Validator,它是JSR303的一个流行实现。在项目中引入这个JAR包,可以方便地进行数据校验。例如,如果你在SpringMVC的Controller中有...
SpringMVC提供了多种方式进行数据验证,包括使用JSR-303/JSR-349(Bean Validation)标准以及自定义验证注解。 1. **使用JSR-303/JSR-349 (Bean Validation)** Bean Validation 提供了一种统一的验证API,允许在...
1. **JSR-303/JSR-349 Bean Validation**:使用注解进行数据验证,如`@NotNull`、`@Size`。 2. **Hibernate Validator**:SpringMVC与Hibernate Validator集成,实现验证逻辑。 ### 八、国际化与本地化 1. **消息...
创建一个实体类,例如`User`,并使用JSR-303/JSR-349注解(这些是Validation API的一部分)来指定验证规则。例如: ```java public class User { @NotNull private String name; @Email @NotNull private ...
在这个场景中,我们关注的两个关键jar包是`hibernate-validator-5.2.2.Final.jar`和`validation-api-1.1.0.Final.jar`,它们都是实现JSR-303和JSR-349(即Bean Validation)规范的重要组件。 **Hibernate Validator...
而Hibernate Validation则是Java世界中用于数据验证的主流库,它基于JSR 303和JSR 349标准,提供了丰富的验证规则和易于使用的API。在Spring MVC中集成Hibernate Validation,可以实现对输入数据的有效性检查,从而...
5. **验证**:SpringMvc支持JSR-303/JSR-349 Bean Validation标准,可以通过`@Valid`和`@Validated`注解进行数据校验。 6. **拦截器**:`HandlerInterceptor`接口可以用来实现预处理和后处理逻辑,比如权限检查、...
在SpringMVC中,数据验证通常通过使用JSR-303/JSR-349(Bean Validation)规范实现,该规范定义了一套标准的注解,如`@NotNull`、`@Size`、`@Pattern`等,用于验证对象属性。开发者可以在模型类的字段上添加这些注解...
6. **数据绑定与验证**:介绍如何进行表单数据绑定,包括@ModelAttribute的使用,以及基于JSR-303/JSR-349的Bean Validation验证。 7. **上传下载**:说明如何处理文件上传和下载,包括使用...