SpringMVC4教程超權(quán)威__超詳細(xì)分析_第1頁(yè)
SpringMVC4教程超權(quán)威__超詳細(xì)分析_第2頁(yè)
SpringMVC4教程超權(quán)威__超詳細(xì)分析_第3頁(yè)
SpringMVC4教程超權(quán)威__超詳細(xì)分析_第4頁(yè)
SpringMVC4教程超權(quán)威__超詳細(xì)分析_第5頁(yè)
已閱讀5頁(yè),還剩133頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Spring MVC4教程超級(jí)超級(jí)權(quán)威權(quán)威, , 超級(jí)詳細(xì)超級(jí)詳細(xì)目前最好的中文教程基于最新的Spring4.x內(nèi)容概要1.SpringMVC 概述2.SpringMVC 的 HelloWorld3.使用 RequestMapping 映射請(qǐng)求4.映射請(qǐng)求參數(shù) & 請(qǐng)求頭5.處理模型數(shù)據(jù)6.視圖和視圖解析器7.RESTful CRUD8.SpringMVC 表單標(biāo)簽 &處理靜態(tài)資源9.數(shù)據(jù)轉(zhuǎn)換 & 數(shù)據(jù)格式化 & 數(shù)據(jù)校驗(yàn)10.處理 JSON:使用 HttpMessageConverter 11.國(guó)際化12.文件的上傳13.使用攔截器14.異常處理15.Spri

2、ngMVC 運(yùn)行流程16.在 Spring 的環(huán)境下使用SpringMVC17.SpringMVC 對(duì)比 Struts2內(nèi)容概要SpringMVC 概述概述SpringMVC 的的 HelloWorld使用 RequestMapping 映射請(qǐng)求映射請(qǐng)求參數(shù) & 請(qǐng)求頭處理模型數(shù)據(jù)視圖和視圖解析器RESTful CRUDSpringMVC 表單標(biāo)簽 &處理靜態(tài)資源數(shù)據(jù)轉(zhuǎn)換 & 數(shù)據(jù)格式化 & 數(shù)據(jù)校驗(yàn)處理 JSON:使用 HttpMessageConverter國(guó)際化文件的上傳使用攔截器異常處理SpringMVC 運(yùn)行流程在 Spring 的環(huán)境下使用Sprin

3、gMVCSpringMVC 對(duì)比 Struts2SpringMVC 概述Spring 為為展展現(xiàn)層現(xiàn)層提供的基于提供的基于 MVC 設(shè)計(jì)設(shè)計(jì)理念理念的優(yōu)秀的Web 框架,是目前目前最主流最主流的的 MVC 框架之一框架之一 Spring3.0 后全面超越 Struts2,成為最最優(yōu)優(yōu)秀的秀的 MVC 框架框架 Spring MVC 通通過(guò)過(guò)一套一套 MVC 注解注解,讓 POJO 成為處理請(qǐng) 求的控制器,而無(wú)須實(shí)現(xiàn)任何接口。 支持支持 REST 風(fēng)風(fēng)格格的的 URL 請(qǐng)請(qǐng)求求 采用了松散耦合可插拔組件結(jié)構(gòu),比其他 MVC 框架更具擴(kuò)展性和靈活性HelloWorld 步驟: 加入 jar 包 在

4、 web.xml 中配置 DispatcherServlet 加入 Spring MVC 的配置文件 編寫處理請(qǐng)求的處理器,并標(biāo)識(shí)為處理器 編寫視圖HelloWorld:加入 jar 包 jar 包: commons-logging-1.1.3.jar spring-aop-4.0.0.RELEASE.jar spring-beans-4.0.0.RELEASE.jar spring-context-4.0.0.RELEASE.jar spring-core-4.0.0.RELEASE.jar spring-expression-4.0.0.RELEASE.jar spring-web-4.0

5、.0.RELEASE.jar spring-webmvc-4.0.0.RELEASE.jarHelloWorld:配置 web.xml配置 DispatcherServlet :DispatcherServlet 默默認(rèn)認(rèn)加加載載 /WEB- INF/.xml 的 Spring 配置文件, 啟動(dòng)啟動(dòng) WEB 層層 的的 Spring 容器容器??梢酝ㄟ^(guò) contextConfigLocation 初始化參數(shù)自定 義配置文件的位置和名稱HelloWorld:創(chuàng)建 Spring MVC 配置文件 配置自動(dòng)掃描的包配置配置視圖視圖解析器解析器:視圖名稱解析器:將視圖邏輯 名解析為: /WEB-INF

6、/pages/.jspHelloWorld:創(chuàng)建請(qǐng)求處理器類*. action springmvc-1/helloWorld.actionurldispatcherServletControllerpublic class HelloWorldController RequestMapping(/helloWorld) public String helloWolrd()System.out.println(HelloWorld SpringMVC);return success;/WEB-INF/view/success.jspweb.xmlHandlerSpringMVC 配置文件實(shí)際的物

7、理視圖內(nèi)容概要SpringMVC 概述SpringMVC 的 HelloWorld使用使用 RequestMapping 映射映射請(qǐng)請(qǐng)求求映射請(qǐng)求參數(shù) & 請(qǐng)求頭處理模型數(shù)據(jù)視圖和視圖解析器RESTful CRUDSpringMVC 表單標(biāo)簽 &處理靜態(tài)資源數(shù)據(jù)轉(zhuǎn)換 & 數(shù)據(jù)格式化 & 數(shù)據(jù)校驗(yàn)處理 JSON:使用 HttpMessageConverter國(guó)際化文件的上傳使用攔截器異常處理SpringMVC 運(yùn)行流程在 Spring 的環(huán)境下使用SpringMVCSpringMVC 對(duì)比 Struts2使用 RequestMapping 映射請(qǐng)求 Spring

