使用SpringMVC怎么實現一個類型轉換功能

這篇文章主要介紹了使用SpringMVC怎么實現一個類型轉換功能,此處給大家介紹的非常詳細,對大家的學習或工作具有一定的參考價值,需要的朋友可以參考下:

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

Spring mvc 數據綁定流程

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

我們查看源代碼可以看到,通過WebDataBinderFactory創建DataBinder對象

使用SpringMVC怎么實現一個類型轉換功能

自定義類型轉換器

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

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

Convertre<S,T>:將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" />

在實際的開發同需要配置:<mvc:annotation-driven />標簽

數據格式化

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

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

JSR303

jsr303時java為bean數據合法性校驗提供的標準框架,它已經包含在JavaEE6.0中,JSR303通過在Bean屬性上標注類似@NotNull,@Max等標準的數據指定驗證規則,并通過標注的驗證接口對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>

使用SpringMVC怎么實現一個類型轉換功能

到此這篇關于使用SpringMVC怎么實現一個類型轉換功能的文章就介紹到這了,更多相關的內容請搜索創新互聯以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持創新互聯!

分享標題:使用SpringMVC怎么實現一個類型轉換功能
路徑分享:http://m.kartarina.com/article28/pppjcp.html

成都網站建設公司_創新互聯,為您提供微信公眾號面包屑導航、外貿建站、小程序開發、靜態網站、手機網站建設

廣告

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

手機網站建設
主站蜘蛛池模板: 精品无码专区亚洲| 亚洲AV无码专区电影在线观看| 亚洲成a∨人片在无码2023| 无码精品一区二区三区免费视频 | 无码人妻少妇色欲AV一区二区| 99国产精品无码| 亚洲熟妇无码AV在线播放| 无码中文字幕一区二区三区| 国产成人无码一二三区视频| 无码无需播放器在线观看| 无码人妻精品一区二区三区久久| 国产午夜无码片在线观看| 亚洲色av性色在线观无码| 亚洲av永久无码精品漫画 | 国产99久久九九精品无码| 久久久久久人妻无码| h无码动漫在线观看| 国产精品亚洲а∨无码播放不卡 | 无码AV波多野结衣久久| 亚洲人成无码网站久久99热国产| 亚洲AV成人无码天堂| 久久久久亚洲AV成人无码网站 | 无码av不卡一区二区三区| 无码精品前田一区二区 | 日韩AV无码一区二区三区不卡| 亚洲AV无码一区二区三区在线观看 | 亚洲国产精品无码中文lv| 亚洲热妇无码AV在线播放| 亚洲精品97久久中文字幕无码 | 国产精品亚洲а∨无码播放不卡| 高清无码午夜福利在线观看| 中文字幕久久久人妻无码| 亚洲AV无码专区在线亚| 无码夫の前で人妻を侵犯| 精品欧洲av无码一区二区14| 无码夫の前で人妻を侵犯| 亚洲av无码兔费综合| 2020无码专区人妻系列日韩| 毛片一区二区三区无码| 国产成人综合日韩精品无码| 一本一道中文字幕无码东京热|