SpringMVC概述和案例講解_第1頁
SpringMVC概述和案例講解_第2頁
SpringMVC概述和案例講解_第3頁
SpringMVC概述和案例講解_第4頁
SpringMVC概述和案例講解_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Spring MVC概述和案例講解概述Spring 為展現(xiàn)層提供了提供了優(yōu)秀的 Web 框架 Spring MVC。和眾多其他 MVC 框架一樣,它基于 MVC 設(shè)計(jì)理念Spring MVC 采用了松散耦合可插拔組件結(jié)構(gòu),比其他 MVC 框架更具擴(kuò)展性和靈活性Spring MVC 通過一套 MVC 注解,可以讓 POJO 成為處理請(qǐng)求的控制器,無須實(shí)現(xiàn)任何借口。HelloWorld步驟:加入 jar 包在 中配置DispatcherServlet加入 Spring MVC 的配置文件編寫處理請(qǐng)求的處理器,并標(biāo)識(shí)為處理器編寫視圖對(duì)象HelloWorld:加入 jar 包jar 包:HelloWo

2、rld:配置 配置 DispatcherServlet :HelloWorld:創(chuàng)建 Spring MVC 配置文件配置自動(dòng)掃描的包配置視圖解析器HelloWorld:創(chuàng)建請(qǐng)求處理器類配置 Spring MVC 配置文件DispatcherServlet 默認(rèn)自動(dòng)加載 /WEB-INF/-servlet.xml 的 Spring 的配置文件,啟動(dòng) WEB 層的 Spring 容器。可以為 DispatcherServlet 配置名稱為 contextConfigLocation 的初始化參數(shù)指定配置文件的名稱和位置在 Spring MVC 配置文件中引用業(yè)務(wù)層的 Bean多個(gè) Spring I

3、OC 容器之間可以設(shè)置為父子關(guān)系,以實(shí)現(xiàn)良好的解耦。Spring MVC WEB 層容器可作為 “業(yè)務(wù)層” Spring 容器的子容器:即 WEB 層容器可以引用業(yè)務(wù)層容器的 Bean,而業(yè)務(wù)層容器卻訪問不到 WEB 層容器的 Bean使用 RequestMapping 映射請(qǐng)求Spring MVC 使用 RequestMapping 注解為控制器指定可以處理哪些 URL 請(qǐng)求在控制器的類定義及方法定義處都可標(biāo)注 RequestMapping類定義處:提供初步的請(qǐng)求映射信息。相對(duì)于 WEB 應(yīng)用的根目錄方法處:提供進(jìn)一步的細(xì)分映射信息。相對(duì)于類定義處的 URL。若類定義處未標(biāo)注 Request

4、Mapping,則方法處標(biāo)記的 URL 相對(duì)于 WEB 應(yīng)用的根目錄DispatcherServlet 截獲請(qǐng)求后,就通過控制器上 RequestMapping 提供的映射信息確定請(qǐng)求所對(duì)應(yīng)的處理方法。使用 RequestMapping 映射請(qǐng)求示例類定義處標(biāo)記的 RequestMapping 限定了處理器類可以處理所有 URI 為 /hello 的請(qǐng)求,它相對(duì)于 WEB 容器部署的根路徑處理器類可以定義多個(gè)處理方法,處理來自/hello 下的請(qǐng)求使用 RequestMapping 映射請(qǐng)求RequestMapping 還支持 Ant 風(fēng)格的 URL:/user/*/createUser: 匹

5、配 /user/aaa/createUser、/user/bbb/createUser 等 URL/user/*/createUser: 匹配 /user/createUser、/user/aaa/bbb/createUser 等 URL/user/createUser?: 匹配 /user/createUseraa、/user/createUserbb 等 URL通過請(qǐng)求參數(shù)、請(qǐng)求方法或請(qǐng)求頭進(jìn)行映射標(biāo)準(zhǔn)的 HTTP 請(qǐng)求報(bào)頭通過請(qǐng)求參數(shù)、請(qǐng)求方法或請(qǐng)求頭進(jìn)行映射RequestMapping 除了可以使用請(qǐng)求 URL 映射請(qǐng)求外,還可以使用請(qǐng)求方法、請(qǐng)求參數(shù)及請(qǐng)求頭映射請(qǐng)求RequestMa

