《基于工業互聯網的SSM項目實戰-物料訂單管理系統》課件-CORE-07_第1頁
《基于工業互聯網的SSM項目實戰-物料訂單管理系統》課件-CORE-07_第2頁
《基于工業互聯網的SSM項目實戰-物料訂單管理系統》課件-CORE-07_第3頁
《基于工業互聯網的SSM項目實戰-物料訂單管理系統》課件-CORE-07_第4頁
《基于工業互聯網的SSM項目實戰-物料訂單管理系統》課件-CORE-07_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

學習目標了解數據綁定的流程以及數據校驗的方法掌握數據轉換以及格式化的方式了解物料排序單打印管理模塊的業務需求實現物料排序單打印管理模塊的功能情景導入

數據綁定

SpringMVC進行數據綁定的核心組件是DataBinder。SpringMVC數據綁定的流程如圖所示:數據綁定

數據綁定的流程分解步驟:1.用戶的請求會產生一個ServletRequest對象,根據請求信息獲取要處理數據的控制器方法(通過方法的簽名來匹配),將ServletRequest對象及控制器方法的參數對象實例傳遞給DataBinder。這個步驟由SpringMVC框架來完成。2.DataBinder調用在Spring中所裝配的ConversionService組件,完成數據類型轉換和數據格式化工作,并將ServletRequest中的請求參數填充到控制器參數對象中。3.DataBinder調用Validator組件對已經綁定了請求信息的參數對象進行數據合法性校驗。4.DataBinder將已通過校驗的參數對象進行處理并綁定到BindingResult對象。此時得到的BindingResult對象包含:完成數據綁定后的參數對象。相應的校驗錯誤對象。數據轉換數據轉換就是將請求中的參數信息轉換為目標方法所需要的特定類型。目前可用的方法主要有兩種:第一種就是Java所提供的java.beans.ProperyEditor接口。它的核心功能是將一個字符串轉換為Java對象。這種“原始”的轉換方式存在一些弊端:只能用于字符串和Java對象轉換,無法適用于任意兩個Java類型的直接轉換對轉換對象(包括源對象和目標對象)所在的上下文信息如注解等并不敏感第二種就是在Spring中的一個通用轉換模塊,這個模塊位于org.springframework.core.convert包。它支持任意兩種Java對象的轉換,很好的彌補了ProperyEditor方式的不足。Spring同時支持這兩種轉換方式,SpringMVC在進行數據轉換時可以搭配這兩種方式。數據轉換Spring通用轉換模式Spring轉換模塊的核心接口是org.springframework.core.convert.ConversionService。publicinterfaceConversionService{booleancanConvert(Class<?>var1,Class<?>var2);booleancanConvert(TypeDescriptorvar1,TypeDescriptorvar2);<T>Tconvert(Objectvar1,Class<T>var2);Objectconvert(Objectvar1,TypeDescriptorvar2,TypeDescriptorvar3);}數據轉換

類型轉換器Spring的核心包中定義了org.springframework.core.convert.converter包用于存放Spring的轉換器,包中定義了Convert、ConverterFactory和GenericConverter三種類型轉換器接口。Convert接口publicinterfaceConverter<S,T>{Tconvert(Svar1);}數據轉換

類型轉換器ConverterFactory接口一般在需要將一種類型轉換為另一種類型及其子類時用到,例如將String轉換為Integer或Double(Integer和Double是Number的子類)。publicinterfaceConverterFactory<S,R>{<TextendsR>Converter<S,T>getConverter(Class<T>var1);}數據轉換

類型轉換器GenericConverter接口GenericConverter相比于Convert<S,T>而言,它在轉換的時候會根據源類型對象的上下文信息進行類型轉換。publicinterfaceGenericConverter{Set<GenericConverter.ConvertiblePair>getConvertibleTypes();Objectconvert(Objectvar1,TypeDescriptorvar2,TypeDescriptorvar3);......}數據轉換

自定義編譯器SpringMVC不但支持新的轉換器框架,也支持JavaBeans的PropertyEditor。所以通過使用@InitBinder注解可以添加自定義編輯器來實現數據轉換。

publicclassDateEditorextendsPropertyEditorSupport{@OverridepublicvoidsetAsText(Stringtext)throwsIllegalArgumentException{SimpleDateFormatsimpleDateFormat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");try{Datedate=simpleDateFormat.parse(text);

setValue(date);}catch(Exceptiona)

{a.printStackTrace();}}}@InitBinderpublicvoidinitBinder(WebDataBinderbinder){binder.registerCustomEditor(Date.class,newDateEditor());}數據轉換

