軟件架構(gòu)設(shè)計(jì)實(shí)踐- 基于SSM框架 課件 第7章 Spring MVC基礎(chǔ)_第1頁
軟件架構(gòu)設(shè)計(jì)實(shí)踐- 基于SSM框架 課件 第7章 Spring MVC基礎(chǔ)_第2頁
軟件架構(gòu)設(shè)計(jì)實(shí)踐- 基于SSM框架 課件 第7章 Spring MVC基礎(chǔ)_第3頁
軟件架構(gòu)設(shè)計(jì)實(shí)踐- 基于SSM框架 課件 第7章 Spring MVC基礎(chǔ)_第4頁
軟件架構(gòu)設(shè)計(jì)實(shí)踐- 基于SSM框架 課件 第7章 Spring MVC基礎(chǔ)_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

基于SSM框架的軟件架構(gòu)設(shè)計(jì)實(shí)戰(zhàn)Software

Architecture

Design

Practice

Based

on

SSM

Framework第7章SpringMVC基礎(chǔ)12345MVC的概念Spring

MVC概述請求的響應(yīng)請求參數(shù)的綁定視圖與視圖的選擇MVC的概念MVC的概念圖形用戶界面(GUI)的三個關(guān)注點(diǎn):數(shù)據(jù)的呈現(xiàn)、UI邏輯、業(yè)務(wù)邏輯自治視圖(AutonomousView):將三個關(guān)注點(diǎn)糅合在一起,它的問題:重用性低穩(wěn)定性差可測試性差MVC的概念關(guān)注點(diǎn)分離(SeparationofConcerns,SoC):將各個關(guān)注點(diǎn)分離開,并通過合理的接口將它們之間的依賴降到最低MVC模式:即模型(model)-視圖(view)-控制器(controller)模式就是實(shí)現(xiàn)關(guān)注點(diǎn)分離的一種軟件設(shè)計(jì)模式MVC的概念MVC的組成部分model:對應(yīng)用狀態(tài)和業(yè)務(wù)功能的封裝,它接受controller的請求并完成相應(yīng)的業(yè)務(wù)處理,并在應(yīng)用狀態(tài)改變時向view發(fā)出通知view:呈現(xiàn)界面,捕捉輸入controller:接受view捕捉的用戶輸入,如果有業(yè)務(wù)邏輯調(diào)用,則調(diào)用model的相應(yīng)功能,根據(jù)需要選擇向用戶呈現(xiàn)的viewMVC的概念MVC的概念要點(diǎn)controller的主要職責(zé)是封裝UI邏輯和選擇要呈現(xiàn)的view。model和view之間有直接聯(lián)系。view可以調(diào)用model查詢其狀態(tài)信息;model的狀態(tài)發(fā)生變化時,直接通知view。MVC僅僅是一個基本的指導(dǎo)方針,是一個寬泛的概念。MVC的概念存在的問題增加了系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)的復(fù)雜性三個部分的職責(zé)不平衡view和model沒有解耦實(shí)際應(yīng)用中,model和controller的職責(zé)不容易劃分清楚Spring

MVC概述Spring

MVC概述結(jié)構(gòu)前端控制器DispatcherServlet處理器映射器HandlerMapping處理器適配器HandlerAdapter處理器Handler視圖解析器ViewResolverSpring

MVC概述Spring

MVC概述創(chuàng)建Spring

MVC應(yīng)用的步驟創(chuàng)建Java

Web應(yīng)用程序?qū)氡匾膉ar包,或在項(xiàng)目管理工具中配置依賴項(xiàng)創(chuàng)建控制器類創(chuàng)建作為視圖的jsp文件創(chuàng)建Spring配置文件在web.xml中配置前端控制器請求的響應(yīng)請求的響應(yīng)讓一個函數(shù)響應(yīng)HTTP請求,我們做了這些事在類上應(yīng)用@Controller注解,將類標(biāo)注為控制器Bean在方法上應(yīng)用@RequestMapping注解,將方法標(biāo)注為處理器方法返回一個ModelAndView類的實(shí)例,是對Model和View的抽象,它封裝了數(shù)據(jù),并選擇了一個視圖在視圖文件里,取出ModelAndView中的數(shù)據(jù)并顯示在頁面上請求的響應(yīng)Spring