8、MVC 使用 RequestMapping 注解為控制器指定可 以處理哪些 URL 請(qǐng)求在控制器的類類定定義義及方法定及方法定義處義處都可標(biāo)注RequestMapping類類定定義處義處:提供初步的請(qǐng)求映射信息。相對(duì)于 WEB 應(yīng)用的根目錄 方法方法處處:提供進(jìn)一步的細(xì)分映射信息。相對(duì)于類定義處的 URL。若 類定義處未標(biāo)注 RequestMapping,則方法處標(biāo)記的 URL 相對(duì)于 WEB 應(yīng)用的根目錄 DispatcherServlet 截獲請(qǐng)求后,就通過(guò)控制器上RequestMapping 提供的映射信息確定請(qǐng)求所對(duì)應(yīng)的處理 方法。使用 RequestMapping 映射請(qǐng)求示例類定義

9、處標(biāo)記的RequestMapping 限定了處理 器類可以處理所有 URI 為 /hello 的請(qǐng)求,它相相對(duì)對(duì)于于 WEB 容器部容器部 署的根路徑署的根路徑處理器類可以定義多個(gè)處理方法,處理來(lái) 自/hello 下的請(qǐng)求映射映射請(qǐng)請(qǐng)求參數(shù)、求參數(shù)、請(qǐng)請(qǐng)求方法或求方法或請(qǐng)請(qǐng)求求頭頭 標(biāo)準(zhǔn)的 HTTP 請(qǐng)求報(bào)頭請(qǐng)求方法請(qǐng)求URLHTTP協(xié)議及版本 報(bào) 文 頭 報(bào) 文 體映射映射請(qǐng)請(qǐng)求參數(shù)、求參數(shù)、請(qǐng)請(qǐng)求方法或求方法或請(qǐng)請(qǐng)求求頭頭 RequestMapping 除了可以使用請(qǐng)請(qǐng)求求 URL 映射請(qǐng)求外,還還可以使用可以使用請(qǐng)請(qǐng)求方法、求方法、請(qǐng)請(qǐng)求參數(shù)及求參數(shù)及請(qǐng)請(qǐng)求求頭頭映射映射請(qǐng)請(qǐng)求求 Req

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

11、1=value1”, “param2”: 請(qǐng)求必須包含名為 param1 和param2 的兩個(gè)請(qǐng)求參數(shù),且 param1 參數(shù)的值必須為 value1映射映射請(qǐng)請(qǐng)求參數(shù)、求參數(shù)、請(qǐng)請(qǐng)求方法或求方法或請(qǐng)請(qǐng)求求頭頭使用 RequestMapping 映射請(qǐng)求 Ant 風(fēng)風(fēng)格格資資源地址支持源地址支持 3 種種匹配符匹配符: ?:匹配文件名中的一個(gè)字符 *:匹配文件名中的任意字符 *:* 匹配多層路徑 RequestMapping 還支持支持 Ant 風(fēng)風(fēng)格的格的 URL: /user/*/createUser: 匹配/user/aaa/createUser、/user/bbb/createUse

12、r 等 URL /user/*/createUser: 匹配/user/createUser、/user/aaa/bbb/createUser 等 URL /user/createUser?: 匹配/user/createUseraa、/user/createUserbb 等 URLPathVariable 映射 URL 綁定的占位符 帶帶占位符的占位符的 URL 是是 Spring3.0 新增的新增的功能功能,該功能在 SpringMVC 向 REST 目標(biāo)挺進(jìn)發(fā)展過(guò)程中具有里程碑的 意義 通通過(guò)過(guò) PathVariable 可以將可以將 URL 中占中占位符參數(shù)位符參數(shù)綁綁定到控定到控 制