6、pping 的 value、method、params 及 heads 分別表示請(qǐng)求 URL、請(qǐng)求方法、請(qǐng)求參數(shù)及請(qǐng)求報(bào)頭的映射條件,他們之間是與的關(guān)系,聯(lián)合使用多個(gè)條件可讓請(qǐng)求映射更加精確化。params 和 headers支持簡(jiǎn)單的表達(dá)式:param1: 表示請(qǐng)求必須包含名為 param1 的請(qǐng)求參數(shù)!param1: 表示請(qǐng)求不能包含名為 param1 的請(qǐng)求參數(shù)param1 != value1: 表示請(qǐng)求包含名為 param1 的請(qǐng)求參數(shù),但其值不能為 value1” “param1=value1, “param2”: 請(qǐng)求必須包含名為 param1 和param2 的兩個(gè)請(qǐng)求參數(shù),且

7、param1 參數(shù)的值必須為 value1通過請(qǐng)求參數(shù)、請(qǐng)求方法或請(qǐng)求頭進(jìn)行映射示例請(qǐng)求處理方法簽名Spring MVC 通過分析處理方法的簽名,將 HTTP 請(qǐng)求信息綁定到處理方法的相應(yīng)入?yún)⒅小pring MVC 對(duì)控制器處理方法簽名的限制是很寬松的,幾乎可以按喜歡的任何方式對(duì)方法進(jìn)行簽名。必要時(shí)可以對(duì)方法及方法入?yún)?biāo)注相應(yīng)的注解(RequestParam、RequestHeader 等)、Spring MVC 框架會(huì)將 HTTP 請(qǐng)求的信息綁定到相應(yīng)的方法入?yún)⒅校⒏鶕?jù)方法的返回值類型做出相應(yīng)的后續(xù)處理。請(qǐng)求處理方法簽名示例 - 1請(qǐng)求參數(shù)按名稱匹配的方式綁定到方法的入?yún)⒅校椒ǚ祷氐淖?/p>

8、符串代表邏輯視圖名將 Cookie 值及請(qǐng)求報(bào)頭屬性綁定到入?yún)⒅姓?qǐng)求處理方法簽名示例 - 2請(qǐng)求參數(shù)按名稱匹配的方式綁定到 user 屬性中直接將 HTTP 請(qǐng)求對(duì)象傳遞給處理方法使用 RequestParam 綁定請(qǐng)求參數(shù)值在處理方法入?yún)⑻幨褂?RequestParam 可以把請(qǐng)求參數(shù)傳遞給請(qǐng)求方法Value:參數(shù)名Required:是否必須。默認(rèn)為 true, 表示請(qǐng)求參數(shù)中必須包含對(duì)應(yīng)的參數(shù),若不存在,將拋出異常使用 CookieValue 綁定請(qǐng)求中的 Cookie 值CookieValue 可讓處理方法入?yún)⒔壎硞€(gè) Cookie 值使用 RequestHeader 綁定請(qǐng)求報(bào)頭的屬性

9、值請(qǐng)求報(bào)頭包含了若干個(gè)屬性,服務(wù)器可據(jù)此獲知客戶端的信息,通過 RequestHeader 即可將報(bào)頭屬性值綁定到處理方法的入?yún)⒅惺褂?POJO 對(duì)象綁定請(qǐng)求參數(shù)值Spring MVC 會(huì)按請(qǐng)求參數(shù)名和 POJO 屬性名進(jìn)行自動(dòng)匹配,自動(dòng)為該對(duì)象填充屬性值。支持級(jí)聯(lián)屬性。如:、dept.address.tel 等使用 Servlet API 作為入?yún)⑹褂?IO 對(duì)象作為入?yún)ervlet 的 ServletRequest 擁有 getInputStream() 和 getReader() 的方法,可以通過它們讀取請(qǐng)求信息。相應(yīng) Servlet 的 ServletResponse 的 getOu

