本篇文章給大家?guī)淼膬热菔顷P于SpringMVC的類型轉換及驗證方法介紹(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
Spring mvc 數據綁定流程:
SpringMvc將ServletRequest對象及目標方法的形參實例傳給WebDataBinderFactory實例,以創(chuàng)建DataBinder實例對象。DataBinder調用裝配在SpringMvc上下文中的ConversionService組件進行類型轉換和數據格式化工作,將Servlet請求信息填充到形參對象中。調用Validator主鍵對已經綁定了請求信息的形參對象精選數據有效性驗證,并最終生成數據綁定結果BindingData對象。SpringMVC抽取BindingResult中的形參對象和校驗錯誤對象,將他們賦給處理方法的相應參數
我們查看源代碼可以看到,通過WebDataBinderFactory創(chuàng)建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" />
在實際的開發(fā)同需要配置:
數據格式化
對屬性的輸入/輸出格式化,其本質來講依然屬于類型轉換的范疇。Spring在格式化模塊中定義一個實現ConversionService接口的FarmattingConversionService實現類,該實現類擴展了GenericConversionService,因此它既具有類型轉換的功能有具有格式化的功能。FormattingConversionService擁有一個FormattingConversionServiceFactoryBean工廠類,后者用于構造前者。我們要注冊這個
<mvc:annotation-driven conversion-service="FormattingConversionServiceFactoryBean" />
JSR303
jsr303時java為bean數據合法性校驗提供的標準框架,它已經包含在JavaEE6.0中,JSR303通過在Bean屬性上標注類似@NotNull,@Max等標準的數據指定驗證規(guī)則,并通過標注的驗證接口對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

Undress AI Tool
Gambar buka pakaian secara percuma

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

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

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)

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;

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

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