13、器制器處處理方法的入?yún)⒅欣矸椒ǖ娜雲(yún)⒅校篣RL 中的 xxx 占位符可以通過(guò) PathVariable(xxx) 綁定到操作方法的入?yún)⒅?。RESTREST:即 Representational State Transfer。(資資源)表源)表現(xiàn)層現(xiàn)層狀狀態(tài)轉(zhuǎn)態(tài)轉(zhuǎn)化。是目前化。是目前 最流行的一最流行的一種種互互聯(lián)聯(lián)網(wǎng)網(wǎng)軟軟件架件架構(gòu)構(gòu)。它結(jié)構(gòu)清晰、符合標(biāo)準(zhǔn)、易于理解、擴(kuò)展方便, 所以正得到越來(lái)越多網(wǎng)站的采用 資資源(源(Resources):網(wǎng)網(wǎng)絡(luò)絡(luò)上的一個(gè)上的一個(gè)實(shí)實(shí)體,或者體,或者說(shuō)說(shuō)是網(wǎng)是網(wǎng)絡(luò)絡(luò)上的一個(gè)具體信息上的一個(gè)具體信息。它 可以是一段文本、一張圖片、一首歌曲、一種服務(wù),總之就是一

14、個(gè)具體的存在。 可以用一個(gè)URI(統(tǒng)一資源定位符)指向它,每種資種資源源對(duì)應(yīng)對(duì)應(yīng)一個(gè)特定的一個(gè)特定的 URI 。要 獲取這個(gè)資源,訪問(wèn)它的URI就可以,因此 URI 即即為為每一個(gè)一個(gè)資資源的獨(dú)源的獨(dú)一無(wú)二的一無(wú)二的識(shí)識(shí) 別別符符。表表現(xiàn)層現(xiàn)層(Representation):把把資資源具體呈源具體呈現(xiàn)現(xiàn)出來(lái)的形式出來(lái)的形式,叫做它的表,叫做它的表現(xiàn)層現(xiàn)層(Representation)。比如,文本可以用 txt 格式表現(xiàn),也可以用 HTML 格 式、XML 格式、JSON 格式表現(xiàn),甚至可以采用二進(jìn)制格式。狀狀態(tài)轉(zhuǎn)態(tài)轉(zhuǎn)化(化(State Transfer):每發(fā)出一個(gè)請(qǐng)求,就代表了客戶端和服

15、務(wù)器的一 次交互過(guò)程。HTTP協(xié)議,是一個(gè)無(wú)狀態(tài)協(xié)議,即所有的狀態(tài)都保存在服務(wù)器 端。因此,如果客如果客戶戶端想要操作服端想要操作服務(wù)務(wù)器,必器,必須須通通過(guò)過(guò)某某種種手段,手段,讓讓服服務(wù)務(wù)器端器端發(fā)發(fā)生生“ 狀狀態(tài)態(tài)轉(zhuǎn)轉(zhuǎn)化化”(State Transfer)。而)。而這種轉(zhuǎn)這種轉(zhuǎn)化是建立在表化是建立在表現(xiàn)層現(xiàn)層之上的,所以就是之上的,所以就是 “ 表表現(xiàn)層現(xiàn)層狀狀態(tài)轉(zhuǎn)態(tài)轉(zhuǎn)化化”。具體說(shuō),就是 HTTP 協(xié)議協(xié)議里面,四個(gè)表示操作方式的里面,四個(gè)表示操作方式的動(dòng)動(dòng) 詞詞:GET、POST、PUT、DELETE。它。它們們分分別對(duì)應(yīng)別對(duì)應(yīng)四四種種基本操作:基本操作:GET 用來(lái)用來(lái)獲獲 取取資

16、資源,源,POST 用來(lái)新建用來(lái)新建資資源,源,PUT 用來(lái)更新用來(lái)更新資資源,源,DELETE 用來(lái)用來(lái)刪刪除除資資源。源。REST 示例: /order/1 HTTP GET :得到 id = 1 的 order /order/1 HTTP DELETE:刪除 id = 1的 order /order/1 HTTP PUT:更新id = 1的 order /orderHTTP POST:新增 order HiddenHttpMethodFilter:瀏覽器 form 表單只支持 GET 與 POST 請(qǐng)求,而DELETE、PUT 等 method 并不支 持,Spring3.0 添加了一個(gè)

17、過(guò)濾器,可以將這些請(qǐng)求轉(zhuǎn)換 為標(biāo)準(zhǔn)的 http 方法,使得支持 GET、POST、PUT 與 DELETE 請(qǐng)求。PathVariable 綁定 URL 占位符到入?yún)?帶帶占位符的占位符的 URL 是是 Spring3.0 新增的新增的功能功能,該功能在 SpringMVC 向 REST 目標(biāo)挺進(jìn)發(fā)展過(guò)程中具有里程碑的 意義 通通過(guò)過(guò) PathVariable 可以將可以將 URL 中占中占位符參數(shù)位符參數(shù)綁綁定到控定到控 制器制器處處理方法的入?yún)⒅欣矸椒ǖ娜雲(yún)⒅校篣RL 中的 xxx 占位符可以通過(guò) PathVariable(xxx) 綁定到操作方法的入?yún)⒅?。?nèi)容概要SpringMVC 概述

18、SpringMVC 的 HelloWorld使用 RequestMapping 映射請(qǐng)求映射映射請(qǐng)請(qǐng)求參數(shù)求參數(shù) & 請(qǐng)請(qǐng)求參數(shù)求參數(shù)處理模型數(shù)據(jù)視圖和視圖解析器RESTful CRUDSpringMVC 表單標(biāo)簽 &處理靜態(tài)資源數(shù)據(jù)轉(zhuǎn)換 & 數(shù)據(jù)格式化 & 數(shù)據(jù)校驗(yàn)處理 JSON:使用 HttpMessageConverter國(guó)際化文件的上傳使用攔截器異常處理SpringMVC 運(yùn)行流程在 Spring 的環(huán)境下使用SpringMVCSpringMVC 對(duì)比 Struts2請(qǐng)求處理方法簽名 Spring MVC 通通過(guò)過(guò)分析分析處處理方法的理方法的簽簽名,將名

19、,將 HTTP 請(qǐng)請(qǐng)求求信信 息息綁綁定到定到處處理方法的相理方法的相應(yīng)應(yīng)人參人參中中。 Spring MVC 對(duì)控制器處理方法簽名的限制是很寬松的, 幾乎可以按喜歡的任何方式對(duì)方法進(jìn)行簽名。 必要時(shí)可以可以對(duì)對(duì)方法及方法入?yún)⒎椒胺椒ㄈ雲(yún)?biāo)標(biāo)注相注相應(yīng)應(yīng)的注解的注解(PathVariable、RequestParam、RequestHeader 等等)、Spring MVC 框架會(huì)將 HTTP 請(qǐng)求的信息綁定到相應(yīng)的方法入?yún)?中,并根據(jù)方法的返回值類型做出相應(yīng)的后續(xù)處理。使用 RequestParam 綁定請(qǐng)求參數(shù)值在處理方法入?yún)⑻幨褂檬褂?RequestParam 可以把可以把請(qǐng)請(qǐng)求參求參

20、 數(shù)數(shù)傳遞給請(qǐng)傳遞給請(qǐng)求方法求方法 value:參數(shù)名 required:是否必須。默認(rèn)為 true, 表示請(qǐng)求參數(shù)中必須包含對(duì)應(yīng) 的參數(shù),若不存在,將拋出異常使用 RequestHeader 綁定請(qǐng)求報(bào)頭的屬性值 請(qǐng)求頭包含了若干個(gè)屬性,服務(wù)器可據(jù)此獲知客戶端的信 息,通通過(guò)過(guò) RequestHeader 即可將即可將請(qǐng)請(qǐng)求求頭頭中的屬性中的屬性值綁值綁 定到定到處處理方法的入?yún)⒅欣矸椒ǖ娜雲(yún)⒅惺褂?CookieValue 綁定請(qǐng)求中的 Cookie 值 CookieValue 可讓處理方法入?yún)⒔壎硞€(gè) Cookie 值使用 POJO 對(duì)象綁定請(qǐng)求參數(shù)值 Spring MVC 會(huì)按會(huì)按請(qǐng)請(qǐng)求