10、putStream() 和 getWriter() 方法,可以通過它們輸出響應(yīng)信息。Spring MVC 允許控制器的方法使用 InputStream/Reader、OutputStream/Writer 作為方法的入?yún)ⅰttpMessageConverterHttpMessageConverter 是 Spring3.0 新添加的一個(gè)接口,負(fù)責(zé)將請(qǐng)求信息轉(zhuǎn)換為一個(gè)對(duì)象(類型為 T),將對(duì)象(類型為 T)輸出為響應(yīng)信息HttpMessageConverter接口定義的方法:Boolean canRead(Class clazz,MediaType mediaType): 指定轉(zhuǎn)換器可以讀取的

11、對(duì)象類型,即轉(zhuǎn)換器是否可將請(qǐng)求信息轉(zhuǎn)換為 clazz 類型的對(duì)象,同時(shí)指定支持 MIME 類型(text/html,applaiction/json等)Boolean canWrite(Class clazz,MediaType mediaType):指定轉(zhuǎn)換器是否可將 clazz 類型的對(duì)象寫到響應(yīng)流中,響應(yīng)流支持的媒體類型在MediaType 中定義。LIst getSupportMediaTypes():該轉(zhuǎn)換器支持的媒體類型。T read(Class clazz,HttpInputMessage inputMessage):將請(qǐng)求信息流轉(zhuǎn)換為 T 類型的對(duì)象。void write(T

12、t,MediaType contnetType,HttpOutputMessgae outputMessage):將T類型的對(duì)象寫到響應(yīng)流中,同時(shí)指定相應(yīng)的媒體類型為 contentType。HttpMessageConverter 的實(shí)現(xiàn)類HttpMessageConverterDispatcherServlet 默認(rèn)使用 AnnotationMethodHandlerAdapter 作為 HandlerAdapter 的組件實(shí)現(xiàn)類,而 AnnotationMethodHandlerAdapter 默認(rèn)裝配如下 HttpMessageConverter:StringHttpMessageCo

13、nverterByteArrayHttpMessageConverterSourceHttpMessageConverterXmlAwareFormHttpMessageConverterHttpMessageConverter如果需要裝配其他類型的 HttpMessageConverter,可在 Spring 的 WEB 容器上下文中自行定義一個(gè) AnnotationMethodHandlerAdapter如果再 Spring WEB 容器中顯式定義了一個(gè) AnnotationMethodHandlerAdapter,則 Spring MVC 將使用它覆蓋的 AnnotationMethod

14、HandlerAdapter使用 HttpMessageConverter使用 HttpMessageConverter 將請(qǐng)求信息轉(zhuǎn)化并綁定到處理方法的入?yún)⒅校琒pring 提供了兩種途徑:使用 RequestBody / ResponseBody 對(duì)處理方法進(jìn)行標(biāo)注使用 HttpEntity / ResponseEntity 作為處理方法的入?yún)⒒蚍祷刂礡equestBody、ResponseBody 示例HttnEntity、ResponseEntity 示例處理 JSON只要在 Spring WEB 容器中為 AnnotationMethodHandlerAdapter 裝配好相應(yīng)的處理

15、 JSON 的 HttpMessageConverter, 并在交互中通過請(qǐng)求的 Accept 指定 MIME 類型, Spring MVC 就可使服務(wù)端的處理方法和客戶端透明通過 JSON 格式的消息進(jìn)行通信。處理模型數(shù)據(jù)Spring MVC 提供了以下幾種途徑輸出模型數(shù)據(jù):ModelAndView: 處理方法返回值類型為 ModelAndView 時(shí), 方法體即可通過該對(duì)象添加模型數(shù)據(jù)ModelAttribute: 方法入?yún)?biāo)注該注解后, 入?yún)⒌膶?duì)象就會(huì)放到數(shù)據(jù)模型中Map 及 Model: 入?yún)?、org.springframework.ui.ModelMap 或 java.uti.M

