《大數(shù)據(jù)技術(shù)及應(yīng)用》課件 單元4 競(jìng)賽登記管理系統(tǒng)前后端數(shù)據(jù)交互_第1頁(yè)
《大數(shù)據(jù)技術(shù)及應(yīng)用》課件 單元4 競(jìng)賽登記管理系統(tǒng)前后端數(shù)據(jù)交互_第2頁(yè)
《大數(shù)據(jù)技術(shù)及應(yīng)用》課件 單元4 競(jìng)賽登記管理系統(tǒng)前后端數(shù)據(jù)交互_第3頁(yè)
《大數(shù)據(jù)技術(shù)及應(yīng)用》課件 單元4 競(jìng)賽登記管理系統(tǒng)前后端數(shù)據(jù)交互_第4頁(yè)
《大數(shù)據(jù)技術(shù)及應(yīng)用》課件 單元4 競(jìng)賽登記管理系統(tǒng)前后端數(shù)據(jù)交互_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單元4競(jìng)賽登記管理系統(tǒng)前后端數(shù)據(jù)交互學(xué)習(xí)目標(biāo)01掌握項(xiàng)目中前后端數(shù)據(jù)交互的方式02熟悉配置不同的JSON數(shù)據(jù)轉(zhuǎn)換器03掌握對(duì)前端數(shù)據(jù)進(jìn)行統(tǒng)一校驗(yàn)的方式04理解對(duì)異常的全局處理任務(wù)4.1定義競(jìng)賽信息交互格式前端頁(yè)面后端服務(wù)采集數(shù)據(jù)傳給后端顯示從后端獲取的數(shù)據(jù)接收并校驗(yàn)前端傳來(lái)的數(shù)據(jù)任務(wù)場(chǎng)景任務(wù)布置前端如何將用戶填入的競(jìng)賽信息數(shù)據(jù)轉(zhuǎn)為JSON格式發(fā)送給后端?前端頁(yè)面后端如何接收J(rèn)SON格式的數(shù)據(jù)?接收后如何處理?后端服務(wù)知識(shí)準(zhǔn)備JSON個(gè)數(shù)JSON(JavaScriptObjectNotation)是一種輕量級(jí)的數(shù)據(jù)交換格式,易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成。它基于JavaScript的一個(gè)子集,但是獨(dú)立于語(yǔ)言,在前后端數(shù)據(jù)交互中被廣泛使用。前端發(fā)送JSON格式數(shù)據(jù)前端代碼中,無(wú)論是通過JavaScript的Ajax技術(shù)還是Html5的表單提交,都支持以JSON格式將數(shù)據(jù)發(fā)送給后端。這種數(shù)據(jù)交互方式使得前后端的數(shù)據(jù)傳輸更加靈活和高效。SpringBoot框架處理JSON格式數(shù)據(jù)SpringBoot框架內(nèi)置了Jackson數(shù)據(jù)轉(zhuǎn)換器,用于處理JSON格式的數(shù)據(jù)。它可以將JSON格式數(shù)據(jù)轉(zhuǎn)換為后端接口使用的對(duì)象類型數(shù)據(jù),從而方便后端進(jìn)行數(shù)據(jù)處理和操作。知識(shí)準(zhǔn)備Jackson是SpringBoot框架內(nèi)置的JSON數(shù)據(jù)轉(zhuǎn)換器,專為前后端交互的數(shù)據(jù)設(shè)計(jì),提供快速且高效的數(shù)據(jù)轉(zhuǎn)化能力。Jackson轉(zhuǎn)換器Gson由Google公司開發(fā),是一個(gè)優(yōu)秀的JSON格式轉(zhuǎn)換器,需要引入Gson相關(guān)的依賴,它提供了豐富的API接口,能夠處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。Gson轉(zhuǎn)換器Fastjson是阿里巴巴公司開發(fā)的高效、快速的JSON格式轉(zhuǎn)換器,只需引入FastJson相關(guān)的依賴并去掉Web起步依賴中的Jackson即可使用。Fastjson轉(zhuǎn)換器知識(shí)準(zhǔn)備AjaxResult類AjaxResult類是一個(gè)全局響應(yīng)結(jié)構(gòu),它擴(kuò)展了HashMap以存儲(chǔ)狀態(tài)碼、返回內(nèi)容和數(shù)據(jù)對(duì)象。通過繼承HashMap,AjaxResult能夠以鍵值對(duì)的形式管理響應(yīng)數(shù)據(jù)。AjaxResult類定義了后端返回給前端的通用數(shù)據(jù)結(jié)構(gòu),其中包括表示消息碼的code,表示消息值的msg,表示業(yè)務(wù)數(shù)據(jù)的data。任務(wù)實(shí)施Maven中添加Json解析依賴如果使用默認(rèn)的Jackson,無(wú)需對(duì)pom.xml做修改。如果要采用Google公司的Gson,需要在pom.xml中加入Gson相關(guān)的依賴,并且去掉Web起步依賴中的Jackson。如果采用阿里巴巴公司的FastJson轉(zhuǎn)換器,需要引入FastJson相關(guān)的依賴,同時(shí)去掉Web起步依賴中的Jackson。刷新Maven依賴在Idea中添加完依賴后點(diǎn)擊頁(yè)面右上角的刷新按鈕,Idea將會(huì)自動(dòng)把依賴下載到本地環(huán)境中。任務(wù)實(shí)施創(chuàng)建競(jìng)賽信息實(shí)體類SysCompete這個(gè)競(jìng)賽信息實(shí)體類中,定義了競(jìng)賽項(xiàng)目id、項(xiàng)目名稱、比賽時(shí)間、主辦單位、教師數(shù)量及名單、學(xué)生數(shù)量及名單、競(jìng)賽類型、競(jìng)賽級(jí)別、學(xué)時(shí)信息、獲獎(jiǎng)情況、競(jìng)賽費(fèi)用、競(jìng)賽相關(guān)文件、填報(bào)人信息、審批狀態(tài)、教師標(biāo)記、刪除標(biāo)記等信息。編寫前端頁(yè)面新建頁(yè)面addCompete.html。用戶可以在頁(yè)面錄入相關(guān)競(jìng)賽項(xiàng)目的信息,并可以選擇相關(guān)文件,通過Ajax方式以JSON數(shù)據(jù)格式發(fā)送給后端。任務(wù)實(shí)施創(chuàng)建控制器新建AddCompetitionInfoController.java類,用到了三個(gè)注解:@RestController,@PostMapping,@RequestBody。自定義全局響應(yīng)結(jié)構(gòu)類定義一個(gè)AjaxResult類繼承HashMap<String,Object>類型。當(dāng)數(shù)據(jù)無(wú)誤,發(fā)送的數(shù)據(jù)成功被后端接收的時(shí)候,調(diào)用success()方法返回?cái)?shù)據(jù)。當(dāng)用戶輸入的信息有誤的時(shí)候,調(diào)用error()方法給前端返回錯(cuò)誤。任務(wù)實(shí)施Postman簡(jiǎn)介Postman是一個(gè)接口測(cè)試工具,在做接口測(cè)試的時(shí)候,Postman相當(dāng)于一個(gè)客戶端,可以模擬用戶發(fā)起的各類HTTP請(qǐng)求(如:get/post/delete/put等等)。將請(qǐng)求數(shù)據(jù)發(fā)送至服務(wù)端,獲取對(duì)應(yīng)的響應(yīng)結(jié)果,從而驗(yàn)證響應(yīng)中的結(jié)果是否和預(yù)期值相匹配。有了Postman的幫助,開發(fā)人員能夠及時(shí)發(fā)現(xiàn)接口中的bug,提高開發(fā)效率。接口測(cè)試工具接口測(cè)試工具訪問Postman官網(wǎng)