21、參數(shù)名和求參數(shù)名和 POJO 屬性名屬性名進(jìn)進(jìn)行自行自動(dòng)動(dòng)匹匹 配,自配,自動(dòng)為該對(duì)動(dòng)為該對(duì)象填充屬性象填充屬性值值。支持支持級(jí)聯(lián)級(jí)聯(lián)屬性屬性。 如:dept.deptId、dept.address.tel 等使用使用 Servlet API 作作為為入?yún)⑷雲(yún)VC 的 Handler 方法可以接受哪些 ServletAPI 類型的參數(shù) HttpServletRequest HttpServletResponse HttpSession java.security.Principal Locale InputStream OutputStream Reader Writer內(nèi)容概要Spring

22、MVC 概述SpringMVC 的 HelloWorld使用 RequestMapping 映射請(qǐng)求映射請(qǐng)求參數(shù) & 請(qǐng)求頭處處理模型數(shù)據(jù)理模型數(shù)據(jù)RESTful CRUD視圖和視圖解析器SpringMVC 表單標(biāo)簽 &處理靜態(tài)資源數(shù)據(jù)轉(zhuǎn)換 & 數(shù)據(jù)格式化 & 數(shù)據(jù)校驗(yàn)處理 JSON:使用 HttpMessageConverter國(guó)際化文件的上傳使用攔截器異常處理SpringMVC 運(yùn)行流程在 Spring 的環(huán)境下使用SpringMVCSpringMVC 對(duì)比 Struts2處理模型數(shù)據(jù) Spring MVC 提供了以下幾種途徑輸出模型數(shù)據(jù): ModelAnd

23、View: 處理方法返回值類型為 ModelAndView時(shí), 方法體即可通過(guò)該對(duì)象添加模型數(shù)據(jù) Map 及及 Model: 入?yún)?org.springframework.ui.Model、org.springframework.ui. ModelMap 或 java.uti.Map 時(shí),處理方法返回時(shí),Map 中的數(shù)據(jù)會(huì)自動(dòng)添加到模型中。 SessionAttributes: 將模型中的某個(gè)屬性暫存到HttpSession 中,以便多個(gè)請(qǐng)求之間可以共享這個(gè)屬性 ModelAttribute: 方法入?yún)?biāo)注該注解后, 入?yún)⒌膶?duì)象 就會(huì)放到數(shù)據(jù)模型中ModelAndView控制器處理方法的返回

24、值如果為 ModelAndView, 則其既既 包含包含視圖視圖信息,也包含模型數(shù)據(jù)信息信息,也包含模型數(shù)據(jù)信息。 添加模型數(shù)據(jù): MoelAndView addObject(String attributeName, Object attributeValue) ModelAndView addAllObject(Map modelMap) 設(shè)置視圖: void setView(View view) void setViewName(String viewName)jMap 及 Model Spring MVC 在內(nèi)部使用了一個(gè) org.springframework.ui.Model 接口

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

26、es, Spring MVC 將在模型中對(duì)應(yīng)的屬性暫存到 HttpSession 中。 SessionAttributes 除了可以通過(guò)屬性名屬性名指定需要放到會(huì) 話中的屬性外,還可以通過(guò)模型屬性的對(duì)對(duì)象象類類型型指定哪些 模型屬性需要放到會(huì)話中 SessionAttributes(types=User.class) 會(huì)將隱含模型中所有類型為 User.class 的屬性添加到會(huì)話中。 SessionAttributes(value=“user1”, “user2”) SessionAttributes(types=User.class, Dept.class) SessionAttribut

27、es(value=“user1”, “user2”, types=Dept.class)SessionAttributes 示例update(). 表表單單參數(shù)參數(shù)賦值賦值 new 一個(gè)新的一個(gè)新的對(duì)對(duì)象象. 傳遞給傳遞給目目標(biāo)標(biāo)方法,方法,執(zhí)執(zhí)行行 update 操操作作dbupdate()db 從數(shù)據(jù)從數(shù)據(jù)庫(kù)庫(kù)中中 取出數(shù)據(jù)取出數(shù)據(jù). 表表單單參數(shù)參數(shù)賦值賦值. 傳遞給傳遞給目目標(biāo)標(biāo)方法,方法,執(zhí)執(zhí)行行 update 操操作作dbModelAttribute 在方法定在方法定義義上使用上使用 ModelAttribute 注解注解:Spring MVC在在調(diào)調(diào)用目用目標(biāo)處標(biāo)處理方法前,會(huì)先

28、逐個(gè)理方法前,會(huì)先逐個(gè)調(diào)調(diào)用在方法用在方法級(jí)級(jí)上上標(biāo)標(biāo)注了注了ModelAttribute 的方法。的方法。 在方法的在方法的入?yún)⑶笆褂萌雲(yún)⑶笆褂?ModelAttribute 注解注解: 可以從可以從隱隱含含對(duì)對(duì)象中象中獲獲取取隱隱含的模型數(shù)據(jù)中含的模型數(shù)據(jù)中獲獲取取對(duì)對(duì)象,再將象,再將請(qǐng)請(qǐng)求參求參數(shù)數(shù)綁綁定到定到對(duì)對(duì)象中,再象中,再傳傳入入?yún)⑷肴雲(yún)?將方法入?yún)⒎椒ㄈ雲(yún)?duì)對(duì)象添加到模型中象添加到模型中由SessionAttributes引發(fā)的異常org.springframework.web.HttpSessionRequiredException: Session attribute u

29、ser required - not found in session 如果在處理類定義處標(biāo)注了SessionAttributes(“xxx”),則 嘗試從會(huì)話中獲取該屬性,并將其賦給該入?yún)ⅲ缓笤儆?請(qǐng)求消息填充該入?yún)?duì)象。如果在會(huì)如果在會(huì)話話中找不到中找不到對(duì)應(yīng)對(duì)應(yīng)的屬的屬 性,性,則則拋出拋出 HttpSessionRequiredException 異異常常如何避免SessionAttributes引發(fā)的異常ControllerRequestMapping(/user)SessionAttributes(“user”) public class UserController Model