MVC響應(yīng)請求的過程Web應(yīng)用程序啟動,控制器類的Bean被實(shí)例化(@Controller)前端控制器(Servlet)攔截客戶端請求對請求路徑進(jìn)行解析如果是對處理器的請求,則執(zhí)行相應(yīng)處理器方法(@RequestMapping)根據(jù)處理器返回值,找到相應(yīng)視圖請求的響應(yīng)@RequestMapping注解作用1.用在方法上,將一個方法標(biāo)注為處理器如上處理器的請求路徑就是:網(wǎng)站根路徑/student-list請求的響應(yīng)@RequestMapping注解作用2.用在類上,為類中的處理器提供一個統(tǒng)一的請求父路徑如上處理器的請求路徑就是:網(wǎng)站根路徑/student/list成員名類型含義valueString、String[]請求路徑pathString、String[]value的別名nameString處理器名methodRequestMethod、RequestMethod[]指定這個處理器可以響應(yīng)的請求方式paramsString、String[]指定這個處理器只能響應(yīng)包含特定參數(shù)(以及值)的請求headersString、String[]指定這個處理器只能響應(yīng)請求頭中包含特定域的請求consumesString、String[]指定這個處理器只能響應(yīng)特定內(nèi)容類型的請求producesString、String[]指定這個處理器返回的響應(yīng)體的類型請求的響應(yīng)請求的響應(yīng)method成員類型:RequestMethod,或RequestMethod數(shù)組作用:指定處理器可以響應(yīng)的請求方式注意事項(xiàng):SpringMVC支持8種HTTP請求方法如果提供RequestMethod數(shù)組,則會響應(yīng)數(shù)組中指定的請求方式如果請求的方法不被響應(yīng),則會返回405(Method

Not

Allowed)錯誤如果不指定該成員,默認(rèn)響應(yīng)所有類型的請求請求的響應(yīng)常見的HTTP狀態(tài)碼1xx:信息,服務(wù)器收到請求,需要請求者繼續(xù)執(zhí)行操作2xx:成功,操作被成功接收并處理3xx:重定向,需要進(jìn)一步的操作以完成請求4xx:客戶端錯誤,請求包含語法錯誤或無法完成請求5xx:服務(wù)器錯誤,服務(wù)器在處理請求的過程中發(fā)生了錯誤狀態(tài)碼名稱含義200OK請求成功(一般性的成功)201Created請求成功并創(chuàng)建了資源,用于POST請求204No

Content請求成功但未返回內(nèi)容,一般用于DELETE請求400Bad

Request請求的語法錯誤,服務(wù)器無法理解401Unauthorized要求用戶身份認(rèn)證403Forbidden服務(wù)器理解此請求,但拒絕執(zhí)行此請求404Not

Found請求的資源無法找到405Method

Not

Allowed請求方法被禁止406Not

Acceptable服務(wù)器無法根據(jù)客戶端請求的內(nèi)容特性完成請求415Unsupported

Media

Type服務(wù)器無法處理請求附帶的媒體格式500Internal

Server

Error服務(wù)器內(nèi)部錯誤請求的響應(yīng)方法名含義GET向特定的資源發(fā)出請求,數(shù)據(jù)包含在請求路徑中。POST向指定資源提交數(shù)據(jù),數(shù)據(jù)包含在請求體中,POST請求可能會導(dǎo)致新的資源的建立和/或已有資源的修改。HEAD向服務(wù)器請求與GET請求相一致的響應(yīng),只不過響應(yīng)體將不會被返回。PUT向指定資源位置上傳新數(shù)據(jù)DELETE請求刪除指定位置上的資源PATCH局部更新指定位置上的資源OPTIONS返回服務(wù)器針對特定資源所支持的HTTP請求方法TRACE回顯服務(wù)器收到的請求,主要用于測試或診斷請求的響應(yīng)請求的響應(yīng)由于GET、POST、DELETE、PUT、PATCH這幾類請求很常用,Spring