訪問Postman官網(wǎng)的下載頁(yè)/downloads/下載安裝Postman

在Postman官網(wǎng)上,選擇適合您操作系統(tǒng)的版本進(jìn)行下載和安裝。啟動(dòng)Postman

安裝完成后,打開Postman應(yīng)用程序。新建請(qǐng)求在Postman主界面,點(diǎn)擊右上角的“+”按鈕,創(chuàng)建一個(gè)新的請(qǐng)求標(biāo)簽頁(yè)。在新建的標(biāo)簽頁(yè)中,您可以輸入請(qǐng)求的URL、選擇請(qǐng)求方法(如GET、POST等)以及添加請(qǐng)求頭和請(qǐng)求體。接口測(cè)試工具發(fā)送請(qǐng)求并查看結(jié)果點(diǎn)擊右側(cè)的“Send”按鈕,Postman將發(fā)送請(qǐng)求并顯示響應(yīng)結(jié)果。響應(yīng)結(jié)果包括狀態(tài)碼、響應(yīng)時(shí)間、響應(yīng)頭和響應(yīng)體等信息。接口測(cè)試工具任務(wù)4.2校驗(yàn)競(jìng)賽信息的合規(guī)性任務(wù)場(chǎng)景系統(tǒng)在進(jìn)行信息處理的時(shí)候,一般要先對(duì)信息進(jìn)行校驗(yàn),防止程序運(yùn)行中出現(xiàn)不必要的錯(cuò)誤。我們可以在前端頁(yè)面就進(jìn)行數(shù)據(jù)校驗(yàn),但后端的校驗(yàn)也是必不可少的,因?yàn)殚_發(fā)要遵循的一個(gè)原則就是“前端不可信”。因?yàn)榍岸宋挥诳蛻舳?,用戶很容易修改前端代碼,繞過前端的校驗(yàn)。數(shù)據(jù)校驗(yàn)要求用戶在輸入學(xué)生的姓名,學(xué)院,專業(yè),班級(jí)等數(shù)據(jù)信息時(shí),要求都不能為空。用戶在輸入學(xué)生的學(xué)號(hào)時(shí),要求學(xué)號(hào)不能小于10位,防止被黑客通過SQL注入的方式,盜取信息。任務(wù)布置知識(shí)準(zhǔn)備Java在包validation-api中定義了驗(yàn)證的接口,而實(shí)現(xiàn)該接口的是HibernateValidator。JavaValidationSpringValidation是對(duì)HibernateValidation的又一次封裝。SpringValidation提供了@Validated注解,新增了分組檢驗(yàn)的功能。SpringValidation@NotBlank