30、Attribute(user) public User getUser()User user = new User(); return user;RequestMapping(value = /handle71)public String handle71(ModelAttribute(“user”) User user).RequestMapping(value = /handle72)public String handle72(ModelMap modelMap,SessionStatus sessionStatus).該該方法會(huì)往方法會(huì)往隱隱含模型中添加含模型中添加一一個(gè)名個(gè)名為為us

31、er的模型屬性的模型屬性內(nèi)容概要SpringMVC 概述SpringMVC 的 HelloWorld使用 RequestMapping 映射請(qǐng)求映射請(qǐng)求參數(shù) & 請(qǐng)求頭處理模型數(shù)據(jù)視圖視圖和和視圖視圖解析器解析器RESTful CRUDSpringMVC 表單標(biāo)簽 &處理靜態(tài)資源數(shù)據(jù)轉(zhuǎn)換 & 數(shù)據(jù)格式化 & 數(shù)據(jù)校驗(yàn)處理 JSON:使用 HttpMessageConverter國(guó)際化文件的上傳使用攔截器異常處理SpringMVC 運(yùn)行流程在 Spring 的環(huán)境下使用SpringMVCSpringMVC 對(duì)比 Struts2SpringMVC如何解析視圖View

32、ViewResolver視圖對(duì)視圖對(duì)象象JSP/JSTL/PDF.請(qǐng)請(qǐng)求求處處理方法返回理方法返回值類值類型型StringModelAndViewModelAndViewherServletherServletAnnotationMethodHandlerAdapterAnnotationMethodHandlerAdapterServletHandlerMethodInvokerServletHandlerMethodInvokerUserHandlerUserHandlerInternalResourceViewResolverInternalResourceViewResolverInt

33、ernalResourceViewInternalResourceView2: handle3: invokeHandlerMethod4: loginModelAndView 對(duì)象5: getModelAndView6: processDispatchResult7: resolveViewName8: resolveViewName渲染視圖9: render10: exp11: for調(diào)用目標(biāo)處理器的目標(biāo)方法由視圖解析器解析邏輯視圖到物理視圖把目標(biāo)方法返回值轉(zhuǎn)為視圖和視圖解析器請(qǐng)求處理方法執(zhí)行完成后,最終返回一個(gè) ModelAndView 對(duì)象。對(duì)于那些返回 String,View 或 M

34、odeMap 等類型的 處理方法,Spring MVC 也會(huì)在內(nèi)部將它也會(huì)在內(nèi)部將它們們裝配成一個(gè)裝配成一個(gè) ModelAndView 對(duì)對(duì)象象,它包含了邏輯名和模型對(duì)象的視圖 Spring MVC 借助視圖視圖解析器解析器(ViewResolver)得到最終 的視圖對(duì)象(View),最終的視圖可以是 JSP ,也可能是 Excel、JFreeChart等各種表現(xiàn)形式的視圖 對(duì)于最終究竟采取何種視圖對(duì)象對(duì)模型數(shù)據(jù)進(jìn)行渲染,處 理器并不關(guān)心,處理器工作重點(diǎn)聚焦在生產(chǎn)模型數(shù)據(jù)的工 作上,從而實(shí)現(xiàn) MVC 的充分解耦視圖視圖視圖的作用是渲染模型數(shù)據(jù),將模型里的數(shù)據(jù)以某種形式呈現(xiàn)給客戶。為了實(shí)現(xiàn)視圖模

35、型和具體實(shí)現(xiàn)技術(shù)的解耦,Spring 在 org.springframework.web.servlet 包中定義了一個(gè)高度抽象的 View 接口:視圖對(duì)視圖對(duì)象由象由視圖視圖解析器解析器負(fù)責(zé)實(shí)負(fù)責(zé)實(shí)例化例化。由于視圖是無(wú)狀無(wú)狀態(tài)態(tài)的,所以他們不會(huì)有線線程安全程安全的問(wèn)題常用的視圖實(shí)現(xiàn)類視圖解析器SpringMVC 為邏輯視圖名的解析提供了不同的策略,可 以在 Spring WEB 上下文中配置一配置一種種或多或多種種解析策略解析策略,并并 指定他指定他們們之之間間的先后的先后順順序序。每一種映射策略對(duì)應(yīng)一個(gè)具體 的視圖解析器實(shí)現(xiàn)類。視圖解析器的作用比較單一:將邏輯視圖解析為一個(gè)具體 的視圖對(duì)

36、象。所有的視圖解析器都必須實(shí)現(xiàn) ViewResolver 接口:常用的視圖解析器實(shí)現(xiàn)類程序員可以選擇一種視圖解析器或混用多種視圖解析器每個(gè)視圖解析器都實(shí)現(xiàn)了 Ordered 接口并開(kāi)放出一個(gè) order 屬性,可可 以通以通過(guò)過(guò) order 屬性指定解析器的屬性指定解析器的優(yōu)優(yōu)先先順順序序,order越小越小優(yōu)優(yōu)先先級(jí)級(jí)越高越高。SpringMVC 會(huì)按視圖解析器順序的優(yōu)先順序?qū)壿嬕晥D名進(jìn)行解 析,直到解析成功并返回視圖對(duì)象,否則將拋出 ServletException 異 常InternalResourceViewResolverJSP 是最常見(jiàn)的視圖技術(shù),可以使用InternalReso

37、urceViewResolver 作為視圖解析器:/WEB-INF/pages/user/createSucess.jspInternalResourceViewResolver若項(xiàng)目中使用了 JSTL,則 SpringMVC 會(huì)自動(dòng)把視圖由InternalResourceView 轉(zhuǎn)為 JstlView若使用 JSTL 的 fmt 標(biāo)簽則需要在 SpringMVC 的配置文件中配置國(guó)配置國(guó)際際 化化資資源文件源文件若希望直接響應(yīng)通過(guò) SpringMVC 渲染的頁(yè)面,可以使用 mvc:view- controller 標(biāo)簽實(shí)現(xiàn)Excel 視圖若希望使用 Excel 展示數(shù)據(jù)列表,僅需要擴(kuò)展 S

