使用SpringMVC怎么實(shí)現(xiàn)一個(gè)類型轉(zhuǎn)換功能

這篇文章主要介紹了使用SpringMVC怎么實(shí)現(xiàn)一個(gè)類型轉(zhuǎn)換功能,此處給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考價(jià)值,需要的朋友可以參考下:

創(chuàng)新互聯(lián)公司成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計(jì)、行業(yè) / 企業(yè)門戶設(shè)計(jì)推廣、行業(yè)門戶平臺運(yùn)營、app軟件開發(fā)公司、成都手機(jī)網(wǎng)站制作、微信網(wǎng)站制作、軟件開發(fā)、服務(wù)器托管機(jī)柜等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)公司可以獲得的服務(wù)效果。

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

使用SpringMVC怎么實(shí)現(xiàn)一個(gè)類型轉(zhuǎn)換功能

自定義類型轉(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,T>:將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í)就會自動調(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ā)同需要配置:<mvc:annotation-driven />標(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怎么實(shí)現(xiàn)一個(gè)類型轉(zhuǎn)換功能

到此這篇關(guān)于使用SpringMVC怎么實(shí)現(xiàn)一個(gè)類型轉(zhuǎn)換功能的文章就介紹到這了,更多相關(guān)的內(nèi)容請搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!

分享標(biāo)題:使用SpringMVC怎么實(shí)現(xiàn)一個(gè)類型轉(zhuǎn)換功能
路徑分享:http://muchs.cn/article28/pppjcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號面包屑導(dǎo)航、外貿(mào)建站小程序開發(fā)、靜態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)