MVC提供了如下幾個注解代替@RequestMapping@GetMapping@PostMapping@DeleteMapping@PutMapping@PatchMapping請求的響應(yīng)params成員類型:String或String[]作用:指明只響應(yīng)包含特定的參數(shù)和參數(shù)值的請求常見格式:params="id",表示請求中必須包含名為id的參數(shù)params="id=1",表示請求中必須包含名為id的參數(shù),且值必須為1params={"id=1","otherParam"},表示請求中必須包含名為id,otherParam兩個參數(shù),且id必須為1請求的響應(yīng)params成員注意:如果請求中不包含必要的參數(shù)或參數(shù)值,則會返回400(Bad

Request)錯誤請求的響應(yīng)headers成員類型:String或String[]作用:指明只響應(yīng)請求頭中包含特定內(nèi)容的請求注意事項(xiàng):如果沒有提供必要的請求頭,會返回404(Not

Found)錯誤請求的響應(yīng)consumes成員類型:String或String[]作用:指明只響應(yīng)具有特定內(nèi)容類型(Content-Type)的請求注意事項(xiàng):通過GET方式提交的請求沒有請求體,因此請求頭中也沒有Content-Type這個成員的作用實(shí)際上是聲明服務(wù)器對何種格式的請求體數(shù)據(jù)具備處理能力如果請求中沒有提供指定的內(nèi)容類型,會返回415(Unsupported

Media

Type)錯誤請求的響應(yīng)produces成員類型:String或String[]作用:指明只有當(dāng)請求頭中的Accept字段包含特定內(nèi)容時才響應(yīng)注意事項(xiàng):這個成員的作用實(shí)際上是聲明服務(wù)器可以提供何種格式的響應(yīng)體數(shù)據(jù)如果請求中的Accept字段值與produces成員不符,則會返回406(Not

Acceptable)錯誤請求參數(shù)的綁定請求參數(shù)的綁定請求參數(shù)的綁定解決的問題是:客戶端隨請求發(fā)送的數(shù)據(jù)(請求參數(shù))在服務(wù)器端如何獲取請求參數(shù)的綁定字面值的綁定Spring

MVC會默認(rèn)將客戶端提交的同名參數(shù)賦值給處理器的入?yún)?,并進(jìn)行類型解析請求參數(shù)的綁定@RequestParam注解用于處理器的入?yún)⒆饔茫褐该骺蛻舳颂峤坏膮?shù)和處理器入?yún)⒌慕壎P(guān)系成員:name,指明客戶端提交的參數(shù)名成員:require,指明參數(shù)是否為必須,默認(rèn)為true如果上述兩個成員的條件不滿足,會返回一個400(Bad

Request)錯誤請求參數(shù)的綁定此處“name”即為客戶端提交的參數(shù)名,客戶端頁面可能是:請求參數(shù)的綁定對象類型參數(shù)的綁定有時會把多個請求參數(shù)封裝在一個實(shí)體對象中,便于處理器處理。此時,SpringMVC會自動去找對象中各個屬性,然后綁定同名請求參數(shù)。請求參數(shù)的綁定對應(yīng)的客戶端頁面可能是:如將stuName和age封裝為Student類的屬性后,處理器代碼為:請求參數(shù)的綁定客戶端提交數(shù)組通常出現(xiàn)在頁面中使用復(fù)選框的時候。此時如果提交數(shù)據(jù),勾選的復(fù)選框?qū)?yīng)的參數(shù)會作為數(shù)組元素提交到處理器。請求參數(shù)的綁定處理器代碼注意事項(xiàng):綁定數(shù)組元素時也會進(jìn)行類型解析,如果轉(zhuǎn)換不成功會報(bào)錯請求參數(shù)的綁定路徑變量把請求參數(shù)作為請求路徑的一部分,這一部分可以被Spring