38、pringMVC 提供的 AbstractExcelView 或 AbstractJExcel View 即可。實(shí)現(xiàn) buildExcelDocument() 方法,在方法中使用模型數(shù)據(jù)對(duì)象構(gòu)建 Excel 文檔就可以 了。 AbstractExcelView 基于基于 POI API,而AbstractJExcelView 是基于 JExcelAPI 的。視圖對(duì)視圖對(duì)象需要配置象需要配置 IOC 容器中的一個(gè)容器中的一個(gè) Bean,使用,使用 BeanNameViewResolver 作作為視圖為視圖解析器即可解析器即可若希望直接在瀏覽器中直接下載 Excel 文檔,則可以設(shè)置 響應(yīng)頭 Co

39、ntent-Disposition 的值為 attachment;filename=xxx.xls關(guān)于重定向一般情況下,控制器方法返回字符串類型的值會(huì)被當(dāng)成邏 輯視圖名處理 如果返回的字符串中帶 forward: 或或 redirect: 前綴 時(shí),SpringMVC 會(huì)對(duì)他們進(jìn)行特殊處理:將 forward: 和 redirect: 當(dāng)成指示符,其后的字符串作為 URL 來(lái)處理 redirect:success.jsp:會(huì)完成一個(gè)到 success.jsp 的重定向的操作 forward:success.jsp:會(huì)完成一個(gè)到 success.jsp 的轉(zhuǎn)發(fā)操作內(nèi)容概要SpringMVC 概述

40、SpringMVC 的 HelloWorld使用 RequestMapping 映射請(qǐng)求映射請(qǐng)求參數(shù) & 請(qǐng)求頭處理模型數(shù)據(jù)視圖和視圖解析器RESTful CRUDSpringMVC 表單標(biāo)簽 &處理靜態(tài)資源數(shù)據(jù)轉(zhuǎn)換 & 數(shù)據(jù)格式化 & 數(shù)據(jù)校驗(yàn)處理 JSON:使用 HttpMessageConverter國(guó)際化文件的上傳使用攔截器異常處理SpringMVC 運(yùn)行流程在 Spring 的環(huán)境下使用SpringMVCSpringMVC 對(duì)比 Struts2RESTful SpringMVC CRUD 1. 顯示所有員工信息 URI:emps 請(qǐng)求方式:GET 顯示

41、效果RESTful SpringMVC CRUD 2. 添加所有員工信息 顯示添加頁(yè)面: URI:emp 請(qǐng)求方式:GET顯示效果添加員工信息: URI:emp 請(qǐng)求方式:POST 顯示效果:完成添加,重定向到 list 頁(yè)面。RESTful SpringMVC CRUD 3. 刪除操作 URL:emp/id 請(qǐng)求方式:DELETE 刪除后效果:對(duì)應(yīng)記錄從數(shù)據(jù)表中刪除 4. 修改操作:lastName 不可修改不可修改! 顯示修改頁(yè)面: URI:emp/id 請(qǐng)求方式:GET 顯示效果:回顯表單。 修改員工信息: URI:emp 請(qǐng)求方式:PUT 顯示效果:完成修改,重定向到 list 頁(yè)面。

42、RESTful SpringMVC CRUD 相關(guān)的類: 實(shí)體類:Employee、Department Handler:EmployeeHandler Dao:EmployeeDao、DepartmentDao 相關(guān)的頁(yè)面 list.jsp input.jsp edit.jspupdate() 從數(shù)據(jù)從數(shù)據(jù)庫(kù)庫(kù)中中 取出數(shù)據(jù)取出數(shù)據(jù). 表表單單參數(shù)參數(shù)賦值賦值. 傳遞給傳遞給目目標(biāo)標(biāo)方法方法內(nèi)容概要SpringMVC 概述SpringMVC 的 HelloWorld使用 RequestMapping 映射請(qǐng)求映射請(qǐng)求參數(shù) & 請(qǐng)求頭處理模型數(shù)據(jù)視圖和視圖解析器RESTful CRUD

43、SpringMVC 表表單標(biāo)簽單標(biāo)簽 &處理靜態(tài)資源數(shù)據(jù)轉(zhuǎn)換 & 數(shù)據(jù)格式化 & 數(shù)據(jù)校驗(yàn)處理 JSON:使用 HttpMessageConverter國(guó)際化文件的上傳使用攔截器異常處理SpringMVC 運(yùn)行流程在 Spring 的環(huán)境下使用SpringMVCSpringMVC 對(duì)比 Struts2使用 Spring 的表單標(biāo)簽 通過(guò) SpringMVC 的表表單標(biāo)簽單標(biāo)簽可以實(shí)現(xiàn)將模型數(shù)據(jù) 中的屬性和 HTML 表單元素相綁定,以實(shí)現(xiàn)表單 數(shù)據(jù)更便捷更便捷編輯編輯和表和表單值單值的回的回顯顯form 標(biāo)簽 一般情況下,通通過(guò)過(guò) GET 請(qǐng)請(qǐng)求求獲獲取表取表單頁(yè)單頁(yè)面

44、面,而通通過(guò)過(guò) POST 請(qǐng)請(qǐng)求提交表求提交表單頁(yè)單頁(yè)面面,因此因此獲獲取表取表單頁(yè)單頁(yè)面和提交表面和提交表單單 頁(yè)頁(yè)面的面的 URL 是相同的是相同的。只要只要滿滿足足該該最佳條件的契最佳條件的契 約約, 標(biāo)簽標(biāo)簽就無(wú)需通就無(wú)需通過(guò)過(guò) action 屬性指定表屬性指定表單單 提提交的交的 URL 可以通過(guò) modelAttribute 屬性指定綁定的模型屬性,若 沒(méi)有指定該屬性,則默認(rèn)從 request 域?qū)ο笾凶x取 command 的表單 bean,如果該屬性值也不存在,則會(huì) 發(fā)生錯(cuò)誤。表單標(biāo)簽 SpringMVC 提供了多個(gè)表單組件標(biāo)簽,如、 等,用以綁定表單字段的 屬性值,它們的共有屬

