SpringMVC4教程-超權威超詳細_第1頁
SpringMVC4教程-超權威超詳細_第2頁
SpringMVC4教程-超權威超詳細_第3頁
SpringMVC4教程-超權威超詳細_第4頁
SpringMVC4教程-超權威超詳細_第5頁
已閱讀5頁,還剩133頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

SpringMVC教程,內容概要,1.SpringMVC概述2.SpringMVC的HelloWorld3.使用RequestMapping映射請求4.映射請求參數,returnsuccess;,/WEB-INF/view/success.jsp,web.xml,Handler,SpringMVC配置文件,實際的物理視圖,內容概要,SpringMVC概述SpringMVC的HelloWorld使用RequestMapping映射請求映射請求參數returnuser;,RequestMapping(value=/handle71)publicStringhandle71(ModelAttribute(“user”)Useruser).RequestMapping(value=/handle72)publicStringhandle72(ModelMapmodelMap,SessionStatussessionStatus).,該方法會往隱含模型中添加一,個名為user的模型屬性,內容概要,SpringMVC概述SpringMVC的HelloWorld使用RequestMapping映射請求映射請求參數filename=xxx.xls,關于重定向,一般情況下,控制器方法返回字符串類型的值會被當成邏輯視圖名處理如果返回的字符串中帶forward:或redirect:前綴時,SpringMVC會對他們進行特殊處理:將forward:和redirect:當成指示符,其后的字符串作為URL來處理redirect:success.jsp:會完成一個到success.jsp的重定向的操作forward:success.jsp:會完成一個到success.jsp的轉發(fā)操作,內容概要,SpringMVC概述SpringMVC的HelloWorld使用RequestMapping映射請求映射請求參數&請求頭處理模型數據視圖和視圖解析器RESTfulCRUDSpringMVC表單標簽&處理靜態(tài)資源數據轉換&數據格式化&數據校驗處理JSON:使用HttpMessageConverter國際化文件的上傳使用攔截器,異常處理SpringMVC運行流程在Spring的環(huán)境下使用SpringMVCSpringMVC對比Struts2,RESTfulSpringMVCCRUD,1.顯示所有員工信息URI:emps請求方式:GET顯示效果,RESTfulSpringMVCCRUD,2.添加所有員工信息顯示添加頁面:URI:emp請求方式:GET顯示效果,添加員工信息:,URI:emp請求方式:POST顯示效果:完成添加,重定向到list頁面。,RESTfulSpringMVCCRUD,3.刪除操作URL:emp/id請求方式:DELETE刪除后效果:對應記錄從數據表中刪除4.修改操作:lastName不可修改!顯示修改頁面:URI:emp/id請求方式:GET顯示效果:回顯表單。修改員工信息:URI:emp請求方式:PUT顯示效果:完成修改,重定向到list頁面。,RESTfulSpringMVCCRUD,相關的類:實體類:Employee、DepartmentHandler:EmployeeHandlerDao:EmployeeDao、DepartmentDao相關的頁面list.jspinput.jspedit.jsp,update(),從數據庫中取出數據,.表單參數賦值,.傳遞給目標方法,內容概要,SpringMVC概述SpringMVC的HelloWorld使用RequestMapping映射請求映射請求參數&請求頭處理模型數據視圖和視圖解析器RESTfulCRUDSpringMVC表單標簽&處理靜態(tài)資源數據轉換&數據格式化&數據校驗處理JSON:使用HttpMessageConverter國際化文件的上傳使用攔截器,異常處理SpringMVC運行流程在Spring的環(huán)境下使用SpringMVCSpringMVC對比Struts2,使用Spring的表單標簽,通過SpringMVC的表單標簽可以實現將模型數據中的屬性和HTML表單元素相綁定,以實現表單數據更便捷編輯和表單值的回顯,form標簽,一般情況下,通過GET請求獲取表單頁面,而通過POST請求提交表單頁面,因此獲取表單頁面和提交表單頁面的URL是相同的。只要滿足該最佳條件的契約,標簽就無需通過action屬性指定表單提交的URL可以通過modelAttribute屬性指定綁定的模型屬性,若沒有指定該屬性,則默認從request域對象中讀取command的表單bean,如果該屬性值也不存在,則會發(fā)生錯誤。,表單標簽,SpringMVC提供了多個表單組件標簽,如、等,用以綁定表單字段的屬性值,它們的共有屬性如下:path:表單字段,對應html元素的name屬性,支持級聯屬性htmlEscape:是否對表單值的HTML特殊字符進行轉換,默認值為truecssClass:表單組件對應的CSS樣式類名cssErrorClass:表單組件的數據存在錯誤時,采取的CSS樣式,表單標簽,form:input、form:password、form:hidden、form:textarea:對應HTML表單的text、password、hidden、textarea標簽form:radiobutton:單選框組件標簽,當表單bean對應的屬性值和value值相等時,單選框被選中form:radiobuttons:單選框組標簽,用于構造多個單選框items:可以是一個List、String或MapitemValue:指定radio的value值。可以是集合中bean的一個屬性值itemLabel:指定radio的label值delimiter:多個單選框可以通過delimiter指定分隔符,表單標簽,form:checkbox:復選框組件。用于構造單個復選框form:checkboxs:用于構造多個復選框。使用方式同form:radiobuttons標簽form:select:用于構造下拉框組件。使用方式同form:radiobuttons標簽form:option:下拉框選項組件標簽。使用方式同form:radiobuttons標簽form:errors:顯示表單組件或數據校驗所對應的錯誤:顯示表單所有的錯誤:顯示所有以user為前綴的屬性對應的錯誤:顯示特定表單對象屬性的錯誤,內容概要,SpringMVC概述SpringMVC的HelloWorld使用RequestMapping映射請求映射請求參數&請求頭處理模型數據視圖和視圖解析器RESTfulCRUDSpringMVC表單標簽&處理靜態(tài)資源數據轉換&數據格式化&數據校驗處理JSON:使用HttpMessageConverter國際化文件的上傳使用攔截器,異常處理SpringMVC運行流程在Spring的環(huán)境下使用SpringMVCSpringMVC對比Struts2,處理靜態(tài)資源,優(yōu)雅的REST風格的資源URL不希望帶.html或.do等后綴若將DispatcherServlet請求映射配置為/,則SpringMVC將捕獲WEB容器的所有請求,包括靜態(tài)資源的請求,SpringMVC會將他們當成一個普通請求處理,因找不到對應處理器將導致錯誤??梢栽赟pringMVC的配置文件中配置的方式解決靜態(tài)資源的問題:將在SpringMVC上下文中定義一個DefaultServletHttpRequestHandler,它會對進入DispatcherServlet的請求進行篩查,如果發(fā)現是沒有經過映射的請求,就將該請求交由WEB應用服務器默認的Servlet處理,如果不是靜態(tài)資源的請求,才由DispatcherServlet繼續(xù)處理一般WEB應用服務器默認的Servlet的名稱都是default。若所使用的WEB服務器的默認Servlet名稱不是default,則需要通過default-servlet-name屬性顯式指定,內容概要,SpringMVC概述SpringMVC的HelloWorld使用RequestMapping映射請求映射請求參數&請求頭處理模型數據視圖和視圖解析器RESTfulCRUDSpringMVC表單標簽&處理靜態(tài)資源數據轉換&數據格式化&數據校驗處理JSON:使用HttpMessageConverter國際化文件的上傳使用攔截器,異常處理SpringMVC運行流程在Spring的環(huán)境下使用SpringMVCSpringMVC對比Struts2,數據綁定流程,1.SpringMVC主框架將ServletRequest對象及目標方法的入參實例傳遞給WebDataBinderFactory實例,以創(chuàng)建DataBinder實例對象2.DataBinder調用裝配在SpringMVC上下文中的ConversionService組件進行數據類型轉換、數據格式化工作。將Servlet中的請求信息填充到入參對象中3.調用Validator組件對已經綁定了請求消息的入參對象進行數據合法性校驗,并最終生成數據綁定結果BindingData對象4.SpringMVC抽取BindingResult中的入參對象和校驗錯誤對象,將它們賦給處理方法的響應入參,數據綁定流程,SpringMVC通過反射機制對目標處理方法進行解析,將請求消息綁定到處理方法的入參中。數據綁定的核心部件是DataBinder,運行機制如下:,DataBinder,ConversionService,Validator,3,4,5,處理方法入參對象BindingResult處理方法的簽名,1,ServletRequest,2,數據類型轉換/格式化,數據校驗,數據綁定流程,數據綁定流程,數據轉換,SpringMVC上下文中內建了很多轉換器,可完成大多數Java類型的轉換工作。ConversionServiceconverters=java.lang.Boolean-java.lang.String:org.springframework.core.convert.support.ObjectToStringConverterf874cajava.lang.Character-java.lang.Number:CharacterToNumberFactoryf004c9java.lang.Character-java.lang.String:ObjectToStringConverter68a961java.lang.Enum-java.lang.String:EnumToStringConverter12f060ajava.lang.Number-java.lang.Character:NumberToCharacterConverter1482ac5java.lang.Number-java.lang.Number:NumberToNumberConverterFactory126c6fjava.lang.Number-java.lang.String:ObjectToStringConverter14888e8java.lang.String-java.lang.Boolean:StringToBooleanConverter1ca6626java.lang.String-java.lang.Character:StringToCharacterConverter1143800java.lang.String-java.lang.Enum:StringToEnumConverterFactory1bba86ejava.lang.String-java.lang.Number:StringToNumberConverterFactory18d2c12java.lang.String-java.util.Locale:StringToLocaleConverter3598e1java.lang.String-java.util.Properties:StringToPropertiesConverterc90828java.lang.String-java.util.UUID:StringToUUIDConvertera42f23java.util.Locale-java.lang.String:ObjectToStringConverterc7e20ajava.util.Properties-java.lang.String:PropertiesToStringConverter367a7fjava.util.UUID-java.lang.String:ObjectToStringConverter112b07f,自定義類型轉換器,ConversionService是Spring類型轉換體系的核心接口??梢岳肅onversionServiceFactoryBean在Spring的IOC容器中定義一個ConversionService.Spring將自動識別出IOC容器中的ConversionService,并在Bean屬性配置及SpringMVC處理方法入參綁定等場合使用它進行數據的轉換可通過ConversionServiceFactoryBean的converters屬性注冊自定義的類型轉換器,Spring支持的轉換器,Spring定義了3種類型的轉換器接口,實現任意一個轉換器接口都可以作為自定義轉換器注冊到ConversionServiceFactroyBean中:Converter:將S類型對象轉為T類型對象ConverterFactory:將相同系列多個“同質”Converter封裝在一起。如果希望將一種類型的對象轉換為另一種類型及其子類的對象(例如將String轉換為Number及Number子類(Integer、Long、Double等)對象)可使用該轉換器工廠類GenericConverter:會根據源類對象及目標類對象所在的宿主類中的上下文信息進行類型轉換,自定義轉換器示例,會將自定義的ConversionService注冊到SpringMVC的上下文中,關于mvc:annotation-driven,會自動注冊RequestMappingHandlerMapping、RequestMappingHandlerAdapter與ExceptionHandlerExceptionResolver三個bean。還將提供以下支持:支持使用ConversionService實例對表單參數進行類型轉換支持使用NumberFormatannotation、DateTimeFormat注解完成數據類型的格式化支持使用Valid注解對JavaBean實例進行JSR303驗證支持使用RequestBody和ResponseBody注解,既沒有配置也沒有配置,配置了但沒有配置,既配置了又配置,InitBinder,由InitBinder標識的方法,可以對WebDataBinder對象進行初始化。WebDataBinder是DataBinder的子類,用于完成由表單字段到JavaBean屬性的綁定InitBinder方法不能有返回值,它必須聲明為void。InitBinder方法的參數通常是是WebDataBinder,數據綁定流程,SpringMVC通過反射機制對目標處理方法進行解析,將請求消息綁定到處理方法的入參中。數據綁定的核心部件是DataBinder,運行機制如下:,DataBinder,ConversionService,Validator,3,4,5,處理方法入參對象BindingResult處理方法的簽名,1,ServletRequest,2,數據類型轉換/格式化,數據校驗,內容概要,SpringMVC概述SpringMVC的HelloWorld使用RequestMapping映射請求映射請求參數&請求頭處理模型數據視圖和視圖解析器RESTfulCRUDSpringMVC表單標簽&處理靜態(tài)資源數據轉換&數據格式化&數據校驗處理JSON:使用HttpMessageConverter國際化文件的上傳使用攔截器,異常處理SpringMVC運行流程在Spring的環(huán)境下使用SpringMVCSpringMVC對比Struts2,數據格式化,對屬性對象的輸入/輸出進行格式化,從其本質上講依然屬于“類型轉換”的范疇。Spring在格式化模塊中定義了一個實現ConversionService接口的FormattingConversionService實現類,該實現類擴展了GenericConversionService,因此它既具有類型轉換的功能,又具有格式化的功能FormattingConversionService擁有一個FormattingConversionServiceFactroyBean工廠類,后者用于在Spring上下文中構造前者,數據格式化,FormattingConversionServiceFactroyBean內部已經注冊了:NumberFormatAnnotationFormatterFactroy:支持對數字類型的屬性使用NumberFormat注解JodaDateTimeFormatAnnotationFormatterFactroy:支持對日期類型的屬性使用DateTimeFormat注解裝配了FormattingConversionServiceFactroyBean后,就可以在SpringMVC入參綁定及模型數據輸出時使用注解驅動了。默認創(chuàng)建的ConversionService實例即為FormattingConversionServiceFactroyBean,日期格式化,DateTimeFormat注解可對java.util.Date、java.util.Calendar、java.long.Long時間類型進行標注:pattern屬性:類型為字符串。指定解析/格式化字段數據的模式,如:”yyyy-MM-ddhh:mm:ss”iso屬性:類型為DateTimeFormat.ISO。指定解析/格式化字段數據的ISO模式,包括四種:ISO.NONE(不使用)-默認、ISO.DATE(yyyy-MM-dd)、ISO.TIME(hh:mm:ss.SSSZ)、ISO.DATE_TIME(yyyy-MM-ddhh:mm:ss.SSSZ)style屬性:字符串類型。通過樣式指定日期時間的格式,由兩位字符組成,第一位表示日期的格式,第二位表示時間的格式:S:短日期/時間格式、M:中日期/時間格式、L:長日期/時間格式、F:完整日期/時間格式、-:忽略日期或時間格式,數值格式化,NumberFormat可對類似數字類型的屬性進行標注,它擁有兩個互斥的屬性:style:類型為NumberFormat.Style。用于指定樣式類型,包括三種:Style.NUMBER(正常數字類型)、Style.CURRENCY(貨幣類型)、Style.PERCENT(百分數類型)pattern:類型為String,自定義樣式,如patter=#,#;,格式化示例,內容概要,SpringMVC概述SpringMVC的HelloWorld使用RequestMapping映射請求映射請求參數&請求頭處理模型數據視圖和視圖解析器RESTfulCRUDSpringMVC表單標簽&處理靜態(tài)資源數據轉換&數據格式化&數據校驗處理JSON:使用HttpMessageConverter國際化文件的上傳使用攔截器,異常處理SpringMVC運行流程在Spring的環(huán)境下使用SpringMVCSpringMVC對比Struts2,JSR303,JSR303是Java為Bean數據合法性校驗提供的標準框架,它已經包含在JavaEE6.0中.JSR303通過在Bean屬性上標注類似于NotNull、Max等標準的注解指定校驗規(guī)則,并通過標準的驗證接口對Bean進行驗證,HibernateValidator擴展注解,HibernateValidator是JSR303的一個參考實現,除支持所有標準的校驗注解外,它還支持以下的擴展注解,SpringMVC數據校驗,Spring4.0擁有自己獨立的數據校驗框架,同時支持JSR303標準的校驗框架。Spring在進行數據綁定時,可同時調用校驗框架完成數據校驗工作。在SpringMVC中,可直接通過注解驅動的方式進行數據校驗Spring的LocalValidatorFactroyBean既實現了Spring的Validator接口,也實現了JSR303的Validator接口。只要在Spring容器中定義了一個LocalValidatorFactoryBean,即可將其注入到需要數據校驗的Bean中。Spring本身并沒有提供JSR303的實現,所以必須將JSR303的實現者的jar包放到類路徑下。,SpringMVC數據校驗,會默認裝配好一個LocalValidatorFactoryBean,通過在處理方法的入參上標注valid注解即可讓SpringMVC在完成數據綁定后執(zhí)行數據校驗的工作在已經標注了JSR303注解的表單/命令對象前標注一個Valid,SpringMVC框架在將請求參數綁定到該入參對象后,就會調用校驗框架根據注解聲明的校驗規(guī)則實施校驗SpringMVC是通過對處理方法簽名的規(guī)約來保存校驗結果的:前一個表單/命令對象的校驗結果保存到隨后的入參中,這個保存校驗結果的入參必須是BindingResult或Errors類型,這兩個類都位于org.springframework.validation包中,SpringMVC數據校驗,需校驗的Bean對象和其綁定結果對象或錯誤對象時成對出現的,它們之間不允許聲明其他的入參Errors接口提供了獲取錯誤信息的方法,如getErrorCount()或getFieldErrors(Stringfield)BindingResult擴展了Errors接口User和其綁定結果的對象publicStringhandle91(ValidUseruser,BindingResultuserBindingResult,StringsessionId,ModelMapmm,ValidDeptdept,ErrorsdeptErrors)Dept和其校驗的結果對象,在目標方法中獲取校驗結果,在表單/命令對象類的屬性中標注校驗注解,在處理方法對應的入參前添加Valid,SpringMVC就會實施校驗并將校驗結果保存在被校驗入參對象之后的BindingResult或Errors入參中。常用方法:FieldErrorgetFieldError(Stringfield)ListgetFieldErrors()ObjectgetFieldValue(Stringfield)IntgetErrorCount(),在頁面上顯示錯誤,SpringMVC除了會將表單/命令對象的校驗結果保存到對應的BindingResult或Errors對象中外,還會將所有校驗結果保存到“隱含模型”即使處理方法的簽名中沒有對應于表單/命令對象的結果入參,校驗結果也會保存在“隱含對象”中。隱含模型中的所有數據最終將通過HttpServletRequest的屬性列表暴露給JSP視圖對象,因此在JSP中可以獲取錯誤信息在JSP頁面上可通過顯示錯誤消息,示例,index.jsp,示例,User,示例,目標方法,提示消息的國際化,每個屬性在數據綁定和數據校驗發(fā)生錯誤時,都會生成一個對應的FieldError對象。當一個屬性校驗失敗后,校驗框架會為該屬性生成4個消息代碼,這些代碼以校驗注解類名為前綴,結合modleAttribute、屬性名及屬性類型名生成多個對應的消息代碼:例如User類中的password屬性標準了一個Pattern注解,當該屬性值不滿足Pattern所定義的規(guī)則時,就會產生以下4個錯誤代碼:Pattern.user.passwordPattern.passwordPattern.java.lang.StringPattern當使用SpringMVC標簽顯示錯誤消息時,SpringMVC會查看WEB上下文是否裝配了對應的國際化消息,如果沒有,則顯示默認的錯誤消息,否則使用國際化消息。,提示消息的國際化,若數據類型轉換或數據格式轉換時發(fā)生錯誤,或該有的參數不存在,或調用處理方法時發(fā)生錯誤,都會在隱含模型中創(chuàng)建錯誤消息。其錯誤代碼前綴說明如下:required:必要的參數不存在。如RequiredParam(“param1”)標注了一個入參,但是該參數不存在typeMismatch:在數據綁定時,發(fā)生數據類型不匹配的問題methodInvocation:SpringMVC在調用處理方法時發(fā)生了錯誤注冊國際化資源文件,內容概要,SpringMVC概述SpringMVC的HelloWorld使用RequestMapping映射請求映射請求參數&請求頭處理模型數據視圖和視圖解析器RESTfulCRUDSpringMVC表單標簽&處理靜態(tài)資源數據轉換&數據格式化&數據校驗處理JSON:使用HttpMessageConverter國際化文件的上傳使用攔截器,異常處理SpringMVC運行流程在Spring的環(huán)境下使用SpringMVCSpringMVC對比Struts2,處理JSON,1.加入jar包:,2.編寫目標方法,使其返回JSON對應的對象或集合3.在方法上添加ResponseBody注解,HttpMessageConverter,HttpMessageConverter是Spring3.0新添加的一個接口,負責將請求信息轉換為一個對象(類型為T),將對象(類型為T)輸出為響應信息HttpMessageConverter接口定義的方法:BooleancanRead(Classclazz,MediaTypemediaType):指定轉換器可以讀取的對象類型,即轉換器是否可將請求信息轉換為clazz類型的對象,同時指定支持MIME類型(text/html,applaiction/json等)BooleancanWrite(Classclazz,MediaTypemediaType):指定轉換器是否可將clazz類型的對象寫到響應流中,響應流支持的媒體類型在MediaType中定義。LIstgetSupportMediaTypes():該轉換器支持的媒體類型。Tread(Classclazz,HttpInputMessageinputMessage):將請求信息流轉換為T類型的對象。voidwrite(Tt,MediaTypecontnetType,HttpOutputMessgaeoutputMessage):將T類型的對象寫到響應流中,同時指定相應的媒體類型為contentType。,HttpMessageConverter,HttpMessageConverter的實現類,HttpMessageConverter,DispatcherServlet默認裝配RequestMappingHandlerAdapter,而RequestMappingHandlerAdapter默認裝配如下HttpMessageConverter:,HttpMessageConverter,加入jacksonjar包后,RequestMappingHandlerAdapter裝配的HttpMessageConverter如下:,使用HttpMessageConverter,使用HttpMessageConverter將請求信息轉化并綁定到處理方法的入參中或將響應結果轉為對應類型的響應信息,Spring提供了兩種途徑:使用RequestBody/ResponseBody對處理方法進行標注使用HttpEntity/ResponseEntity作為處理方法的入參或返回值當控制器處理方法使用到RequestBody/ResponseBody或HttpEntity/ResponseEntity時,Spring首先根據請求頭或響應頭的Accept屬性選擇匹配的HttpMessageConverter,進而根據參數類型或泛型類型的過濾得到匹配的HttpMessageConverter,若找不到可用的HttpMessageConverter將報錯RequestBody和ResponseBody不需要成對出現,RequestBody、ResponseBody示例,HttpEntity、ResponseEntity示例,內容概要,SpringMVC概述SpringMVC的HelloWorld使用RequestMapping映射請求映射請求參數&請求頭處理模型數據視圖和視圖解析器RESTfulCRUDSpringMVC表單標簽&處理靜態(tài)資源數據轉換&數據格式化&數據校驗處理JSON:使用HttpMessageConverter國際化文件的上傳使用攔截器,異常處理SpringMVC運行流程在Spring的環(huán)境下使用SpringMVCSpringMVC對比Struts2,國際化概述,默認情況下,SpringMVC根據Accept-Language參數判斷客戶端的本地化類型。當接受到請求時,SpringMVC會在上下文中查找一個本地化解析器(LocalResolver),找到后使用它獲取請求所對應的本地化類型信息。SpringMVC還允許裝配一個動態(tài)更改本地化類型的攔截器,這樣通過指定一個請求參數就可以控制單個請求的本地化類型。,SessionLocaleResolver&LocaleChangeInterceptor工作原理,獲取name=locale,的請求參數,獲取LocaleResolver,對象,把第一步的locale請求,參數解析為Locale對象,把Locale對象設置為,Session的屬性,從Session中獲取,Locale對象,SessionLocaleResolver使用該Locale對象應用程序,LocaleChangeInterceptor,本地化解析器和本地化攔截器,AcceptHeaderLocaleResolver:根據HTTP請求頭的Accept-Language參數確定本地化類型,如果沒有顯式定義本地化解析器,SpringMVC使用該解析器。CookieLocaleResolver:根據指定的Cookie值確定本地化類型SessionLocaleResolver:根據Session中特定的屬性確定本地化類型LocaleChangeInterceptor:從請求參數中獲取本次請求對應的本地化類型。,內容概要,SpringMVC概述SpringMVC的HelloWorld使用RequestMapping映射請求映射請求參數&請求頭處理模型數據視圖和視圖解析器RESTfulCRUDSpringMVC表單標簽&處理靜態(tài)資源數據轉換&數據格式化&數據校驗處理JSON:使用HttpMessageConverter國際化文件的上傳使用攔截器,異常處理SpringMVC運行流程在Spring的環(huán)境下使用SpringMVCSpringMVC對比Struts2,文件上傳,SpringMVC為文件上傳提供了直接的支持,這種支持是通過即插即用的MultipartResolver實現的。Spring用JakartaCommonsFileUpload技術實現了一個MultipartResolver實現類:CommonsMultipartResovlerSpringMVC上下文中默認沒有裝配MultipartResovler,因此默認情況下不能處理文件的上傳工作,如果想使用Spring的文件上傳功能,需現在上下文中配置MultipartResolver,配置MultipartResolver,defaultEncoding:必須和用戶JSP的pageEncoding屬性一致,以便正確解析表單的內容為了讓CommonsMultipartResovler正確工作,必須先將JakartaCommonsFileUpload及JakartaCommonsio的類包添加到類路徑下。,文件上傳示例,內容概要,SpringMVC概述SpringMVC的HelloWorld使用RequestMapping映射請求映射請求參數&請求頭處理模型數據視圖和視圖解析器RESTfulCRUDSpringMVC表單標簽&處理靜態(tài)資源數據轉換&數據格式化&數據校驗處理JSON:使用HttpMessageConverter國際化文件的上傳使用攔截器,異常處理SpringMVC運行流程在Spring的環(huán)境下使用SpringMVCSpringMVC對比Struts2,自定義攔截器,SpringMVC也可以使用攔截器對請求進行攔截處理,用戶可以自定義攔截器來實現特定的功能,自定義的攔截器必須實現HandlerInterceptor接口preHandle():這個方法在業(yè)務處理器處理請求之前被調用,在該方法中對用戶請求request進行處理。如果程序員決定該攔截器對請求進行攔截處理后還要調用其他的攔截器,或者是業(yè)務處理器去進行處理,則返回true;如果程序員決定不需要再調用其他的組件去處理請求,則返回false。postHandle():這個方法在業(yè)務處理器處理完請求后,但是DispatcherServlet向客戶端返回響應前被調用,在該方法中對用戶請求request進行處理。afterCompletion():這個方法在DispatcherServlet完全處理完請求后被調用,可以在該方法中進行一些資源清理的操作。,攔截器方法執(zhí)行順序,FirstInterceptor#preHandle,HandlerAdapter#handle,FirstInterceptor#postHandle,FirstInterceptor#afterCompletion,DispatcherServlet#render,配置自定義攔截器,FirstInterceptor#preHandle,SecondInterceptor#preHandle,HandlerAdapter#handle,SecondInterceptor#postHandle,FirstInterceptor#postHandle,SecondInterceptor#afterCompletion,FirstInterceptor#afterCompletion,DispatcherServlet#render,FirstInterceptor#preHan

溫馨提示

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

評論

0/150

提交評論