首页 Java java教程 SpringMVC的类型转换及验证方法介绍(附代码)

SpringMVC的类型转换及验证方法介绍(附代码)

Sep 28, 2018 pm 03:54 PM
springmvc

本篇文章给大家带来的内容是关于SpringMVC的类型转换及验证方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Spring mvc 数据绑定流程:

SpringMvc将ServletRequest对象及目标方法的形参实例传给WebDataBinderFactory实例,以创建DataBinder实例对象。DataBinder调用装配在SpringMvc上下文中的ConversionService组件进行类型转换和数据格式化工作,将Servlet请求信息填充到形参对象中。调用Validator主键对已经绑定了请求信息的形参对象精选数据有效性验证,并最终生成数据绑定结果BindingData对象。SpringMVC抽取BindingResult中的形参对象和校验错误对象,将他们赋给处理方法的相应参数

我们查看源代码可以看到,通过WebDataBinderFactory创建DataBinder对象

自定义类型转换器

当我们碰到一些特殊场合,有可能需要我们自己定义类型转换器。下麦呢来讲解一个自定义类型转器,将字符串转换成emp对象,当页面无法完成数据绑定或者类型转换时,springmvc会抛出异常,异常信息可以使用BindingResult来进行获取。

Spring定义了三种类型的转换器接口,实现任意一个转换器接口都可以作为自定义转换器注册到ConversionServiceFactoryBean中。

Convertre:将S类型转换为T类型。

ConverterFactory:将相同系类的多个“同质”Converter封装在一起,如果希望一种类型转换成另一种类型以及子类对象(例如String转换成Number以Number的子类),可以使用该转换器

GenericConverter:会根据源类对象以及目标类对象所在的宿主类中的上下文信息精选类型转换。

package com.spring.mvc.controller;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
@Component
public class UserConverter implements Converter<String, User>{
    @Override
    public User convert(String source) {
        System.out.println(source);
        String users [] = source.split("-");
        User user = new User();
        user.setUno(Integer.valueOf(users[0]));
        user.setUsername(users[1]);
        user.setUserpass(users[2]);
        return user;
    }
}
登录后复制

ConversionService时SpringMVC中类型转换器的核心接口,要添加自定义类型转换器,需要实现该接口/利用ConversionServiceFactoryBean在Spring的IOC容器中第一一个ConversionService,并在Bean属性配置对于的类型转换器的实现类,SpringMvc处理方法的形参绑定时就会自动调用该类型转换器。

<!--将非mapping配置下的请求交给默认的Servlet来处理 -->
    <mvc:default-servlet-handler />
    <bean id="conversionService"
        class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <ref bean="userConverter" />
            </set>
        </property>
    </bean>
    <!-- 注册类型转换器 -->
    <mvc:annotation-driven conversion-service="conversionService" />
登录后复制

在实际的开发同需要配置:标签

数据格式化

对属性的输入/输出格式化,其本质来讲依然属于类型转换的范畴。Spring在格式化模块中定义一个实现ConversionService接口的FarmattingConversionService实现类,该实现类扩展了GenericConversionService,因此它既具有类型转换的功能有具有格式化的功能。FormattingConversionService拥有一个FormattingConversionServiceFactoryBean工厂类,后者用于构造前者。我们要注册这个

<mvc:annotation-driven conversion-service="FormattingConversionServiceFactoryBean" />
登录后复制

JSR303

jsr303时java为bean数据合法性校验提供的标准框架,它已经包含在JavaEE6.0中,JSR303通过在Bean属性上标注类似@NotNull,@Max等标准的数据指定验证规则,并通过标注的验证接口对Bean进行验证。

@NotEmpty
    @NotNull
    private String name;
    
    @NotNull
    @NotEmpty
    private String age;
    
    @NotNull
    @NotEmpty
    @Email
    private String email;
登录后复制

我们在前台使用SpringMVC提供的Form标签使用Form:errors path 绑定属性即可

@RequestMapping(value="/student",method=RequestMethod.POST)
    public String add(@Valid()Student student,BindingResult result){
        if (!result.hasErrors()) {//判断是否有格式转换错误或者其他校验没通过
            userService.addStudent(student);
            return "redirect:list";
        }else
            return "addPage";
    }
登录后复制

SpringMvc提示消息国际化