45、性如下:path:表表單單字段,字段,對(duì)應(yīng)對(duì)應(yīng) html 元素的元素的 name 屬性,支持屬性,支持級(jí)聯(lián)級(jí)聯(lián)屬性屬性 htmlEscape:是否對(duì)表單值的 HTML 特殊字符進(jìn)行轉(zhuǎn)換,默認(rèn)值 為 true cssClass:表單組件對(duì)應(yīng)的 CSS 樣式類名 cssErrorClass:表單組件的數(shù)據(jù)存在錯(cuò)誤時(shí),采取的 CSS 樣式表單標(biāo)簽 form:input、form:password、form:hidden、form:textarea:對(duì)應(yīng) HTML 表單的 text、password、hidden、textarea標(biāo)簽 form:radiobutton:?jiǎn)芜x框組件標(biāo)簽,當(dāng)表單 bean

46、 對(duì)應(yīng)的 屬性值和 value 值相等時(shí),單選框被選中 form:radiobuttons:?jiǎn)芜x框組標(biāo)簽,用于構(gòu)造多個(gè)單選框 items:可以是一個(gè) List、String 或 Map itemValue:指定 radio 的 value 值??梢允羌现?bean 的一個(gè) 屬性值 itemLabel:指定 radio 的 label 值 delimiter:多個(gè)單選框可以通過(guò) delimiter 指定分隔符表單標(biāo)簽 form:checkbox:復(fù)選框組件。用于構(gòu)造單個(gè)復(fù)選框 form:checkboxs:用于構(gòu)造多個(gè)復(fù)選框。使用方式同 form:radiobuttons 標(biāo)簽 form:se

47、lect:用于構(gòu)造下拉框組件。使用方式同 form:radiobuttons 標(biāo)簽 form:option:下拉框選項(xiàng)組件標(biāo)簽。使用方式同 form:radiobuttons 標(biāo)簽 form:errors:顯示表單組件或數(shù)據(jù)校驗(yàn)所對(duì)應(yīng)的錯(cuò)誤 :顯示表單所有的錯(cuò)誤 :顯示所有以 user 為前綴的屬性對(duì)應(yīng)的錯(cuò)誤 :顯示特定表單對(duì)象屬性的錯(cuò)誤內(nèi)容概要SpringMVC 概述SpringMVC 的 HelloWorld使用 RequestMapping 映射請(qǐng)求映射請(qǐng)求參數(shù) & 請(qǐng)求頭處理模型數(shù)據(jù)視圖和視圖解析器RESTful CRUDSpringMVC 表單標(biāo)簽 & 處處理靜理靜態(tài)

48、資態(tài)資源源數(shù)據(jù)轉(zhuǎn)換 & 數(shù)據(jù)格式化 & 數(shù)據(jù)校驗(yàn)處理 JSON:使用 HttpMessageConverter國(guó)際化文件的上傳使用攔截器異常處理SpringMVC 運(yùn)行流程在 Spring 的環(huán)境下使用SpringMVCSpringMVC 對(duì)比 Struts2處理靜態(tài)資源優(yōu)雅的 REST 風(fēng)格的資源URL 不希望帶 .html 或 .do 等后綴若將 DispatcherServlet 請(qǐng)求映射配置為 /,則 Spring MVC 將捕獲 WEB 容器的所有請(qǐng)求,包括靜包括靜態(tài)資態(tài)資源的源的請(qǐng)請(qǐng)求,求, SpringMVC 會(huì)將他會(huì)將他 們們當(dāng)成一個(gè)普通當(dāng)成一個(gè)普通請(qǐng)請(qǐng)求求處處

49、理,因找不到理,因找不到對(duì)應(yīng)處對(duì)應(yīng)處理器將理器將導(dǎo)導(dǎo)致致錯(cuò)誤錯(cuò)誤??梢栽?SpringMVC 的配置文件中配置 的方式解決靜態(tài)資源的問(wèn)題: 將在 SpringMVC 上下文中定義一個(gè) DefaultServletHttpRequestHandler,它會(huì)對(duì)進(jìn)入 DispatcherServlet 的 請(qǐng)求進(jìn)行篩查,如果發(fā)現(xiàn)是沒(méi)有經(jīng)過(guò)映射的請(qǐng)求,就將該請(qǐng)求交由 WEB 應(yīng)用服務(wù)器默認(rèn)的 Servlet 處理,如果不是靜態(tài)資源的請(qǐng)求,才由 DispatcherServlet 繼續(xù)處理一般 WEB 應(yīng)用服務(wù)器默認(rèn)的 Servlet 的名稱都是 default。若所使用的 WEB 服務(wù)器的默認(rèn) Ser

50、vlet 名稱不是 default,則需要通過(guò) default- servlet-name 屬性顯式指定內(nèi)容概要SpringMVC 概述SpringMVC 的 HelloWorld使用 RequestMapping 映射請(qǐng)求映射請(qǐng)求參數(shù) & 請(qǐng)求頭處理模型數(shù)據(jù)視圖和視圖解析器RESTful CRUDSpringMVC 表單標(biāo)簽 &處理靜態(tài)資源數(shù)據(jù)數(shù)據(jù)轉(zhuǎn)換轉(zhuǎn)換 & 數(shù)據(jù)格式化 & 數(shù)據(jù)校驗(yàn)處理 JSON:使用 HttpMessageConverter國(guó)際化文件的上傳使用攔截器異常處理SpringMVC 運(yùn)行流程在 Spring 的環(huán)境下使用SpringMVCSpr