16、ap 時(shí),處理方法返回時(shí),Map 中的數(shù)據(jù)會(huì)自動(dòng)添加到模型中。SessionAttributes: 將模型中的某個(gè)屬性暫存到 HttpSession 中,以便多個(gè)請(qǐng)求之間可以共享這個(gè)屬性ModelAndView控制器處理方法的返回值如果為 ModelAndView, 則其既包含視圖信息,也包含模型數(shù)據(jù)信息。添加模型數(shù)據(jù):MoelAndView addObject(String attributeName, Object attributeValue)ModelAndView addAllObject(Map modelMap)設(shè)置視圖:void setView(View view)void s

17、etViewName(String viewName)jModelAttribute如果希望將方法入?yún)?duì)象添加到模型中,僅需在相應(yīng)入?yún)⑶笆褂?ModelAttribute 注解即可具體步驟:將請(qǐng)求參數(shù)綁定到 User 對(duì)象中以 user 為鍵將 User 對(duì)象放到 request 中ModelAttribute還可以在方法定義中使用 ModelAttribute 注解:Spring MVC 在調(diào)用目標(biāo)處理方法前,會(huì)先逐個(gè)調(diào)用在方法級(jí)上標(biāo)注了 ModelAttribute 的方法,并將這些方法的返回值添加到模型中。Map 及 ModelSpring MVC 在內(nèi)部使用了一個(gè) org.spring

18、framework.ui.Model 接口存儲(chǔ)模型數(shù)據(jù)具體步驟Spring MVC 在調(diào)用方法前會(huì)創(chuàng)建一個(gè)隱含的模型對(duì)象作為模型數(shù)據(jù)的存儲(chǔ)容器。如果方法的入?yún)?Map 或 Model 類型,Spring MVC 會(huì)將隱含模型的引用傳遞給這些入?yún)ⅰT诜椒w內(nèi),開發(fā)者可以通過這個(gè)入?yún)?duì)象訪問到模型中的所有數(shù)據(jù),也可以向模型中添加新的屬性數(shù)據(jù)Map 及 Model 示例SessionAttributes若希望在多個(gè)請(qǐng)求之間共用某個(gè)模型屬性數(shù)據(jù),則可以在控制器類上標(biāo)注一個(gè) SessionAttributes, Spring MVC 將在模型中對(duì)應(yīng)的屬性暫存到 HttpSession 中。Sessio

19、nAttributes 除了可以通過屬性名指定需要放到會(huì)話中的屬性外,還可以通過模型屬性的對(duì)象類型指定哪些模型屬性需要放到會(huì)話中SessionAttributes(types=User.class) 會(huì)將隱含模型中所有類型為 User.class 的屬性添加到會(huì)話中。SessionAttributes(value=“user1”, “user2”)SessionAttributes(types=User.class, Dept.class)SessionAttributes(value=“user1”, “user2”, types=Dept.class)SessionAttributes 示

20、例數(shù)據(jù)轉(zhuǎn)換Spring MVC 上下文中內(nèi)建了很多轉(zhuǎn)換器,可完成大多數(shù) Java 類型的轉(zhuǎn)換工作。自定義類型轉(zhuǎn)換器ConversionService 是 Spring 類型轉(zhuǎn)換體系的核心接口。可以利用 ConversionServiceFactoryBean 在 Spring 的 IOC 容器中定義一個(gè) ConversionService. Spring 將自動(dòng)識(shí)別出 IOC 容器中的 ConversionService,并在 Bean 屬性配置及 Spring MVC 處理方法入?yún)⒔壎ǖ葓?chǎng)合使用它進(jìn)行數(shù)據(jù)的轉(zhuǎn)換Spring 支持的轉(zhuǎn)換器Spring 定義了 3 種類似那個(gè)的轉(zhuǎn)換器接口,實(shí)現(xiàn)任