MVC解析出來并綁定到處理器入?yún)⑸辖壎ǚ椒ˊRequestMapping注解的請求路徑成員中,放在{}內(nèi)的部分就會被當(dāng)做一個路徑變量在處理器入?yún)⑸鲜褂聾PathVariable注解,則會將二者進(jìn)行綁定請求參數(shù)的綁定處理器代碼請求參數(shù)的綁定使用路徑變量注意事項(xiàng)路徑變量的名字如果與@PathVariable標(biāo)注的處理器入?yún)⒉煌枰褂聾PathVariable的value成員指明,如@PathVariable("id")

String

cid入?yún)⒈仨氂聾PathVariable注解標(biāo)注,否則這個參數(shù)會被當(dāng)做請求路徑問號后面的請求參數(shù)聲明了路徑變量必須提供,否則會得到一個404(Not

Found)錯誤數(shù)據(jù)校驗(yàn)數(shù)據(jù)校驗(yàn)確定綁定的參數(shù)的數(shù)據(jù)類型和值的合法性。在JSR-303中,提供了一組用于實(shí)體數(shù)據(jù)校驗(yàn)的注解,通過在實(shí)體類的屬性上使用這些注解,來對要注入的屬性值進(jìn)行限制。數(shù)據(jù)校驗(yàn)JSR-303數(shù)據(jù)校驗(yàn)注解@Null:檢查對象是否為null@NotNull:檢查對象是否不為null@AssertTrue:檢查Boolean值是否為true@AssertFalse:檢查Boolean值是否為false@Min(value):檢查數(shù)值是否大于等于給定值@Max(value):檢查數(shù)值是否小于等于給定值@DecimalMin(value):檢查BigDecimal是否大于等于給定值@DecimalMax(value):檢查BigDecimal是否小于等于給定值@Size(max,min):檢查集合的大小是否在給定范圍內(nèi)@Digits(integer,fraction):檢查字符串是否符合指定的數(shù)值格式@Past:檢查日期時間類型值是否在當(dāng)前時間之前@Future:檢查日期時間類型值是否在當(dāng)前時間之后數(shù)據(jù)校驗(yàn)HibernateValidator附加注解@Length(min,max):檢查字符串長度是否在給定范圍內(nèi)@NotBlank:檢查字符串是否為null,以及是否為空白@NotEmpty:檢查字符串是否為null,以及是否為empty@URL:檢查字符串是否為URL格式@Range(min,max):檢查數(shù)值是否介于給定的范圍內(nèi)@UniqueElements:檢查集合中的元素是否沒有重復(fù)@Email:檢查字符串是否為email格式數(shù)據(jù)校驗(yàn)實(shí)體類代碼數(shù)據(jù)校驗(yàn)處理器代碼數(shù)據(jù)校驗(yàn)說明在需要校驗(yàn)的實(shí)體對象前使用注解@Valid,表示對該對象中的屬性進(jìn)行校驗(yàn)。BindingResult類封裝校驗(yàn)結(jié)果信息。如果校驗(yàn)未通過會拋出BindException異常。視圖與視圖的選擇視圖與視圖的選擇SpringMVC支持的主要視圖類型和對應(yīng)的視圖實(shí)現(xiàn)類視圖實(shí)現(xiàn)類視圖類型InternalResourceView封裝服務(wù)器內(nèi)部資源,該資源通過URL定位AbstractExcelViewExcel文檔視圖的抽象類,可基于它實(shí)現(xiàn)自己的Excel文檔視圖。AbstractPdfViewPdf文檔視圖的抽象類,可基于它實(shí)現(xiàn)自己的Pdf文檔視圖。FreeMarkerView使用FreeMarker模板引擎的視圖VelocityView使用Velocity模板引擎的視圖視圖解析器類別視圖解析器實(shí)現(xiàn)類作用Bean名解析器BeanNameViewResolver將邏輯視圖名解析為Bean的名字,用于解析文檔視圖或其它自定義視圖URL解析器InternalResourceViewResolver將邏輯視圖名解析為一個URL

溫馨提示

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

評論

0/150

提交評論