51、ingMVC 對(duì)比 Struts2數(shù)據(jù)綁定流程 1. Spring MVC 主框架將 ServletRequest對(duì)象及目標(biāo)方 法的入?yún)?shí)例傳遞給 WebDataBinderFactory 實(shí)例,以創(chuàng) 建 DataBinder 實(shí)例對(duì)象 2. DataBinder 調(diào)用裝配在 Spring MVC 上下文中的 ConversionService 組件進(jìn)行數(shù)據(jù)數(shù)據(jù)類類型型轉(zhuǎn)換轉(zhuǎn)換、數(shù)據(jù)格式、數(shù)據(jù)格式 化化工作。將 Servlet 中的請(qǐng)求信息填充到入?yún)?duì)象中 3. 調(diào)用 Validator 組件對(duì)已經(jīng)綁定了請(qǐng)求消息的入?yún)?duì)象 進(jìn)行數(shù)據(jù)合法性校驗(yàn),并最終生成數(shù)據(jù)綁定結(jié)果 BindingData 對(duì)

52、象 4. Spring MVC 抽取 BindingResult 中的入?yún)?duì)象和校驗(yàn) 錯(cuò)誤對(duì)象,將它們賦給處理方法的響應(yīng)入?yún)?shù)據(jù)綁定流程Spring MVC 通過(guò)反射機(jī)制對(duì)目標(biāo)處理方法進(jìn)行解析,將請(qǐng) 求消息綁定到處理方法的入?yún)⒅?。?shù)據(jù)綁定的核心部件是 DataBinder,運(yùn)行機(jī)制如下:DataBinderConversionServiceValidator345處理方法入?yún)?duì)象處理方法入?yún)?duì)象BindingResult處理方法的簽名1ServletRequest2數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換/格式化格式化數(shù)據(jù)校驗(yàn)數(shù)據(jù)校驗(yàn)數(shù)據(jù)綁定流程數(shù)據(jù)綁定流程數(shù)據(jù)轉(zhuǎn)換Spring MVC 上下文中內(nèi)建了很多轉(zhuǎn)換

53、器,可完成大多數(shù) Java 類型的轉(zhuǎn)換工作。ConversionService converters =java.lang.Boolean - java.lang.String : org.springframework.core.convert.support.ObjectToStringConverterf874cajava.lang.Character - java.lang.Number : CharacterToNumberFactoryf004c9java.lang.Character - java.lang.String : ObjectToStringConverter68a9

54、61java.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 -

55、 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

56、.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 : PropertiesToSt

57、ringConverter367a7fjava.util.UUID - java.lang.String : ObjectToStringConverter112b07f 自定義類型轉(zhuǎn)換器 ConversionService 是 Spring 類型轉(zhuǎn)換體系的核心接口。 可以利用 ConversionServiceFactoryBean 在 Spring 的 IOC 容器中定義一個(gè) ConversionService. Spring 將自將自動(dòng)識(shí)別動(dòng)識(shí)別出出 IOC 容器中的容器中的 ConversionService,并在,并在 Bean 屬性配置及屬性配置及 Spring MVC 處處理方法

58、入?yún)⒗矸椒ㄈ雲(yún)⒔壗壎ǖ榷ǖ葓?chǎng)場(chǎng)合使用它合使用它進(jìn)進(jìn)行數(shù)據(jù)的行數(shù)據(jù)的轉(zhuǎn)換轉(zhuǎn)換 可通可通過(guò)過(guò) ConversionServiceFactoryBean 的的 converters 屬屬性性 注冊(cè)自定注冊(cè)自定義義的的類類型型轉(zhuǎn)換轉(zhuǎn)換器器Spring 支持的轉(zhuǎn)換器Spring 定義了 3 種類型的轉(zhuǎn)換器接口,實(shí)現(xiàn)任意一個(gè)轉(zhuǎn)換 器接口都可以作為自定義轉(zhuǎn)換器注冊(cè)到 ConversionServiceFactroyBean 中:Converter:將 S 類型對(duì)象轉(zhuǎn)為 T 類型對(duì)象 ConverterFactory:將相同系列多個(gè) “同質(zhì)” Converter 封裝在一 起。如果希望將一種類型的對(duì)象轉(zhuǎn)換為另

59、一種類型及其子類的對(duì) 象(例如將 String 轉(zhuǎn)換為 Number 及 Number 子類(Integer、Long、Double 等)對(duì)象)可使用該轉(zhuǎn)換器工廠類 GenericConverter:會(huì)根據(jù)源類對(duì)象及目標(biāo)類對(duì)象所在的宿主類中的上下文信息進(jìn)行類型轉(zhuǎn)換自定義轉(zhuǎn)換器示例 會(huì)將自定義的 ConversionService 注冊(cè)到 Spring MVC 的上下文中關(guān)于 mvc:annotation-driven 會(huì)自動(dòng)注 冊(cè)RequestMappingHandlerMapping、RequestMappingHandlerAdapter 與ExceptionHandlerExceptio

60、nResolver 三個(gè)bean。 還將提供以下支持: 支持使用 ConversionService 實(shí)例對(duì)表單參數(shù)進(jìn)行類型轉(zhuǎn)換 支持使用 NumberFormat annotation、DateTimeFormat注解完成數(shù)據(jù)類型的格式化支持使用 Valid 注解對(duì) JavaBean 實(shí)例進(jìn)行 JSR 303 驗(yàn)證 支持使用 RequestBody 和 ResponseBody 注解既沒(méi)有配置既沒(méi)有配置 也沒(méi)有配置也沒(méi)有配置 配置了配置了 但沒(méi)有配置但沒(méi)有配置 既配置了既配置了 又配置又配置 InitBinder 由 InitBinder 標(biāo)識(shí)的方法,可以可以對(duì)對(duì) WebDataBinder 對(duì)對(duì) 象象進(jìn)進(jìn)行初始化行初始化。WebDataBinder 是 DataBinder 的子類,用 于完成由表單字段到 JavaBean 屬性的綁定InitBinder方法不能有返回方法不能有返回值值,它必須聲明為void。 InitBinder方法的參數(shù)通常是是方法的參數(shù)通常是是 WebDataBinder數(shù)據(jù)綁定流程 Spring MVC

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論