




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于SSM框架的軟件架構(gòu)設計實戰(zhàn)Software
Architecture
Design
Practice
Based
on
SSM
Framework第7章SpringMVC基礎(chǔ)12345MVC的概念Spring
MVC概述請求的響應請求參數(shù)的綁定視圖與視圖的選擇MVC的概念MVC的概念圖形用戶界面(GUI)的三個關(guān)注點:數(shù)據(jù)的呈現(xiàn)、UI邏輯、業(yè)務邏輯自治視圖(AutonomousView):將三個關(guān)注點糅合在一起,它的問題:重用性低穩(wěn)定性差可測試性差MVC的概念關(guān)注點分離(SeparationofConcerns,SoC):將各個關(guān)注點分離開,并通過合理的接口將它們之間的依賴降到最低MVC模式:即模型(model)-視圖(view)-控制器(controller)模式就是實現(xiàn)關(guān)注點分離的一種軟件設計模式MVC的概念MVC的組成部分model:對應用狀態(tài)和業(yè)務功能的封裝,它接受controller的請求并完成相應的業(yè)務處理,并在應用狀態(tài)改變時向view發(fā)出通知view:呈現(xiàn)界面,捕捉輸入controller:接受view捕捉的用戶輸入,如果有業(yè)務邏輯調(diào)用,則調(diào)用model的相應功能,根據(jù)需要選擇向用戶呈現(xiàn)的viewMVC的概念MVC的概念要點controller的主要職責是封裝UI邏輯和選擇要呈現(xiàn)的view。model和view之間有直接聯(lián)系。view可以調(diào)用model查詢其狀態(tài)信息;model的狀態(tài)發(fā)生變化時,直接通知view。MVC僅僅是一個基本的指導方針,是一個寬泛的概念。MVC的概念存在的問題增加了系統(tǒng)結(jié)構(gòu)和實現(xiàn)的復雜性三個部分的職責不平衡view和model沒有解耦實際應用中,model和controller的職責不容易劃分清楚Spring
MVC概述Spring
MVC概述結(jié)構(gòu)前端控制器DispatcherServlet處理器映射器HandlerMapping處理器適配器HandlerAdapter處理器Handler視圖解析器ViewResolverSpring
MVC概述Spring
MVC概述創(chuàng)建Spring
MVC應用的步驟創(chuàng)建Java
Web應用程序?qū)氡匾膉ar包,或在項目管理工具中配置依賴項創(chuàng)建控制器類創(chuàng)建作為視圖的jsp文件創(chuàng)建Spring配置文件在web.xml中配置前端控制器請求的響應請求的響應讓一個函數(shù)響應HTTP請求,我們做了這些事在類上應用@Controller注解,將類標注為控制器Bean在方法上應用@RequestMapping注解,將方法標注為處理器方法返回一個ModelAndView類的實例,是對Model和View的抽象,它封裝了數(shù)據(jù),并選擇了一個視圖在視圖文件里,取出ModelAndView中的數(shù)據(jù)并顯示在頁面上請求的響應Spring
MVC響應請求的過程Web應用程序啟動,控制器類的Bean被實例化(@Controller)前端控制器(Servlet)攔截客戶端請求對請求路徑進行解析如果是對處理器的請求,則執(zhí)行相應處理器方法(@RequestMapping)根據(jù)處理器返回值,找到相應視圖請求的響應@RequestMapping注解作用1.用在方法上,將一個方法標注為處理器如上處理器的請求路徑就是:網(wǎng)站根路徑/student-list請求的響應@RequestMapping注解作用2.用在類上,為類中的處理器提供一個統(tǒng)一的請求父路徑如上處理器的請求路徑就是:網(wǎng)站根路徑/student/list成員名類型含義valueString、String[]請求路徑pathString、String[]value的別名nameString處理器名methodRequestMethod、RequestMethod[]指定這個處理器可以響應的請求方式paramsString、String[]指定這個處理器只能響應包含特定參數(shù)(以及值)的請求headersString、String[]指定這個處理器只能響應請求頭中包含特定域的請求consumesString、String[]指定這個處理器只能響應特定內(nèi)容類型的請求producesString、String[]指定這個處理器返回的響應體的類型請求的響應請求的響應method成員類型:RequestMethod,或RequestMethod數(shù)組作用:指定處理器可以響應的請求方式注意事項:SpringMVC支持8種HTTP請求方法如果提供RequestMethod數(shù)組,則會響應數(shù)組中指定的請求方式如果請求的方法不被響應,則會返回405(Method
Not
Allowed)錯誤如果不指定該成員,默認響應所有類型的請求請求的響應常見的HTTP狀態(tài)碼1xx:信息,服務器收到請求,需要請求者繼續(xù)執(zhí)行操作2xx:成功,操作被成功接收并處理3xx:重定向,需要進一步的操作以完成請求4xx:客戶端錯誤,請求包含語法錯誤或無法完成請求5xx:服務器錯誤,服務器在處理請求的過程中發(fā)生了錯誤狀態(tài)碼名稱含義200OK請求成功(一般性的成功)201Created請求成功并創(chuàng)建了資源,用于POST請求204No
Content請求成功但未返回內(nèi)容,一般用于DELETE請求400Bad
Request請求的語法錯誤,服務器無法理解401Unauthorized要求用戶身份認證403Forbidden服務器理解此請求,但拒絕執(zhí)行此請求404Not
Found請求的資源無法找到405Method
Not
Allowed請求方法被禁止406Not
Acceptable服務器無法根據(jù)客戶端請求的內(nèi)容特性完成請求415Unsupported
Media
Type服務器無法處理請求附帶的媒體格式500Internal
Server
Error服務器內(nèi)部錯誤請求的響應方法名含義GET向特定的資源發(fā)出請求,數(shù)據(jù)包含在請求路徑中。POST向指定資源提交數(shù)據(jù),數(shù)據(jù)包含在請求體中,POST請求可能會導致新的資源的建立和/或已有資源的修改。HEAD向服務器請求與GET請求相一致的響應,只不過響應體將不會被返回。PUT向指定資源位置上傳新數(shù)據(jù)DELETE請求刪除指定位置上的資源PATCH局部更新指定位置上的資源OPTIONS返回服務器針對特定資源所支持的HTTP請求方法TRACE回顯服務器收到的請求,主要用于測試或診斷請求的響應請求的響應由于GET、POST、DELETE、PUT、PATCH這幾類請求很常用,Spring
MVC提供了如下幾個注解代替@RequestMapping@GetMapping@PostMapping@DeleteMapping@PutMapping@PatchMapping請求的響應params成員類型:String或String[]作用:指明只響應包含特定的參數(shù)和參數(shù)值的請求常見格式:params="id",表示請求中必須包含名為id的參數(shù)params="id=1",表示請求中必須包含名為id的參數(shù),且值必須為1params={"id=1","otherParam"},表示請求中必須包含名為id,otherParam兩個參數(shù),且id必須為1請求的響應params成員注意:如果請求中不包含必要的參數(shù)或參數(shù)值,則會返回400(Bad
Request)錯誤請求的響應headers成員類型:String或String[]作用:指明只響應請求頭中包含特定內(nèi)容的請求注意事項:如果沒有提供必要的請求頭,會返回404(Not
Found)錯誤請求的響應consumes成員類型:String或String[]作用:指明只響應具有特定內(nèi)容類型(Content-Type)的請求注意事項:通過GET方式提交的請求沒有請求體,因此請求頭中也沒有Content-Type這個成員的作用實際上是聲明服務器對何種格式的請求體數(shù)據(jù)具備處理能力如果請求中沒有提供指定的內(nèi)容類型,會返回415(Unsupported
Media
Type)錯誤請求的響應produces成員類型:String或String[]作用:指明只有當請求頭中的Accept字段包含特定內(nèi)容時才響應注意事項:這個成員的作用實際上是聲明服務器可以提供何種格式的響應體數(shù)據(jù)如果請求中的Accept字段值與produces成員不符,則會返回406(Not
Acceptable)錯誤請求參數(shù)的綁定請求參數(shù)的綁定請求參數(shù)的綁定解決的問題是:客戶端隨請求發(fā)送的數(shù)據(jù)(請求參數(shù))在服務器端如何獲取請求參數(shù)的綁定字面值的綁定Spring
MVC會默認將客戶端提交的同名參數(shù)賦值給處理器的入?yún)?,并進行類型解析請求參數(shù)的綁定@RequestParam注解用于處理器的入?yún)⒆饔茫褐该骺蛻舳颂峤坏膮?shù)和處理器入?yún)⒌慕壎P(guān)系成員:name,指明客戶端提交的參數(shù)名成員:require,指明參數(shù)是否為必須,默認為true如果上述兩個成員的條件不滿足,會返回一個400(Bad
Request)錯誤請求參數(shù)的綁定此處“name”即為客戶端提交的參數(shù)名,客戶端頁面可能是:請求參數(shù)的綁定對象類型參數(shù)的綁定有時會把多個請求參數(shù)封裝在一個實體對象中,便于處理器處理。此時,SpringMVC會自動去找對象中各個屬性,然后綁定同名請求參數(shù)。請求參數(shù)的綁定對應的客戶端頁面可能是:如將stuName和age封裝為Student類的屬性后,處理器代碼為:請求參數(shù)的綁定客戶端提交數(shù)組通常出現(xiàn)在頁面中使用復選框的時候。此時如果提交數(shù)據(jù),勾選的復選框?qū)膮?shù)會作為數(shù)組元素提交到處理器。請求參數(shù)的綁定處理器代碼注意事項:綁定數(shù)組元素時也會進行類型解析,如果轉(zhuǎn)換不成功會報錯請求參數(shù)的綁定路徑變量把請求參數(shù)作為請求路徑的一部分,這一部分可以被Spring
MVC解析出來并綁定到處理器入?yún)⑸辖壎ǚ椒ˊRequestMapping注解的請求路徑成員中,放在{}內(nèi)的部分就會被當做一個路徑變量在處理器入?yún)⑸鲜褂聾PathVariable注解,則會將二者進行綁定請求參數(shù)的綁定處理器代碼請求參數(shù)的綁定使用路徑變量注意事項路徑變量的名字如果與@PathVariable標注的處理器入?yún)⒉煌枰褂聾PathVariable的value成員指明,如@PathVariable("id")
String
cid入?yún)⒈仨氂聾PathVariable注解標注,否則這個參數(shù)會被當做請求路徑問號后面的請求參數(shù)聲明了路徑變量必須提供,否則會得到一個404(Not
Found)錯誤數(shù)據(jù)校驗數(shù)據(jù)校驗確定綁定的參數(shù)的數(shù)據(jù)類型和值的合法性。在JSR-303中,提供了一組用于實體數(shù)據(jù)校驗的注解,通過在實體類的屬性上使用這些注解,來對要注入的屬性值進行限制。數(shù)據(jù)校驗JSR-303數(shù)據(jù)校驗注解@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:檢查日期時間類型值是否在當前時間之前@Future:檢查日期時間類型值是否在當前時間之后數(shù)據(jù)校驗HibernateValidator附加注解@Length(min,max):檢查字符串長度是否在給定范圍內(nèi)@NotBlank:檢查字符串是否為null,以及是否為空白@NotEmpty:檢查字符串是否為null,以及是否為empty@URL:檢查字符串是否為URL格式@Range(min,max):檢查數(shù)值是否介于給定的范圍內(nèi)@UniqueElements:檢查集合中的元素是否沒有重復@Email:檢查字符串是否為email格式數(shù)據(jù)校驗實體類代碼數(shù)據(jù)校驗處理器代碼數(shù)據(jù)校驗說明在需要校驗的實體對象前使用注解@Valid,表示對該對象中的屬性進行校驗。BindingResult類封裝校驗結(jié)果信息。如果校驗未通過會拋出BindException異常。視圖與視圖的選擇視圖與視圖的選擇SpringMVC支持的主要視圖類型和對應的視圖實現(xiàn)類視圖實現(xiàn)類視圖類型InternalResourceView封裝服務器內(nèi)部資源,該資源通過URL定位AbstractExcelViewExcel文檔視圖的抽象類,可基于它實現(xiàn)自己的Excel文檔視圖。AbstractPdfViewPdf文檔視圖的抽象類,可基于它實現(xiàn)自己的Pdf文檔視圖。FreeMarkerView使用FreeMarker模板引擎的視圖VelocityView使用Velocity模板引擎的視圖視圖解析器類別視圖解析器實現(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育社會學知識點
- 家居設計辦公室裝修合同
- 管理學領(lǐng)導職能
- 二零二五年度北京市音樂廳內(nèi)部設施維修保養(yǎng)合同
- 診所裝修安全責任協(xié)議
- 2024涿州市職業(yè)技術(shù)教育中心工作人員招聘考試及答案
- 2024泰安市工商中等專業(yè)學校工作人員招聘考試及答案
- 2024泊頭市職業(yè)技術(shù)教育中心工作人員招聘考試及答案
- 2024河北省望都縣職業(yè)技術(shù)教育中心工作人員招聘考試及答案
- 新版汽車租賃合同范本
- 育嬰行業(yè)前景及就業(yè)前景
- 2024年美容師考試理論回顧試題及答案
- 2025年新疆九年級中考語文一模試卷附答案解析
- 不同行業(yè)的制度分析
- GB/T 45255-2025公共信用綜合評價規(guī)范
- 【百強?!俊竞诩|卷】黑龍江省哈爾濱市第三中學2025年高三學年第一次模擬考試(哈三中一模)化學試卷
- 老舊城市燃氣管道更新改造工程設計方案
- 中考地理一輪復習考點練習課件專題12 撒哈拉以南非洲和極地地區(qū)(含答案)
- 抵押擔保承諾書
- 物管物業(yè)交接驗收明細表格(全)模板
- 口腔科診斷證明書模板
評論
0/150
提交評論