`

SpringMVC中整合JSR-303 验证表单输入

 
阅读更多

JSR-303是sun的基于注解的JavaBean校验规范,仅仅是一个规范,没有具体实现。Spring也没有对其进行实现,要想在SpringMVC中需要使用JSR-303就需要提供一个对JSR-303规范的实现,最常见的是Hibernate Validator

 

1. pom依赖

       <!-- JSR-303 -->
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.1.0.Final</version>
        </dependency>
        <!-- Hibernate Valiadator -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.1.1.Final</version>
        </dependency>

 

2. 在${dispatcherServletName}-servlet.xml中配置,最简化为:

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />

    <!-- <property name="validationMessageSource" ref="messageSource" /> -->
</bean>

 

这里使用了各种默认的message,如需国际化等配置,

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>classpath:messages</value>
            <value>classpath:org/hibernate/validator/ValidationMessages</value>
        </list>
    </property>
    <property name="useCodeAsDefaultMessage" value="true" />
    <property name="defaultEncoding" value="UTF-8" />
    <property name="cacheSeconds" value="60" />
</bean>

 

3. 对应的POJO为

package example.entity;

import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

public class User {

    @Pattern(regexp = "\\d+", message = "number only")
    private String userId;

    @Size(min = 3, max = 10, message = "User Name must be between 3 and 10 characters long")
    private String userName;

 

    //getters and setters
}

 

4. SpringMVC的controller层代码

    @RequestMapping(value = "/create", method = RequestMethod.POST)
    public String create(Model model, @Valid User user, BindingResult bindingResult) throws InterruptedException, IOException {
        if (bindingResult.hasErrors()) {
            return "createUser";
        }
        userMap.put(user.getUserId(), user);
        return "redirect:/user";
    }

 

@Valid注解是JSR-303的一部分, 它表明参数在传入之前需要进行校验,否则,不予校验。

如果校验User出错的话,错误将会作为第二个参数以BindingResult的形式传递给create()方法。create()方法调用hasErrors()去做对应处理。

分享到:
评论

相关推荐

    【源码】SpringMVC与SiteMesh2.4无缝整合并借助JSR303规范实现表单验证

    这是我的这篇博文的源码:SpringMVC与SiteMesh2.4无缝整合并借助JSR303规范实现表单验证,博文地址:http://blog.csdn.net/jadyer/article/details/7574668

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

    - **数据校验**:SpringMVC提供了强大的数据验证机制,可以通过@Validated注解结合JSR303/JSR349标准来实现自动数据校验。 #### 十、处理JSON:使用HttpMessageConverter - **JSON处理**:使用...

    springMVC+hibernateValidate

    而Hibernate Validate是Hibernate ORM项目的一个子模块,它是一个强大的验证框架,遵循JSR-303和JSR-349标准,用于在Java应用中执行数据校验。 **SpringMVC** SpringMVC是Spring框架的核心组件之一,它提供了一种...

    SpringMVC+hibernate4.3+Spring4.1整合demo

    通过创建一个简单的登录表单,用户输入用户名和密码,Controller接收请求,调用Service进行验证,Service通过DAO层与数据库交互,最后返回结果给前端。整个过程展示了SSH框架整合后的高效协作。 综上所述,SSH框架...

    SpringMVC总复习【两部分|word版】

    SpringMVC集成了JSR-303/JSR-349 Bean Validation,用于表单验证。通过在模型对象上添加验证注解,如@NotNull、@Size等,可以自动进行客户端和服务器端的验证。验证结果可以通过BindingResult对象获取并展示给用户。...

    超级详细SpringMVC学习资料

    1. 数据验证:使用Hibernate Validator或JSR-303进行表单验证。 2. 文件上传下载:使用MultipartFile处理文件上传,OutputStream进行文件下载。 3. 异步处理:使用@Async注解实现异步方法,提高系统响应速度。 4. ...

    SpringMVC面试专题.zip

    - **MVC验证**:使用JSR-303/JSR-349提供的注解进行数据验证。 - **RESTful API**:通过HTTP动词和资源URL设计,构建RESTful风格的服务。 5. **最佳实践** - 使用Spring Boot简化配置,利用自动配置功能。 - ...

    SpringMVC框架

    同时,它也提供了 JSR-303/JSR-349 验证标准,可以方便地对表单数据进行验证。 **10. 异步支持** SpringMVC 提供了异步请求处理的支持,允许开发人员编写异步 Controller 方法,提高系统性能和响应速度。 通过以上...

    springMVC4+spring4+mybatis3整合所需jar包

    - hibernate-validator:提供JSR-303/JSR-349标准的数据验证功能,可以为Java Bean定义校验规则。 4. **File Upload**: - commons-fileupload:Apache Commons FileUpload库,处理HTTP请求中的多部分表单数据,...

    SpringMVC的crud实例

    例如,可以使用Spring的`@ExceptionHandler`处理异常,使用JSR-303/JSR-349 Bean Validation进行输入验证,以及使用缓存来提高性能。 总结起来,SpringMVC提供了一套完善的机制,使得开发者能够轻松地构建CRUD应用...

    基于springmvc+easyui+权限控制的后台管理系统带数据库文件可直接运行

    6. **数据绑定与验证**:SpringMVC支持自动将请求参数绑定到控制器方法的参数,同时支持JSR-303/JSR-349数据验证,确保输入数据的合法性。 7. **AOP(面向切面编程)集成**:SpringMVC可以与Spring的AOP模块结合,...

    springMVC.zip

    SpringMVC可以通过`@Valid`注解配合JSR-303/JSR-349标准进行数据验证,确保输入的有效性。 10. **视图技术**: 视图可以是JSP、FreeMarker、Thymeleaf等,SpringMVC通过视图解析器如InternalResourceViewResolver...

    springmvc4_springmvc_mainlyyb8_

    同时,使用 `@Valid` 注解可以实现表单验证,结合 JSR-303/JSR-349 提供的校验注解,如 `@NotNull`, `@Size` 等。 8. **Aspect-Oriented Programming (AOP) 支持** Spring MVC 集成了 Spring AOP,可以用于实现如...

    使用springmvc做的增删改查

    对于数据验证,可以利用JSR-303/JSR-349提供的Bean Validation,或使用Hibernate Validator实现表单验证。 九、整合测试 使用JUnit和Mockito进行单元测试,验证各个组件是否正常工作。对于Spring MVC应用,可使用...

    hibernatevalidatorjar_downcc.zip

    Hibernate Validator是JSR-303/JSR-349规范的参考实现,它是Hibernate项目的一部分,专门用于Java Bean的验证。它提供了一套强大的API和注解,使得开发者能够方便地定义和执行验证规则,有效防止因用户输入不合法...

    hibernate-validator示例demo

    在IT行业中,尤其是在Java开发领域,`Hibernate Validator`是一个至关重要的工具,它是JSR-303/JSR-349(Java Bean Validation)规范的实现,用于验证对象的属性值。`SpringMVC`是Spring框架的一部分,用于处理Web...

    springmvc系列教程PDF精讲.

    9. **验证**:学习使用JSR 303/349 Bean Validation进行表单验证,以及如何在SpringMVC中集成这些验证规则。 10. **RESTful API**:理解RESTful风格的URL设计,以及如何在SpringMVC中创建REST服务,包括使用HTTP...

    springmvc jar包

    9. **Validation**:Spring MVC 提供了数据验证功能,可以通过 @Valid 注解配合 Hibernate Validator 或 JSR-303 规范进行表单验证。 10. **国际化与本地化**:Spring MVC 支持国际化和本地化,可以通过消息资源...

    Java实训教程 Java软件开发实战 Java开发框架介绍 SpringMVC_5_常用注解 共22页.pptx

    - **数据校验框架**:SpringMVC集成了JSR 303/JSR 349标准,支持字段级别的验证。 - **校验注解**:如`@NotNull`、`@Size`等,可以在POJO类字段上使用。 - **错误消息定制**:可以通过国际化资源文件来定制错误消息...

    springMVC实例项目

    - `@Valid`: 进行数据校验,结合JSR 303/349的注解实现。 6. **拦截器(Interceptor)** - 可以自定义拦截器实现预处理和后处理逻辑,如登录检查、日志记录等。 7. **异常处理** - 异常处理器可以全局统一处理...

Global site tag (gtag.js) - Google Analytics