21、意一個(gè)轉(zhuǎn)換器接口都可以作為自定義轉(zhuǎn)換器注冊(cè)到 ConversionServiceFactroyBean 中:Converter:將 S 類型對(duì)象轉(zhuǎn)為 T 類型對(duì)象GenericConverter:會(huì)根據(jù)源類對(duì)象及目標(biāo)類對(duì)象所在的宿主類總的上下文信息進(jìn)行類型轉(zhuǎn)換ConverterFactory:將相同系列多個(gè) “同質(zhì)” Converter 封裝在一起自定義轉(zhuǎn)換器示例 會(huì)將自定義的 ConversionService 注冊(cè)到 Spring MVC 的上下文中數(shù)據(jù)格式化對(duì)屬性對(duì)象的輸入/輸出進(jìn)行格式化,從其本質(zhì)上講依然屬于 “類型轉(zhuǎn)換” 的范疇。Spring 在格式化模塊中定義了一個(gè)實(shí)現(xiàn) Conve

22、rsionService 接口的 FormattingConversionService 實(shí)現(xiàn)類,該實(shí)現(xiàn)類擴(kuò)展了 GenericConversionService,因此它既具有類型轉(zhuǎn)換的功能,又具有格式化的功能FormattingConversionService 擁有一個(gè) FormattingConversionServiceFactroyBean 工廠類,后者用于在 Spring 上下文中構(gòu)造前者數(shù)據(jù)格式化FormattingConversionServiceFactroyBean 內(nèi)部已經(jīng)注冊(cè)了 :NumberFormatAnnotationFormatterFactroy:支持對(duì)數(shù)字類

23、型的屬性使用 NumberFormat 注解JodaDateTimeFormatAnnotationFormatterFactroy:支持對(duì)日期類型的屬性使用 DateTimeFormat 注解裝配了 FormattingConversionServiceFactroyBean 后,就可以在 Spring MVC 入?yún)⒔壎澳P蛿?shù)據(jù)輸出時(shí)使用注解驅(qū)動(dòng)了。 默認(rèn)創(chuàng)建的 ConversionService 實(shí)例即為 FormattingConversionServiceFactroyBean 日期格式化DateTimeFormat 注解可對(duì) 、java.long.Long 時(shí)間類型進(jìn)行標(biāo)注:pat

24、tern 屬性:類型為字符串。指定解析/格式化字段數(shù)據(jù)的模式,如:”yyyy-MM-dd hh:mm:ss”iso 屬性:類型為 。指定解析/格式化字段數(shù)據(jù)的ISO模式,包括四種:(不使用) - 默認(rèn)、ISO.DATE(yyyy-MM-dd) 、ISO.TIME(hh:mm:ss.SSSZ)、 ISO.DATE_TIME(yyyy-MM-dd hh:mm:ss.SSSZ)style 屬性:字符串類型。通過樣式指定日期時(shí)間的格式,由兩位字符組成,第一位表示日期的格式,第二位表示時(shí)間的格式:S:短日期/時(shí)間格式、M:中日期/時(shí)間格式、L:長(zhǎng)日期/時(shí)間格式、F:完整日期/時(shí)間格式、-:忽略日期或時(shí)間

25、格式數(shù)值格式化NumberFormat 可對(duì)類似數(shù)字類型的屬性進(jìn)行標(biāo)注,它擁有兩個(gè)互斥的屬性:style:類型為 。用于指定樣式類型,包括三種:(正常數(shù)字類型)、 (貨幣類型)、 (百分?jǐn)?shù)類型)pattern:類型為 String,自定義樣式,如patter=#,#;格式化示例JSR 303JSR 303 是 Java 為 Bean 數(shù)據(jù)合法性校驗(yàn)提供的標(biāo)準(zhǔn)框架,它已經(jīng)包含在 JavaEE 6.0 中 .JSR 303 通過在 Bean 屬性上標(biāo)注類似于 NotNull、Max 等標(biāo)準(zhǔn)的注解指定校驗(yàn)規(guī)則,并通過標(biāo)準(zhǔn)的驗(yàn)證接口對(duì) Bean 進(jìn)行驗(yàn)證Hibernate Validator 擴(kuò)展注解