全局自定義編輯器使用全局自定義編輯器在全局范圍內進行數據轉換時,需要實現WebBindingInitialzer接口以及在該實現類中注冊自定義編輯器(無需在控制器中單獨使用@InitBinder,只需通過在applicationContext-mvc.xml中配置全局自定義編輯器。publicclassDateBindingInitializerimplementsWebBindingInitializer{@OverridepublicvoidinitBinder(WebDataBinderwebDataBinder,WebRequestwebRequest){webDataBinder.registerCustomEditor(Date.class,newDateEditor());}}數據轉換

有時,同一個Java數據類型的項目內會有多個不同的自定義轉換器或者自定義編輯器存在,此時SpringMVC在選擇上會遵循以下的優先級:@InitBinder裝配的自定義編輯器>ConverterService裝配的自定義轉換器>WebBindingInitialzer裝配的全局自定義編輯器轉換器優先級數據格式化Java類型與String類型之間的相互轉換,就是數據的格式化和解析。SpringMVC的數據格式化框架從Spring3.0版本開始引入,放在org.springframework.format包中,這個框架核心接口是Formatter。PropertyEditor和Formatter的都用于Java類型和String類型的轉換,因此可以使用Formatter代替PropertyEditor進行數據解析和格式化的工作。相比于PropertyEditor,Formatter細粒度可以達到字段級別。需要注意的是,PropertyEditor和Formatter只能將String類型和其他Java類型進行轉換,因此源類型和目標類型必須有一者是String類型。因此相比于Converter轉換器,Formatter更適合在處理用戶請求時使用,而Converter則適用于任意情況下的數據轉換。數據格式化

Formatter接口Formatter屬于Spring通用轉換模塊,在Spring項目的任意位置都可以使用它來完成數據解析和格式化。數據格式化

Printer接口Printer用于對象的格式化,即Java類型到String的轉換。在Printer<T>中定義了方法print(Tvar1,Localevar2),它的作用是根據Locale類型對象中所包含的本地化信息(用于告知SpringMVC如何進行格式化的信息),將T類型的對象以某種格式轉換為String類型的對象。publicinterfacePrinter<T>{//Locale類型的var2中包含本地化信息Stringprint(Tvar1,Localevar2);}數據格式化

Parser接口Parser用于String類型對象的解析。Parser中定義方法parse(Stringvar1,Localevar2),它的作用是根據Locale類型對象中所包含的本地化信息,將String類型的對象以某種格式轉換為T類型的對象。publicinterfaceParser<T>{

Tparse(Stringvar1,Localevar2)throwsParseException;

}數據格式化

Formatter接口Formatter繼承Printer和Parser,沒有特有的接口方法,可以根據不同的需要來完成T類型對象的解析和格式化兩種工作。publicinterfaceFormatter<T>extendsPrinter<T>,Parser<T>{}數據格式化

注解方式實現格式化使用AnnotationFormarmatterFactory<AextendsAnnotation>是通過注解方式實現數據的格式化轉換。它的實現需要通過以下幾個步驟:對Bean屬性進行配置SpringMVC處理方法參數綁定數據在控制器添加注解,使模型數據輸出時按照相應的注解進行數據格式化轉換,用到的注解分別是:@DateTimeFormatter和@NumberFormatter。這兩個注解所有的屬性都是互斥的,只能出現其中的一個屬性數據校驗Web應用是面向所有網絡用戶群體的,在輸入時可能會產生非法數據,因此Web應用通常都需要將這些非法數據過濾掉,而這個非法數據的過濾過程就是數據校驗。根據Web應用的機制通常將數據驗證分為客戶端驗證和服務端驗證。客戶端校驗是由客戶端程序進行的數據校驗,一般用來防止正常用戶的錯誤輸入客戶端校驗服務端校驗服務端校驗是由服務端程序進行的數據校驗,一般用來防止惡意用戶的惡意輸入,而這些惡意輸入一般都是客戶端無法完成的。數據校驗

Validation校驗Validation校驗是Spring獨立的數據校驗框架。接下來對Validation校驗的一些重要的類和接口進行介紹:Validator:Spring進行數據校驗的核心接口Errors:用于保存校驗結果的參數對象類型有兩種,分別為Errors和BindingResult。

BindingResult作為Errors的擴展,可以同時獲取數據綁定結果對象信息validationUtils:Spring提供的工具類,用于給Errors對象保存錯誤LocalValidatorFactoryBean:同時實現了Spring的Validator接口和JSR303的Validator接口數據校驗

JSR303校驗JSR303是JavaEE6中的一項子規范,是Java為Bean數據的合法性校驗所提供的一個標準規范。這個規范就是BeanValidation。它主

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論