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>
Atas ialah kandungan terperinci SpringMVC的类型转换及验证方法介绍(附代码). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



SpringBoot dan SpringMVC adalah kedua-dua rangka kerja yang biasa digunakan dalam pembangunan Java, tetapi terdapat beberapa perbezaan yang jelas antara mereka. Artikel ini akan meneroka ciri dan penggunaan kedua-dua rangka kerja ini dan membandingkan perbezaannya. Mula-mula, mari belajar tentang SpringBoot. SpringBoot telah dibangunkan oleh pasukan Pivotal untuk memudahkan penciptaan dan penggunaan aplikasi berdasarkan rangka kerja Spring. Ia menyediakan cara yang pantas dan ringan untuk membina bersendirian, boleh dilaksanakan

Apakah perbezaan antara SpringBoot dan SpringMVC? SpringBoot dan SpringMVC ialah dua rangka kerja pembangunan Java yang sangat popular untuk membina aplikasi web. Walaupun mereka sering digunakan secara berasingan, perbezaan antara mereka adalah jelas. Pertama sekali, SpringBoot boleh dianggap sebagai lanjutan atau versi dipertingkatkan bagi rangka kerja Spring. Ia direka bentuk untuk memudahkan proses permulaan dan konfigurasi aplikasi Spring untuk membantu pembangun

Perbezaan antara spring dan springmvc: 1. Kedudukan dan fungsi; 2. Fungsi teras; Pengenalan terperinci: 1. Kedudukan dan fungsi Spring ialah rangka kerja pembangunan aplikasi komprehensif yang menyediakan suntikan pergantungan, pengaturcaraan berorientasikan aspek, pengurusan transaksi dan fungsi lain Ia direka untuk memudahkan pembangunan aplikasi peringkat perusahaan, dan Spring MVC ialah Rangka kerja Spring. Modul di dalamnya digunakan untuk pembangunan aplikasi Web dan melaksanakan corak MVC 2. Fungsi teras dan sebagainya.

SpringBoot dan SpringMVC ialah dua rangka kerja yang biasa digunakan dalam pembangunan Java Kedua-duanya disediakan oleh rangka kerja Spring, tetapi ia mempunyai beberapa perbezaan dalam fungsi dan penggunaan. Artikel ini akan memperkenalkan ciri dan perbezaan SpringBoot dan SpringMVC masing-masing. 1. Ciri-ciri SpringBoot: Konfigurasi ringkas: SpringBoot sangat memudahkan proses konfigurasi projek melalui prinsip konvensyen berbanding konfigurasi. Ia secara automatik boleh mengkonfigurasi parameter yang diperlukan oleh projek dan pembangun

Perbezaan antara springboot dan springmvc adalah: 1. Makna yang berbeza; 3. Kebergantungan yang berbeza; 5. Produktiviti yang berbeza; Fungsi yang disediakan; 8. Fungsi yang berbeza;

Dengan perkembangan Internet, perkhidmatan Web menjadi semakin biasa. Sebagai antara muka pengaturcaraan aplikasi, JavaAPI sentiasa melancarkan versi baharu untuk menyesuaikan diri dengan senario aplikasi yang berbeza. Sebagai rangka kerja sumber terbuka yang popular, SpringMVC boleh membantu kami membina aplikasi web dengan mudah. Artikel ini akan menerangkan secara terperinci cara menggunakan SpringMVC untuk pemprosesan perkhidmatan Web dalam pembangunan JavaAPI, termasuk mengkonfigurasi SpringMVC, menulis pengawal dan menggunakan

Peranan pemintas SpringMVC pemintas adalah serupa dengan penapis dalam pembangunan Servlet, yang digunakan untuk pra-memproses dan pasca-memproses pemproses. Pemintas disambungkan ke dalam rantai dalam susunan tertentu, dan rantai ini dipanggil rantai pemintas (InterceptorChain). Apabila kaedah atau medan yang dipintas diakses, pemintas dalam rantaian pemintas akan dipanggil mengikut susunan yang telah ditakrifkan sebelum ini. Pemintas juga merupakan pelaksanaan khusus idea AOP. Perbezaan antara pemintas dan penapis: Penapis (Penapis) Skop penggunaan pemintas (Pemintas) adalah sebahagian daripada spesifikasi servlet dan boleh digunakan oleh mana-mana projek JavaWeb

Menganalisis persamaan dan perbezaan antara SpringBoot dan SpringMVC SpringBoot dan SpringMVC adalah rangka kerja pembangunan yang sangat penting dalam bidang Java. Walaupun kedua-duanya adalah sebahagian daripada rangka kerja Spring, terdapat beberapa perbezaan yang jelas dalam penggunaan dan kefungsian. Artikel ini akan membandingkan SpringBoot dan SpringMVC dan menganalisis persamaan dan perbezaan antara mereka. Mula-mula, mari belajar tentang SpringBoot. SpringBo