26、Hibernate Validator 是 JSR 303 的一個(gè)參考實(shí)現(xiàn),除支持所有標(biāo)準(zhǔn)的校驗(yàn)注解外,它還支持以下的擴(kuò)展注解Spring MVC 數(shù)據(jù)校驗(yàn)Spring 3.0 擁有自己獨(dú)立的數(shù)據(jù)校驗(yàn)框架,同時(shí)支持 JSR 303 標(biāo)準(zhǔn)的校驗(yàn)框架。Spring 在進(jìn)行數(shù)據(jù)綁定時(shí),可同時(shí)調(diào)用校驗(yàn)框架完成數(shù)據(jù)校驗(yàn)工作。在 Spring MVC 中,可直接通過注解驅(qū)動(dòng)的方式進(jìn)行數(shù)據(jù)校驗(yàn)Spring 的 LocalValidatorFactroyBean 既實(shí)現(xiàn)了 Spring 的 validator 接口,也實(shí)現(xiàn)了 JSR 303 的 Validator 接口。只要在 Spring 容器中定義了一個(gè)

27、 LocalValidatorFactoryBean,即可將其注入到需要數(shù)據(jù)校驗(yàn)的 Bean 中。Spring 本身并沒有提供 JSR303 的實(shí)現(xiàn),所以必須將 JSR303 的實(shí)現(xiàn)者的 jar 包放到類路徑下。Spring MVC 數(shù)據(jù)校驗(yàn) 會(huì)默認(rèn)裝配好一個(gè) LocalValidatorFactoryBean,通過在處理方法的入?yún)⑸蠘?biāo)注 validator 注解即可讓 Spring MVC 在完成數(shù)據(jù)綁定后執(zhí)行數(shù)據(jù)校驗(yàn)的工作在已經(jīng)標(biāo)注了 JSR303 注解的表單/命令對(duì)象前標(biāo)注一個(gè) Valid,Spring MVC 框架在將請(qǐng)求參數(shù)綁定到該入?yún)?duì)象后,就會(huì)調(diào)用校驗(yàn)框架根據(jù)注解聲明的校驗(yàn)規(guī)則實(shí)

28、施校驗(yàn)Spring MVC 是通過對(duì)處理方法簽名的規(guī)約來保存校驗(yàn)結(jié)果的:前一個(gè)表單/命令對(duì)象的校驗(yàn)結(jié)果保存到隨后的入?yún)⒅校@個(gè)保存校驗(yàn)結(jié)果的入?yún)⒈仨毷?BindingResult 或 Errors 類型,這兩個(gè)類都位于 org.springframework.validation 包中Spring MVC 數(shù)據(jù)校驗(yàn) 需校驗(yàn)的表單/命令對(duì)象和其綁定結(jié)果對(duì)象或錯(cuò)誤對(duì)象時(shí)成對(duì)出現(xiàn)的,它們之間不允許聲明其他的入?yún)rrors 接口提供了獲取錯(cuò)誤信息的方法,如 getErrorCount() 或 getFieldErrors(String field) BindingResult 擴(kuò)展了 Errors

29、接口在目標(biāo)方法中獲取校驗(yàn)結(jié)果在表單/命令對(duì)象類的屬性中標(biāo)注校驗(yàn)注解,在處理方法對(duì)應(yīng)的入?yún)⑶疤砑?Valid,Spring MVC 就會(huì)實(shí)施校驗(yàn)并將校驗(yàn)結(jié)果保存在被校驗(yàn)入?yún)?duì)象之后的 BindingResult 或 Errors 入?yún)⒅小3S梅椒ǎ篎ieldError getFieldError(String field)List getFieldErrors()Object getFieldValue(String field)Int getErrorCount()在頁面上顯示錯(cuò)誤Spring MVC 除了會(huì)將表單/命令對(duì)象的校驗(yàn)結(jié)果保存到對(duì)應(yīng)的 BindingResult 或 Errors

