`
y806839048
  • 浏览: 1135106 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

spring mvc校验

阅读更多

 

spring  mvc校验

 

1,引入jar

 

<!-- 属性验证 -->

<dependency>

<groupId>javax.validation</groupId>

<artifactId>validation-api</artifactId>

</dependency>

<dependency>

<groupId>org.hibernate</groupId>

<artifactId>hibernate-validator</artifactId>

</dependency>

 

2,配置

 

xml:

 

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">

        <property name="basename" value="classpath:ValidationMessages"></property>

        <property name="fileEncodings" value="utf-8"></property>

        <property name="cacheSeconds" value="120"></property>

    </bean>

    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">

        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>

        <property name="validationMessageSource" ref="messageSource"></property>

    </bean>

    <bean id="webBindingInitializer" class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">

        <property name="validator" ref="validator"></property>

    </bean>

 

 

ValidationMessages:

notEmpty.message={field}\u4E0D\u80FD\u4E3A\u7A7A

phone.message=\u624B\u673A\u53F7\u4E0D\u6B63\u786E

number.message={field}\u5FC5\u987B\u4E3A\u7EAF\u6570\u5B57

json.message={field}\u4E0D\u662FJson\u5B57\u7B26\u4E32\u7C7B\u578B

jsonArray.message={field}\u4E0D\u662FJsonArray\u5B57\u7B26\u4E32\u7C7B\u578B

 

 

 

3,使用

 

 

 

  @RequestMapping("apply")

    @ResponseBody

    public ApiResponse insureApply(@Valid @RequestBody InsureApplyRequest insureApplyRequest, Errors errors) throws Exception {

        //验证参数

        checkError(errors);----spring入参的一级校验

Class insureCheckBean = factoryBank.getInsureCheckBean(insureApplyRequest.getBankType());

  Object object = JSONObject.parseObject(insureApplyRequest.getInsureInfo(), insureCheckBean);

   String checkResult = BeanUtils.checkBean(object);----里面的json转化成实体之后的二级校验

}

 

 

////可以放在base control

    /**

     * 校验请求参数

     * @param errors

     * @throws ParamException

     */

    public void checkError(Errors errors) throws ParamException {

        if(errors.hasErrors()){

            List<FieldError> fieldErrors = errors.getFieldErrors();

            StringBuffer buffer = new StringBuffer();

            for(FieldError fieldError:fieldErrors){

               //String field = fieldError.getField();

                String message = fieldError.getDefaultMessage();

                buffer.append(message).append("; ");

            }

            throw new ParamException(CodeEnum.CODE_0002.getMsg()+"{"+buffer.toString()+"}");

        }

    }

 

 

 

 

 

 

 

 

 

 

 

 

 

自定义校验(一般用于二级校验)

 

 

1,实体中用相关的注解--可以自定义也可以用框架的(此时没有用springmvc本身校验)

 

    变化大的字段不必常规建立一个表涵盖所有字段,只要用一个字段存储json即可,用的时候根据类型转化   这一个字段所在实体可以spring入参的时候校验

    里面的那个字段转化成实体后就不能在入参的时候校验,可以自定义工具类,结合注解(校验的时候可以spring valid和自定义根据注解自己用工具类校验结合---分层校验)

 

 

 

 

package com.houbank.bank.util.base;

 

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

import com.houbank.bank.util.base.tst.APIFlowRequest;

import com.houbank.bank.util.base.tst.InsuredGuRelatedParty;

import com.houbank.bank.util.component.annotation.IsJsonArray;

import org.apache.commons.lang3.StringUtils;

import org.hibernate.validator.constraints.NotEmpty;

 

import javax.validation.Valid;

import java.lang.reflect.Field;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

/**

 * Created by zhangzhile on 2017/11/10.

 */

public class BeanUtils {

 

 

    /**

     * 检查bean中的必要参数

     *

     * @param object

     * @return

     * @throws Exception

     */

    public static String checkBean(Object object) throws Exception {

        Class cls = object.getClass();

        StringBuilder stringBuilder = new StringBuilder();

        for (; cls != Object.class; cls = cls.getSuperclass()) {

            Field[] fieldes = cls.getDeclaredFields();

            for (Field field : fieldes) {

                field.setAccessible(true);

                NotEmpty annotation = field.getAnnotation(NotEmpty.class);

                IsJsonArray isJsonArray = field.getAnnotation(IsJsonArray.class);

 

                if (annotation != null

                        && StringUtils.isBlank((String) field.get(object))) {

                    stringBuilder.append(field.getName());

                    stringBuilder.append(";");

                }

                if (isJsonArray != null

                        && !JsonUtils.isJsonArrayString((String) field.get(object))) {

                    stringBuilder.append(field.getName());

                    stringBuilder.append(";");

                }

            }

        }

        return stringBuilder.toString();

    }

 

    /**

     * 检查bean中含有List的必要参数

     *

     * @param object

     * @return

     * @throws Exception

     */

    public static String checkBeans(Object object) throws Exception {

        Class cls = object.getClass();

        StringBuilder stringBuilder = new StringBuilder();

        for (; cls != Object.class; cls = cls.getSuperclass()) {

            Field[] fieldes = cls.getDeclaredFields();

            for (Field field : fieldes) {

                field.setAccessible(true);

                NotEmpty annotation = field.getAnnotation(NotEmpty.class);

                IsJsonArray isJsonArray = field.getAnnotation(IsJsonArray.class);

                Valid valid = field.getAnnotation(Valid.class);

 

                if (annotation != null

                        && StringUtils.isBlank((String) field.get(object))) {

                    stringBuilder.append(field.getName());

                    stringBuilder.append(";");

                }

                if (isJsonArray != null

                        && !JsonUtils.isJsonArrayString((String) field.get(object))) {

                    stringBuilder.append(field.getName());

                    stringBuilder.append(";");

                }

                if (valid != null

                        && !ArrayIsNotNull.isNull( (List<Object>)field.get(object))) {

                    List<Object> os=(List<Object>) field.get(object);

                   for(Object o :  os){

                       checkBean(stringBuilder,o);

                   }

                }else if(valid != null && ArrayIsNotNull.isNull( (List<Object>)field.get(object))){

                    stringBuilder.append(field.getName());

                    stringBuilder.append(";");

                }

            }

        }

        return stringBuilder.toString();

    }

 

 

    /**

     * 检查bean中的必要参数增加参数

     *

     * @param object

     * @return

     * @throws Exception

     */

    public static String checkBean(StringBuilder stringBuilder,Object object) throws Exception {

        Class cls = object.getClass();

        for (; cls != Object.class; cls = cls.getSuperclass()) {

            Field[] fieldes = cls.getDeclaredFields();

            for (Field field : fieldes) {

                field.setAccessible(true);

                NotEmpty annotation = field.getAnnotation(NotEmpty.class);

                IsJsonArray isJsonArray = field.getAnnotation(IsJsonArray.class);

 

                if (annotation != null

                        && StringUtils.isBlank((String) field.get(object))) {

                    stringBuilder.append(field.getName());

                    stringBuilder.append(";");

                }

                if (isJsonArray != null

                        && !JsonUtils.isJsonArrayString((String) field.get(object))) {

                    stringBuilder.append(field.getName());

                    stringBuilder.append(";");

                }

            }

        }

        return stringBuilder.toString();

    }

 

    public static void main(String[] args) throws Exception {

            APIFlowRequest aPIFlowRequest=new APIFlowRequest();

            aPIFlowRequest.setClientCode("111");

            aPIFlowRequest.setPolicySort("222");

List<InsuredGuRelatedParty> list=new ArrayList<InsuredGuRelatedParty>();

            InsuredGuRelatedParty ins=new InsuredGuRelatedParty();

            ins.setInsuredName("33");

            ins.setInsuredIdentity("55");

list.add(ins);

            aPIFlowRequest.setInsuredGuRelatedPartyDtoList(list);

            JSONArray.toJSON(list);

            String json = JSONObject.toJSONString(aPIFlowRequest);

Map<Object, Object> map=new HashMap<>();

            checkBeans(aPIFlowRequest);

//map.put("", "");

//student.setMap(map);

//isNullAndThrowExp(new String[]{"age","nameString","isPeople","list","map"},student,student.getAge(),student.getNameString(),student.isPeople(),student.getList(),student.getMap());

}

}

 

 

 

 

 

 

分享到:
评论

相关推荐

    Spring Mvc(1)Spring MVC 校验

    总结起来,Spring MVC 的数据校验机制提供了强大的功能,包括基础的 JSR-303 校验、自定义校验以及组合校验,可以灵活地满足各种场景下的数据验证需求。在实际项目中,合理利用这些功能,可以有效提高代码质量,减少...

    springmvc数据验证

    Spring MVC 是一个强大的Java web应用程序框架,用于构建高效、可维护的Web应用。它整合了Spring框架的功能,提供了模型-视图-控制器(MVC)架构模式,使得开发者可以更专注于业务逻辑,而不是底层实现。在Spring ...

    spring mvc 校验

    springmvc 校验时所需要的三个包validation-api.jar hibernate-validator-4.1final.jar jbosslogin.jar !解决了tomcat启动的时候报错: classnotfound:javax.validation.constraint的错误!

    最全最经典spring-mvc教程

    对于验证,Spring MVC提供了BindingResult和Validator接口,用于校验模型数据的正确性。 另外,Spring MVC与Spring框架的其他组件无缝集成,如Spring AOP(面向切面编程)用于实现日志、事务管理等功能,Spring ...

    spring mvc 4.0

    6. **数据绑定与验证**:Spring MVC提供了数据绑定和验证功能,允许将表单数据自动绑定到Java对象,并进行校验,简化了业务逻辑处理。 7. **视图解析**:Spring MVC 4.0支持多种视图技术,如JSP、FreeMarker、...

    Spring MVC 基础实例源码01

    11. **Validation**:Spring提供了数据验证机制,可以通过`@Valid`注解和Validator接口实现对表单数据的校验。 12. **Interceptor**:拦截器,允许在请求处理前后执行自定义逻辑,如日志记录、权限检查等。 13. **...

    spring MVC_快速入门

    Spring MVC 是一个强大的Java Web开发框架,用于构建高效、可维护和模块化的Web应用程序。它作为Spring框架的一部分,提供了一种MVC(Model-View-Controller)架构模式的实现,帮助开发者处理HTTP请求、数据绑定、...

    Spring mvc validator 需要的校验jar包

    spring mvc校验框架所需的几个jar包hibernate-validator-6.0.7.Final.jar、logging-3.1.0.CR2.jar、validator-api-2.0.2.jar

    spring、 spring mvc、 mybatis 开发的java客户关系管理系统,前端采用easyui编写.zip

    《基于Spring、Spring MVC、MyBatis的Java客户关系管理系统详解》 在现代企业运营中,客户关系管理(CRM)系统扮演着至关重要的角色,它帮助企业有效地管理与客户的交互,提高销售效率,优化客户服务,从而增强企业...

    最简单的用户登录与注册系统 spring mvc spring jdbc

    Spring MVC是Spring框架的一个模块,主要用于构建Web应用程序,而Spring JDBC则是Spring提供的用于简化数据库操作的工具。 【描述】"用spring4.0.5版本开发的,spring mvc,spring jdbc,最简单的用户登录,注册和...

    spring mvc 参数绑定漏洞

    Spring MVC 是一个广泛使用的Java Web框架,用于构建可维护、模块化且松散耦合的Web应用程序。在处理HTTP请求时,Spring MVC 提供了参数绑定功能,将HTTP请求中的参数映射到控制器方法的参数上,使得开发更加便捷。...

    Spring MVC学习框架

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的重要组成部分。Spring 框架以其依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)为核心,而 Spring...

    spring mvc

    7. **Form Handling**: Spring MVC 提供了强大的表单处理能力,包括自动数据绑定、数据校验等功能。通过@Valid可以进行数据验证,@RequestParam和@PathVariable用于获取请求参数。 8. **Interceptors**: 拦截器是...

    spring MVC文档

    Spring MVC是Spring框架的一个核心模块,它主要用于构建Web应用程序的模型-视图-控制器(MVC)架构。这篇文档详细地介绍了Spring MVC的功能、工作原理以及如何将其有效地应用于实际项目中。Spring MVC的设计目标是...

    Spring MVC数据校验.docx

    数据校验在Spring MVC中通常借助于Hibernate Validator实现,它提供了丰富的校验注解,如: - `@NotNull`:检查值是否为null。 - `@NotBlank`:检查字符串是否非空且非空白。 - `@NotEmpty`:检查集合、数组或Map...

    精通Spring MVC4 电子版_springmuv_

    它是一个基于模型-视图-控制器(MVC)架构模式的轻量级Web框架,提供了强大的数据绑定、校验以及灵活的国际化支持。本资源《精通Spring MVC4 电子版》将深入探讨这个框架的各个方面,旨在帮助开发者更好地理解和运用...

    spring MVC基础学习

    Spring MVC 是一款基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。在Spring MVC中,开发者可以利用模型-视图-控制器(MVC)架构模式来分离业务逻辑、数据处理和...

    spring+spring mvc+mybatis框架整合实现超市货物管理系统

    在本文中,我们将深入探讨如何使用JavaEE技术栈,特别是Spring、Spring MVC和MyBatis框架,来构建一个超市货物管理系统的实现。这个系统涵盖了基本的登录功能以及与MySQL数据库的交互,包括增删改查操作和分页显示。...

Global site tag (gtag.js) - Google Analytics