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

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

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

Sep 28, 2018 pm 03:54 PM
springmvc

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

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

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

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

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

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

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

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

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

GenericConverter:會根據(jù)源類對象以及目標類對象所在的宿主類中的上下文信息精選類型轉(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時SpringMVC中類型轉(zhuǎn)換器的核心接口,要添加自定義類型轉(zhuǎn)換器,需要實現(xiàn)該接口/利用ConversionServiceFactoryBean在Spring的IOC容器中第一一個ConversionService,并在Bean屬性配置對于的類型轉(zhuǎn)換器的實現(xiàn)類,SpringMvc處理方法的形參綁定時就會自動調(diào)用該類型轉(zhuǎn)換器。

<!--將非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>
    <!-- 注冊類型轉(zhuǎn)換器 -->
    <mvc:annotation-driven conversion-service="conversionService" />

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

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

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

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

JSR303

jsr303時java為bean數(shù)據(jù)合法性校驗提供的標準框架,它已經(jīng)包含在JavaEE6.0中,JSR303通過在Bean屬性上標注類似@NotNull,@Max等標準的數(shù)據(jù)指定驗證規(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()) {//判斷是否有格式轉(zhuǎ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)換及驗證方法介紹(附代碼)的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

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

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

SpringBoot與SpringMVC的不同之處在哪里?SpringBoot和SpringMVC是兩個非常流行的Java開發(fā)框架,用于構(gòu)建Web應(yīng)用程序。盡管它們經(jīng)常分別被使用,但它們之間的不同之處也是很明顯的。首先,SpringBoot可以被看作是一個Spring框架的擴展或者增強版。它旨在簡化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、擴展性。詳細介紹:1、定位和功能,Spring是一個綜合性的應(yīng)用程序開發(fā)框架,提供了依賴注入、面向切面編程、事務(wù)管理等功能,旨在簡化企業(yè)級應(yīng)用程序的開發(fā),而Spring MVC是Spring框架中的一個模塊,用于Web應(yīng)用程序的開發(fā),實現(xiàn)了MVC模式;2、核心功能等等。

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

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

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

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

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

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

比較SpringBoot和SpringMVC的異同點 比較SpringBoot和SpringMVC的異同點 Dec 29, 2023 am 08:30 AM

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

Java API 開發(fā)中使用 SpringMVC 進行 Web 服務(wù)處理 Java API 開發(fā)中使用 SpringMVC 進行 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)用程序。本文將詳細講解在JavaAPI開發(fā)中,如何使用SpringMVC進行Web服務(wù)處理,包括配置SpringMVC、編寫控制器、使用

See all articles