<!-- 注册国际化信息,必须有id,指定资源文件名称,资源文件在src目录下 -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="message"></property>
    </bean>
登录后复制

以上是SpringMVC的类型转换及验证方法介绍(附代码)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SpringBoot与SpringMVC的比较及差别分析 SpringBoot与SpringMVC的比较及差别分析 Dec 29, 2023 am 11:02 AM

SpringBoot和SpringMVC都是Java开发中常用的框架,但它们之间有一些明显的差异。本文将探究这两个框架的特点和用途,并对它们的差异进行比较。首先,我们来了解一下SpringBoot。SpringBoot是由Pivotal团队开发的,它旨在简化基于Spring框架的应用程序的创建和部署。它提供了一种快速、轻量级的方式来构建独立的、可执行

比较SpringBoot与SpringMVC的差异是什么? 比较SpringBoot与SpringMVC的差异是什么? Dec 29, 2023 am 10:46 AM

SpringBoot与SpringMVC的不同之处在哪里?SpringBoot和SpringMVC是两个非常流行的Java开发框架,用于构建Web应用程序。尽管它们经常分别被使用,但它们之间的不同之处也是很明显的。首先,SpringBoot可以被看作是一个Spring框架的扩展或者增强版。它旨在简化Spring应用程序的初始化和配置过程,以帮助开发人

spring和springmvc有哪些区别 spring和springmvc有哪些区别 Dec 29, 2023 pm 05:02 PM

spring和springmvc的区别:1、定位和功能;2、核心功能;3、应用领域;4、扩展性。详细介绍:1、定位和功能,Spring是一个综合性的应用程序开发框架,提供了依赖注入、面向切面编程、事务管理等功能,旨在简化企业级应用程序的开发,而Spring MVC是Spring框架中的一个模块,用于Web应用程序的开发,实现了MVC模式;2、核心功能等等。

SpringBoot与SpringMVC的区别是什么? SpringBoot与SpringMVC的区别是什么? Dec 29, 2023 pm 05:19 PM

SpringBoot和SpringMVC是Java开发中常用的两个框架,它们都是由Spring框架所提供的,但在功能和使用方式上有着一些区别。本文将分别介绍SpringBoot和SpringMVC的特点和区别。一、SpringBoot的特点:简化配置:SpringBoot通过约定优于配置的原则,大大简化了项目的配置过程。它可以自动配置项目所需要的参数,开发人

springboot和springmvc有哪些区别 springboot和springmvc有哪些区别 Jun 07, 2023 am 10:10 AM

springboot和springmvc区别是:​1、含义不同;2、配置不同;3、依赖项不同;4、开发时间不同;5、生产力不同;6、实现JAR打包功能的方式不同;7、是否提供批处理功能;8、作用不同;9、社区和文档支持不同;10、是否需要部署描述符。

Java的SpringMVC拦截器怎么用 Java的SpringMVC拦截器怎么用 May 13, 2023 pm 02:55 PM

拦截器(interceptor)的作用SpringMVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(InterceptorChain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。拦截器和过滤器区别区别过滤器(Filter)拦截器(Intercepter)使用范围是servlet规范中的一部分,任何JavaWeb工程都可以使用是Spri

Java API 开发中使用 SpringMVC 进行 Web 服务处理 Java API 开发中使用 SpringMVC 进行 Web 服务处理 Jun 17, 2023 pm 11:38 PM

随着互联网的发展,Web服务越来越普遍。JavaAPI作为一种应用编程接口,也在不断地推出新的版本来适应不同的应用场景。而SpringMVC作为一种流行的开源框架,能够帮助我们轻松地构建Web应用程序。本文将详细讲解在JavaAPI开发中,如何使用SpringMVC进行Web服务处理,包括配置SpringMVC、编写控制器、使用

比较SpringBoot和SpringMVC的异同点 比较SpringBoot和SpringMVC的异同点 Dec 29, 2023 am 08:30 AM

解析SpringBoot和SpringMVC之间的异同SpringBoot和SpringMVC是Java领域中非常重要的开发框架。虽然它们都属于Spring框架的一部分,但是在使用和功能上有一些明显的区别。本文将对SpringBoot和SpringMVC进行比较,解析它们之间的异同。首先,让我们来了解一下SpringBoot。SpringBo

See all articles