30、對(duì)象中外,還會(huì)將所有校驗(yàn)結(jié)果保存到 “隱含模型”即使處理方法的簽名中沒有對(duì)應(yīng)于表單/命令對(duì)象的結(jié)果入?yún)ⅲr?yàn)結(jié)果也會(huì)保存在 “隱含對(duì)象” 中。隱含模型中的所有數(shù)據(jù)最終將通過 HttpServletRequest 的屬性列表暴露給 JSP 視圖對(duì)象,因此在 JSP 中可以獲取錯(cuò)誤信息在 JSP 頁面上可通過 顯示錯(cuò)誤消息在頁面上顯示錯(cuò)誤示例示例User示例目標(biāo)方法提示消息的國際化每個(gè)屬性在數(shù)據(jù)綁定和數(shù)據(jù)校驗(yàn)發(fā)生錯(cuò)誤時(shí),都會(huì)生成一個(gè)對(duì)應(yīng)的 FieldError 對(duì)象。當(dāng)一個(gè)屬性校驗(yàn)失敗后,校驗(yàn)框架會(huì)為該屬性生成 4 個(gè)消息代碼,這些代碼以校驗(yàn)注解類名為前綴,結(jié)合類名、屬性名及屬性類型名生成多個(gè)對(duì)應(yīng)

31、的消息代碼:例如 User 類中的 password 屬性標(biāo)準(zhǔn)了一個(gè) Pattern 注解,當(dāng)該屬性值不滿足 Pattern 所定義的規(guī)則時(shí), 就會(huì)產(chǎn)生以下 4 個(gè)錯(cuò)誤代碼:Pattern當(dāng)使用 Spring MVC 標(biāo)簽顯示錯(cuò)誤消息時(shí), Spring MVC 會(huì)查看 WEB 上下文是否裝配了對(duì)應(yīng)的國際化消息,如果沒有,則顯示默認(rèn)的錯(cuò)誤消息,否則使用國際化消息。提示消息的國際化若數(shù)據(jù)類型轉(zhuǎn)換或數(shù)據(jù)格式轉(zhuǎn)換時(shí)發(fā)生錯(cuò)誤,或該有的參數(shù)不存在,或調(diào)用處理方法時(shí)發(fā)生錯(cuò)誤,都會(huì)在隱含模型中創(chuàng)建錯(cuò)誤消息。其錯(cuò)誤代碼前綴說明如下:required:必要的參數(shù)不存在。如 RequiredParam(“param

32、1”) 標(biāo)注了一個(gè)入?yún)ⅲ窃搮?shù)不存在typeMismatch:在數(shù)據(jù)綁定時(shí),發(fā)生數(shù)據(jù)類型不匹配的問題methodInvocation:Spring MVC 在調(diào)用處理方法時(shí)發(fā)生了錯(cuò)誤注冊(cè)國際化資源文件Spring MVC如何解析視圖ViewResolver視圖對(duì)象JSP/JSTL/PDF.StringModelAndViewModelAndViewViewModelMap請(qǐng)求處理方法返回值類型視圖和視圖解析器請(qǐng)求處理方法執(zhí)行完成后,最終返回一個(gè) ModelAndView 對(duì)象。對(duì)于那些返回 String,View 或 ModeMap 等類型的處理方法,Spring MVC 也會(huì)在呢不將它們裝配成一個(gè) ModelAndView 對(duì)象,它包含了邏輯名和模型對(duì)象的視圖JSP 是最常見的視圖技術(shù),可以使用 InternalResourceViewResolver 作為視圖解析器: 使用 JSTL 的國際化視圖實(shí)現(xiàn)類InternalResourceViewResolver 默認(rèn)使用 InternalResourceView 作為視圖實(shí)現(xiàn)類。如果 JSP 文件使用了 JSTL 的國家化功能,即使用 等標(biāo)簽時(shí),則需要使用 JstlVie

溫馨提示

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

評(píng)論

0/150

提交評(píng)論