国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 Java java教程 SpringMVC的類型轉(zhuǎn)換及驗(yàn)證方法介紹(附代碼)

SpringMVC的類型轉(zhuǎn)換及驗(yàn)證方法介紹(附代碼)

Sep 28, 2018 pm 03:54 PM
springmvc

本篇文章給大家?guī)淼膬?nèi)容是關(guān)于SpringMVC的類型轉(zhuǎn)換及驗(yàn)證方法介紹(附代碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。

Spring mvc 數(shù)據(jù)綁定流程:

SpringMvc將ServletRequest對象及目標(biāo)方法的形參實(shí)例傳給WebDataBinderFactory實(shí)例,以創(chuàng)建DataBinder實(shí)例對象。DataBinder調(diào)用裝配在SpringMvc上下文中的ConversionService組件進(jìn)行類型轉(zhuǎn)換和數(shù)據(jù)格式化工作,將Servlet請求信息填充到形參對象中。調(diào)用Validator主鍵對已經(jīng)綁定了請求信息的形參對象精選數(shù)據(jù)有效性驗(yàn)證,并最終生成數(shù)據(jù)綁定結(jié)果BindingData對象。SpringMVC抽取BindingResult中的形參對象和校驗(yàn)錯(cuò)誤對象,將他們賦給處理方法的相應(yīng)參數(shù)

我們查看源代碼可以看到,通過WebDataBinderFactory創(chuàng)建DataBinder對象

自定義類型轉(zhuǎn)換器

當(dāng)我們碰到一些特殊場合,有可能需要我們自己定義類型轉(zhuǎn)換器。下麥呢來講解一個(gè)自定義類型轉(zhuǎn)器,將字符串轉(zhuǎn)換成emp對象,當(dāng)頁面無法完成數(shù)據(jù)綁定或者類型轉(zhuǎn)換時(shí),springmvc會拋出異常,異常信息可以使用BindingResult來進(jìn)行獲取。

Spring定義了三種類型的轉(zhuǎn)換器接口,實(shí)現(xiàn)任意一個(gè)轉(zhuǎn)換器接口都可以作為自定義轉(zhuǎn)換器注冊到ConversionServiceFactoryBean中。

Convertre:將S類型轉(zhuǎn)換為T類型。

ConverterFactory:將相同系類的多個(gè)“同質(zhì)”Converter封裝在一起,如果希望一種類型轉(zhuǎn)換成另一種類型以及子類對象(例如String轉(zhuǎn)換成Number以Number的子類),可以使用該轉(zhuǎn)換器

GenericConverter:會根據(jù)源類對象以及目標(biāo)類對象所在的宿主類中的上下文信息精選類型轉(zhuǎn)換。

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時(shí)SpringMVC中類型轉(zhuǎn)換器的核心接口,要添加自定義類型轉(zhuǎn)換器,需要實(shí)現(xiàn)該接口/利用ConversionServiceFactoryBean在Spring的IOC容器中第一一個(gè)ConversionService,并在Bean屬性配置對于的類型轉(zhuǎn)換器的實(shí)現(xiàn)類,SpringMvc處理方法的形參綁定時(shí)就會自動(dòng)調(diào)用該類型轉(zhuǎn)換器。

<!--將非mapping配置下的請求交給默認(rèn)的Servlet來處理 -->
    <mvc:default-servlet-handler />
    <bean id="conversionService"
        class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <ref bean="userConverter" />
            </set>
        </property>
    </bean>
    <!-- 注冊類型轉(zhuǎn)換器 -->
    <mvc:annotation-driven conversion-service="conversionService" />

在實(shí)際的開發(fā)同需要配置:標(biāo)簽

數(shù)據(jù)格式化

對屬性的輸入/輸出格式化,其本質(zhì)來講依然屬于類型轉(zhuǎn)換的范疇。Spring在格式化模塊中定義一個(gè)實(shí)現(xiàn)ConversionService接口的FarmattingConversionService實(shí)現(xiàn)類,該實(shí)現(xiàn)類擴(kuò)展了GenericConversionService,因此它既具有類型轉(zhuǎn)換的功能有具有格式化的功能。FormattingConversionService擁有一個(gè)FormattingConversionServiceFactoryBean工廠類,后者用于構(gòu)造前者。我們要注冊這個(gè)

<mvc:annotation-driven conversion-service="FormattingConversionServiceFactoryBean" />

JSR303

jsr303時(shí)java為bean數(shù)據(jù)合法性校驗(yàn)提供的標(biāo)準(zhǔn)框架,它已經(jīng)包含在JavaEE6.0中,JSR303通過在Bean屬性上標(biāo)注類似@NotNull,@Max等標(biāo)準(zhǔn)的數(shù)據(jù)指定驗(yàn)證規(guī)則,并通過標(biāo)注的驗(yàn)證接口對Bean進(jìn)行驗(yàn)證。

@NotEmpty
    @NotNull
    private String name;
    
    @NotNull
    @NotEmpty
    private String age;
    
    @NotNull
    @NotEmpty
    @Email
    private String email;

我們在前臺使用SpringMVC提供的Form標(biāo)簽使用Form:errors path 綁定屬性即可

@RequestMapping(value="/student",method=RequestMethod.POST)
    public String add(@Valid()Student student,BindingResult result){
        if (!result.hasErrors()) {//判斷是否有格式轉(zhuǎn)換錯(cuò)誤或者其他校驗(yàn)沒通過
            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的類型轉(zhuǎn)換及驗(yàn)證方法介紹(附代碼)的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

SpringBoot與SpringMVC的比較及差別分析 SpringBoot與SpringMVC的比較及差別分析 Dec 29, 2023 am 11:02 AM

SpringBoot和SpringMVC都是Java開發(fā)中常用的框架,但它們之間有一些明顯的差異。本文將探究這兩個(gè)框架的特點(diǎn)和用途,并對它們的差異進(jìn)行比較。首先,我們來了解一下SpringBoot。SpringBoot是由Pivotal團(tuán)隊(duì)開發(fā)的,它旨在簡化基于Spring框架的應(yīng)用程序的創(chuàng)建和部署。它提供了一種快速、輕量級的方式來構(gòu)建獨(dú)立的、可執(zhí)行

比較SpringBoot與SpringMVC的差異是什么? 比較SpringBoot與SpringMVC的差異是什么? Dec 29, 2023 am 10:46 AM

SpringBoot與SpringMVC的不同之處在哪里?SpringBoot和SpringMVC是兩個(gè)非常流行的Java開發(fā)框架,用于構(gòu)建Web應(yīng)用程序。盡管它們經(jīng)常分別被使用,但它們之間的不同之處也是很明顯的。首先,SpringBoot可以被看作是一個(gè)Spring框架的擴(kuò)展或者增強(qiáng)版。它旨在簡化Spring應(yīng)用程序的初始化和配置過程,以幫助開發(fā)人

spring和springmvc有哪些區(qū)別 spring和springmvc有哪些區(qū)別 Dec 29, 2023 pm 05:02 PM

spring和springmvc的區(qū)別:1、定位和功能;2、核心功能;3、應(yīng)用領(lǐng)域;4、擴(kuò)展性。詳細(xì)介紹:1、定位和功能,Spring是一個(gè)綜合性的應(yīng)用程序開發(fā)框架,提供了依賴注入、面向切面編程、事務(wù)管理等功能,旨在簡化企業(yè)級應(yīng)用程序的開發(fā),而Spring MVC是Spring框架中的一個(gè)模塊,用于Web應(yīng)用程序的開發(fā),實(shí)現(xiàn)了MVC模式;2、核心功能等等。

SpringBoot與SpringMVC的區(qū)別是什么? SpringBoot與SpringMVC的區(qū)別是什么? Dec 29, 2023 pm 05:19 PM

SpringBoot和SpringMVC是Java開發(fā)中常用的兩個(gè)框架,它們都是由Spring框架所提供的,但在功能和使用方式上有著一些區(qū)別。本文將分別介紹SpringBoot和SpringMVC的特點(diǎn)和區(qū)別。一、SpringBoot的特點(diǎn):簡化配置:SpringBoot通過約定優(yōu)于配置的原則,大大簡化了項(xiàng)目的配置過程。它可以自動(dòng)配置項(xiàng)目所需要的參數(shù),開發(fā)人

springboot和springmvc有哪些區(qū)別 springboot和springmvc有哪些區(qū)別 Jun 07, 2023 am 10:10 AM

springboot和springmvc區(qū)別是:?1、含義不同;2、配置不同;3、依賴項(xiàng)不同;4、開發(fā)時(shí)間不同;5、生產(chǎn)力不同;6、實(shí)現(xiàn)JAR打包功能的方式不同;7、是否提供批處理功能;8、作用不同;9、社區(qū)和文檔支持不同;10、是否需要部署描述符。

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

攔截器(interceptor)的作用SpringMVC的攔截器類似于Servlet開發(fā)中的過濾器Filter,用于對處理器進(jìn)行預(yù)處理和后處理。將攔截器按一定的順序聯(lián)結(jié)成一條鏈,這條鏈稱為攔截器鏈(InterceptorChain)。在訪問被攔截的方法或字段時(shí),攔截器鏈中的攔截器就會按其之前定義的順序被調(diào)用。攔截器也是AOP思想的具體實(shí)現(xiàn)。攔截器和過濾器區(qū)別區(qū)別過濾器(Filter)攔截器(Intercepter)使用范圍是servlet規(guī)范中的一部分,任何JavaWeb工程都可以使用是Spri

比較SpringBoot和SpringMVC的異同點(diǎn) 比較SpringBoot和SpringMVC的異同點(diǎn) Dec 29, 2023 am 08:30 AM

解析SpringBoot和SpringMVC之間的異同SpringBoot和SpringMVC是Java領(lǐng)域中非常重要的開發(fā)框架。雖然它們都屬于Spring框架的一部分,但是在使用和功能上有一些明顯的區(qū)別。本文將對SpringBoot和SpringMVC進(jìn)行比較,解析它們之間的異同。首先,讓我們來了解一下SpringBoot。SpringBo

Java API 開發(fā)中使用 SpringMVC 進(jìn)行 Web 服務(wù)處理 Java API 開發(fā)中使用 SpringMVC 進(jìn)行 Web 服務(wù)處理 Jun 17, 2023 pm 11:38 PM

隨著互聯(lián)網(wǎng)的發(fā)展,Web服務(wù)越來越普遍。JavaAPI作為一種應(yīng)用編程接口,也在不斷地推出新的版本來適應(yīng)不同的應(yīng)用場景。而SpringMVC作為一種流行的開源框架,能夠幫助我們輕松地構(gòu)建Web應(yīng)用程序。本文將詳細(xì)講解在JavaAPI開發(fā)中,如何使用SpringMVC進(jìn)行Web服務(wù)處理,包括配置SpringMVC、編寫控制器、使用

See all articles