亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解SpringMVC的類型轉(zhuǎn)換及驗證方法

 更新時間:2018年10月09日 11:26:50   投稿:laozhang  
在本篇文章里面我們給大家詳細分析了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中的形參對象和校驗錯誤對象,將他們賦給處理方法的相應參數(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,T>:將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ā)同需要配置:<mvc:annotation-driven />標簽

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

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

<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>

相關文章

  • JavaWeb 入門:Hello Servlet

    JavaWeb 入門:Hello Servlet

    這篇文章主要介紹了Servlet開發(fā)JavaWeb工程示例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • java實現(xiàn)俄羅斯方塊

    java實現(xiàn)俄羅斯方塊

    這篇文章主要為大家詳細介紹了java實現(xiàn)俄羅斯方塊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • idea搭建SSM框架遇踩的坑(附完整過程)

    idea搭建SSM框架遇踩的坑(附完整過程)

    最近準備搭建一個SSM框架,由于很久沒有搭建了,一來就遇到各種問題,折騰了一天終于搞定了,特此記錄一下遇到的問題,下面這篇文章主要給大家介紹了關于idea搭建SSM框架遇踩的坑,文中還附完整過程,需要的朋友可以參考下
    2023-04-04
  • Java服務假死之生產(chǎn)事故的排查與優(yōu)化問題

    Java服務假死之生產(chǎn)事故的排查與優(yōu)化問題

    在服務器上通過curl命令調(diào)用一個Java服務的查詢接口,半天沒有任何響應,怎么進行這一現(xiàn)象排查呢,下面小編給大家記一次生產(chǎn)事故的排查與優(yōu)化——Java服務假死問題,感興趣的朋友一起看看吧
    2022-07-07
  • springboot驗證碼的生成與驗證的兩種方法

    springboot驗證碼的生成與驗證的兩種方法

    本文主要介紹了springboot驗證碼的生成與驗證的兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • java制作簡單的坦克大戰(zhàn)

    java制作簡單的坦克大戰(zhàn)

    坦克大戰(zhàn)是我們小時候玩紅白機時代的經(jīng)典游戲,看到有不少小伙伴都使用各種語言實現(xiàn)了一下,手癢癢,也使用java做的一個比較簡單的坦克大戰(zhàn),主要面向于學過Java的人群,與學了一段時間的人,有利于面向?qū)ο笏枷氲奶岣撸扑]給大家。
    2015-03-03
  • Mybatis加載策略的實現(xiàn)方法

    Mybatis加載策略的實現(xiàn)方法

    Mybatis中一對一,一對多,多對多關系的配置及實現(xiàn),可以實現(xiàn)對象的關聯(lián)查詢。實際開發(fā)過程中很多時候我們并不需要總是在加載用戶信息時就一定要加載他的訂單信息,這是就是我們常說的延時加載,本文給大家詳細介紹實現(xiàn)方法,一起看看吧
    2022-02-02
  • Java Spring注解之@Async的基本用法和示例

    Java Spring注解之@Async的基本用法和示例

    Spring為任務調(diào)度與異步方法執(zhí)行提供了注解支持,通過在方法上設置@Async注解,可使得方法被異步調(diào)用,下面這篇文章主要給大家介紹了關于Java Spring注解之@Async的基本用法和示例,需要的朋友可以參考下
    2022-03-03
  • SpringMVC中的DispatcherServlet結(jié)構和初始化詳解

    SpringMVC中的DispatcherServlet結(jié)構和初始化詳解

    這篇文章主要介紹了SpringMVC中的DispatcherServlet結(jié)構和初始化詳解,SpringMVC中Spring容器的關系是通過監(jiān)聽方式啟動的,那么Spring與Servlet的Web容器(如:Tomcat、jetty)的關系則是通過DispatcherServlet進行關聯(lián),需要的朋友可以參考下
    2024-01-01
  • Java C++實現(xiàn)相同MD5加密算法的方式

    Java C++實現(xiàn)相同MD5加密算法的方式

    這篇文章主要介紹了Java與C++實現(xiàn)相同MD5加密算法的方法,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09

最新評論