檢驗(yàn)字符串類型參數(shù)不能為空@NotNull

校驗(yàn)參數(shù)不能為null@Null

校驗(yàn)參數(shù)必須為null@NotEmpty

校驗(yàn)字符串,集合等不能為空串,空集合...常用的校驗(yàn)注解任務(wù)實(shí)施03配置異常處理的類創(chuàng)建一個(gè)專門的類來(lái)統(tǒng)一處理異常,將程序默認(rèn)的異常信息轉(zhuǎn)化為用戶直觀的提示方式。01對(duì)校驗(yàn)的字段進(jìn)行注解打開需要進(jìn)行數(shù)據(jù)校驗(yàn)的實(shí)體類,在每一個(gè)需要進(jìn)行校驗(yàn)的字段上加對(duì)應(yīng)的注解。02在控制器的方法上開啟數(shù)據(jù)校驗(yàn)在接收前端數(shù)據(jù)的方法中接收對(duì)象類型的參數(shù)前加上@Valid標(biāo)簽,表明這個(gè)對(duì)象類型參數(shù)需要進(jìn)行數(shù)據(jù)校驗(yàn)。任務(wù)實(shí)施任務(wù)4.3完成競(jìng)賽信息附件上傳任務(wù)場(chǎng)景在競(jìng)賽登記管理系統(tǒng)中,會(huì)要求用戶以附件形式提交各種材料,例如獲獎(jiǎng)證書和立項(xiàng)申報(bào)書,這就用到了文件上傳功能。用戶在頁(yè)面提交文件后,后端會(huì)接收并存儲(chǔ)這些文件,由管理人員審核。用戶可以查看自己的競(jìng)賽登記信息,并且下載自己提交過的文件。03用戶在查看自己的歷史申報(bào)信息時(shí),可以下載相應(yīng)的文件。01用戶在競(jìng)賽登記提交界面輸入相應(yīng)的申報(bào)信息后,可以選擇上傳的附件,這里可以上傳獲獎(jiǎng)證書,立項(xiàng)申報(bào)文件,費(fèi)用發(fā)放清冊(cè)等文件,點(diǎn)擊提交。02后端可以接收到前端傳過來(lái)的文件數(shù)據(jù),并存儲(chǔ)到相應(yīng)的目錄下。任務(wù)布置知識(shí)準(zhǔn)備SpringBoot項(xiàng)目是通過SpringMVC來(lái)實(shí)現(xiàn)文件上傳的。SpringMVC的九大組件之一MultipartResolver是專門用來(lái)處理文件上傳請(qǐng)求的。單文件上傳可以將多文件上傳看成是多個(gè)單文件一起上傳。接收文件的方法中以MultipartFile數(shù)組作為參數(shù)即可實(shí)現(xiàn)多文件的接收。方法體中可以遍歷這個(gè)文件數(shù)組,依次保存到指定目錄。多文件上傳SpringMVC并未對(duì)文件的下載進(jìn)行封裝和優(yōu)化,我們實(shí)現(xiàn)文件下載的話直接使用HttpServletResponse類就行。文件下載任務(wù)實(shí)施文件上傳創(chuàng)建前端頁(yè)面在頁(yè)面目錄中新建一個(gè)html文件,添加一個(gè)表單,并在表單中添加“file”類型的input元素。編寫FileController控制器在controller包中新建一個(gè)FileController類,編寫后端接收文件上傳請(qǐng)求的處理方法。任務(wù)實(shí)施文件下載創(chuàng)建前端頁(yè)面新建一個(gè)html頁(yè)面,在該頁(yè)面上添加一個(gè)文件下載按鈕,通過該按鈕來(lái)觸發(fā)下載操作。編寫FileDownloadController控制器在controller包中新建一個(gè)FileDownloadController類用來(lái)負(fù)責(zé)后端邏輯的實(shí)現(xiàn)。任務(wù)實(shí)施任務(wù)4.4處理競(jìng)賽信息流轉(zhuǎn)中的異常任務(wù)場(chǎng)景系統(tǒng)運(yùn)行的時(shí)候難免會(huì)產(chǎn)生各種各樣的異常情況。這些異常有的是我們程序員的邏輯失誤造成的,而有的是一些不可控的因素造成的。我們可以在程序中使用try-catch機(jī)制來(lái)處理可能遇到的異常,從而增加系統(tǒng)的健壯性。但當(dāng)遇到異常時(shí),系統(tǒng)不應(yīng)該直接將原始的錯(cuò)誤信息呈現(xiàn)給用戶,給用戶呈現(xiàn)的應(yīng)該是經(jīng)過處理過的提示信息。這樣既能減少敏感信息被不懷好意的人發(fā)現(xiàn)和利用,又能增強(qiáng)提示的可讀性。那么,是否需要在每一個(gè)catch代碼段中作出錯(cuò)誤轉(zhuǎn)化呢?在項(xiàng)目中配置全局異常處理類,用來(lái)統(tǒng)一處理程序中的異常。任務(wù)布置@ControllerAdvice注解@ControllerAdvice注解的類表示一個(gè)增強(qiáng)的控制器,可以將其作為全局異常處理器。此外,這個(gè)增強(qiáng)的控制器還能夠?qū)崿F(xiàn)全局?jǐn)?shù)據(jù)綁定、全局?jǐn)?shù)據(jù)預(yù)處理等功能。這些功能的實(shí)現(xiàn)需要搭配@ExceptionHandler、@InitBinder、@ModelAttribute等作用在方法的注解。@ExceptionHandler@ExceptionHandler注解主要用在方法上,表示該方法會(huì)處理指定的異常。當(dāng)注解沒有屬性值時(shí),表示會(huì)處理對(duì)應(yīng)方法的參數(shù)中的任意類型的異常。而該注解有屬性值時(shí),就表明只處理參數(shù)指定的異常。知識(shí)準(zhǔn)備實(shí)現(xiàn)HandlerExceptionResolver接口在SpringBoot項(xiàng)目中,默認(rèn)使用ExceptionHandlerExceptionResolver對(duì)象來(lái)處理程序中遇到的異常。ExceptionHandlerExceptionResolver是HandlerExceptionResolver接口的實(shí)現(xiàn)類之一。HandlerExceptionResolver是SpringMVC九大組件之一,用來(lái)處理發(fā)生的異常。SpringMVC框架的DispatchServlet在初始化的時(shí)候,會(huì)去容器中找HandlerExceptionResolver的實(shí)現(xiàn)類,用來(lái)處理程序中可能出現(xiàn)的異常。知識(shí)準(zhǔn)備任務(wù)實(shí)施編寫觸發(fā)異常測(cè)試代碼新建一個(gè)類ExceptionController,在訪問方法里直接拋出自定義的異常。編寫全局異常處理類新建類GlobalExceptionHandler,類名上注解@RestControllerAdvice。該類中添加方法,在各方法上添加@ExceptionHandler注解和該注解的參數(shù),用來(lái)限定該方法處理的特定類型的異常。測(cè)試運(yùn)行運(yùn)行程序,打開瀏覽器,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論