Springboot+SpringCloud實(shí)戰(zhàn)課件 電子課件_第1頁(yè)
Springboot+SpringCloud實(shí)戰(zhàn)課件 電子課件_第2頁(yè)
Springboot+SpringCloud實(shí)戰(zhàn)課件 電子課件_第3頁(yè)
Springboot+SpringCloud實(shí)戰(zhàn)課件 電子課件_第4頁(yè)
Springboot+SpringCloud實(shí)戰(zhàn)課件 電子課件_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第五章SpringBootWeb應(yīng)用開發(fā)學(xué)習(xí)目標(biāo)掌握SpringBootWeb應(yīng)用開發(fā)常用注解、JSR-303校驗(yàn)工具的使用。掌握J(rèn)SP以及基于Thymeleaf的開發(fā)過程。了解SpringBoot中訪問靜態(tài)資源的原理和方式。通過第4章,我們了解了SpringBoot項(xiàng)目的自動(dòng)裝配過程和啟動(dòng)過程。本章我們來深入講解SpringBoot在Web應(yīng)用開發(fā)中的使用。SpringBootWeb開發(fā)常用注解12JSR-303校驗(yàn)的使用3SpringBoot實(shí)現(xiàn)JSP頁(yè)面的Web應(yīng)用開發(fā)4SpringBoot實(shí)現(xiàn)基于Thymeleaf模板的Web應(yīng)用開發(fā)5Thymeleaf的使用6訪問靜態(tài)資源SpringBootWeb開發(fā)常用注解回顧第2章,在編寫HelloController應(yīng)用時(shí)我們使用了3個(gè)注解——@Controller、@RequestMapping、@ResponseBody,相信讀者都已經(jīng)清楚它們的含義,這里不贅述。下面我們介紹另一個(gè)常用注解:@RestController。@RestController用在類上,它和@Controller的含義類似,只是多了一層含義。在類上加上這個(gè)注解,表示此類中的所有方法都返回JSON格式的數(shù)據(jù),它的作用等同于@ResponseBody。所以,@RestController相當(dāng)于@Controller和@ResponseBody的結(jié)合,使用@RestController后就不用在每個(gè)方法上寫@ResponseBody。為了驗(yàn)證@RequestMapping和@RestController注解的作用,我們創(chuàng)建一個(gè)名為HelloController2的類,如程序清單5-1所示。然后啟動(dòng)demo項(xiàng)目,在瀏覽器中進(jìn)行驗(yàn)證,如圖5-1所示,成功返回“hello2”。SpringBootWeb開發(fā)常用注解SpringBootWeb開發(fā)常用注解常用的注解還有@GetMapping、@PostMapping、@DeleteMapping、@PutMapping。@GetMapping相當(dāng)于@RequestMapping(value=“/”,method=RequestMethod.GET)。@RequestMapping中我們僅寫了value,沒寫method(默認(rèn)GET和POST都支持)。同理,另外3個(gè)也是類似的。這4個(gè)注解主要用于RESTful風(fēng)格開發(fā)。RESTful是一種互聯(lián)網(wǎng)軟件架構(gòu)設(shè)計(jì)的風(fēng)格,它提出了一組客戶端和服務(wù)器交互時(shí)的架構(gòu)理念和設(shè)計(jì)原則,基于這種理念和原則設(shè)計(jì)的接口更簡(jiǎn)潔、更有層次。舉一個(gè)簡(jiǎn)單的例子,我們要訪問一個(gè)接口“http://localhost:8080/order?

id=1”,采用RESTful風(fēng)格則地址為“http://localhost/order/1”。實(shí)現(xiàn)RESTful風(fēng)格最重要的就是@PathVariable,使用它將URL中占位符參數(shù)綁定到控制器處理方法的參數(shù)中。下面我們通過實(shí)際的例子來理解。編寫hello3方法。注意,URL中作為參數(shù)的“word”要使用花括號(hào)標(biāo)注。然后,我們重啟demo項(xiàng)目,在瀏覽器中進(jìn)行驗(yàn)證。

SpringBootWeb開發(fā)常用注解在傳統(tǒng)開發(fā)中,我們通常只使用GET和POST方式來實(shí)現(xiàn)增刪改查,所以URL中通常是動(dòng)詞。例如,獲取ID為1的學(xué)生的URL為“http://localhost:8080/getStudent?id=1”,而RESTful風(fēng)格則使用名詞,即“http://localhost:8080/student/1”。并且增刪改查都使用這一個(gè)URL,那么怎樣區(qū)分操作類型呢?答案是通過請(qǐng)求方式。這4個(gè)注解@PostMapping、@DeleteMapping、@PutMapping和@GetMapping剛好分別對(duì)應(yīng)增刪改查,即對(duì)應(yīng)POST請(qǐng)求、DELETE請(qǐng)求、PUT請(qǐng)求和GET請(qǐng)求。SpringBootWeb開發(fā)常用注解12JSR-303校驗(yàn)的使用3SpringBoot實(shí)現(xiàn)JSP頁(yè)面的Web應(yīng)用開發(fā)4SpringBoot實(shí)現(xiàn)基于Thymeleaf模板的Web應(yīng)用開發(fā)5Thymeleaf的使用6訪問靜態(tài)資源JSR-303校驗(yàn)的使用日常開發(fā)的業(yè)務(wù)中難免遇到對(duì)數(shù)據(jù)的校驗(yàn),例如,登錄/注冊(cè)的手機(jī)號(hào)是否規(guī)范、密碼長(zhǎng)度是否符合要求、賬號(hào)是否為空等。而數(shù)據(jù)校驗(yàn)不能只在前端頁(yè)面進(jìn)行,在后端同樣需要對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),以確保通過其他方式調(diào)用接口也能正常工作。如果我們?cè)贑ontroller中使用if-else語句來判斷,代碼會(huì)很多且邏輯復(fù)雜,因此我們可以使用JSR-303校驗(yàn)工具來實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)。JSR-303是JavaEE6中的一項(xiàng)規(guī)范,叫作BeanValidation。Spring從3.x版本開始就已經(jīng)支持JSR-303。JSR-303通過在實(shí)體類的屬性上添加注解的方式實(shí)現(xiàn)數(shù)據(jù)的校驗(yàn)。

使用JSR-303校驗(yàn)工具的步驟如下。①添加spring-boot-starter-validation依賴,如程序清單5-3所示。②創(chuàng)建實(shí)體類,如程序清單5-4所示。我們?cè)赿emo的entity包下創(chuàng)建一個(gè)User類,它有3個(gè)屬性,分別是“name”(用戶名)、“age”(密碼)和“phone”(手機(jī)號(hào))。其中,“message”表示在不符合校驗(yàn)規(guī)則時(shí)向用戶展示的提示信息。③我們?cè)赾ontroller包下創(chuàng)建一個(gè)UserController類,寫一個(gè)注冊(cè)接口“regist”,用于模擬接收用戶注冊(cè)的表單數(shù)據(jù),如程序清單5-5所示。JSR-303校驗(yàn)的使用注冊(cè)請(qǐng)求訪問此接口時(shí),JSR-303對(duì)標(biāo)注有@Valid的實(shí)體類進(jìn)行校驗(yàn),并將校驗(yàn)結(jié)果封裝在BindingResult對(duì)象中。hasErrors方法返回一個(gè)布爾值,只要有一個(gè)校驗(yàn)規(guī)則不符合便返回true。getFieldErrors方法返回不符合校驗(yàn)規(guī)則的FieldError的集合,F(xiàn)ieldError用于存儲(chǔ)屬性名和message信息。然后,我們通過forEach循環(huán)遍歷FieldError的集合,把錯(cuò)誤信息封裝進(jìn)返回結(jié)果。JSR-303校驗(yàn)的使用JSR-303校驗(yàn)的使用最后,我們啟動(dòng)demo項(xiàng)目并打開瀏覽器,先輸入不符合校驗(yàn)規(guī)則的表單數(shù)據(jù)進(jìn)行驗(yàn)證,結(jié)果如圖5-3所示。然后,輸入符合校驗(yàn)規(guī)則的表單數(shù)據(jù)進(jìn)行驗(yàn)證,結(jié)果如圖5-4所示。JSR-303校驗(yàn)的使用讀者實(shí)際操作時(shí)可能會(huì)疑惑,為什么和我們測(cè)試返回的數(shù)據(jù)顯示不一樣,這是因?yàn)槲覀兘oChrome瀏覽器安裝了一個(gè)插件——JSONView,它的作用是以更直觀的格式展示JSON字符串,推薦讀者安裝。SpringBootWeb開發(fā)常用注解12JSR-303校驗(yàn)的使用3SpringBoot實(shí)現(xiàn)JSP頁(yè)面的Web應(yīng)用開發(fā)4SpringBoot實(shí)現(xiàn)基于Thymeleaf模板的Web應(yīng)用開發(fā)5Thymeleaf的使用6訪問靜態(tài)資源SpringBoot實(shí)現(xiàn)JSP頁(yè)面的Web應(yīng)用開發(fā)SpringBoot默認(rèn)是不支持JSP(JavaServerPages,Java服務(wù)器頁(yè)面)的,需要添加依賴,如程序清單5-6所示。然后,在main中創(chuàng)建webapp目錄,在webapp中創(chuàng)建WEB-INF目錄,在WEB-INF中創(chuàng)建在jsp目錄,如圖5-5所示。接下來需要修改webapp為Web資源目錄。首先,打開IDEA,單擊“File”菜單,選擇“ProjectStructure”,如圖5-6所示。然后,在打開的對(duì)話框的左邊選擇“Modules”,單擊“Web”中的“WebResourceDirectories”處的加號(hào),如圖5-7所示。最后,選擇項(xiàng)目中的webapp目錄再單擊“OK”按鈕,便指定好了Web資源目錄,如圖5-8和圖5-9所示。SpringBoot實(shí)現(xiàn)JSP頁(yè)面的Web應(yīng)用開發(fā)SpringBoot實(shí)現(xiàn)JSP頁(yè)面的Web應(yīng)用開發(fā)然后,需要在YAML中配置JSP的prefix(前綴)和suffix(后綴),如程序清單5-7所示。接著,為了驗(yàn)證,我們?cè)趙ebapp的WEB-INF/jsp下創(chuàng)建一個(gè)JSP文件,并將其命名為“hello.jsp”,文件內(nèi)容如程序清單5-8所示。然后,在HelloController中創(chuàng)建一個(gè)“helloJSP”接口,該接口指向這個(gè)JSP,如程序清單5-9所示。注意,HelloController上不能有@RestController注解,并且它和這個(gè)接口方法上都不能有@ResponseBody注解。最后重啟demo項(xiàng)目,在瀏覽器中訪問hello.jsp,如圖5-10所示。SpringBoot實(shí)現(xiàn)JSP頁(yè)面的Web應(yīng)用開發(fā)SpringBootWeb開發(fā)常用注解12JSR-303校驗(yàn)的使用3SpringBoot實(shí)現(xiàn)JSP頁(yè)面的Web應(yīng)用開發(fā)4SpringBoot實(shí)現(xiàn)基于Thymeleaf模板的Web應(yīng)用開發(fā)5Thymeleaf的使用6訪問靜態(tài)資源SpringBoot實(shí)現(xiàn)基于Thymeleaf模板的Web應(yīng)用開發(fā)在SpringBoot中不推薦使用JSP,因?yàn)镴SP其實(shí)是JSP引擎動(dòng)態(tài)生成的Servlet類,所以需要用本地空間webapp來保存,而SpringBoot程序往往是以jar包的形式脫離容器獨(dú)立運(yùn)行的,如果設(shè)置額外的空間去保存JSP可能存在安全問題。因此,SpringBoot提供了另外兩種支持自動(dòng)裝配的模板引擎,分別是Thymeleaf和FreeMarker。因?yàn)門hymeleaf更容易上手,所以這里我們學(xué)習(xí)使用基于Thymeleaf模板的Web應(yīng)用開發(fā)。首先,添加Thymeleaf依賴。然后,在resources/templates目錄下創(chuàng)建一個(gè)名為“hello.html”的文件。注意,如果不打算在templates中創(chuàng)建,則需要在YAML中配置Thymeleaf的前綴。接著,在HelloController中創(chuàng)建一個(gè)名為“helloThymeleaf”的接口,其中Model對(duì)象用于傳值。最后,我們重啟demo項(xiàng)目,在瀏覽器中訪問hello.html。SpringBootWeb開發(fā)常用注解12JSR-303校驗(yàn)的使用3SpringBoot實(shí)現(xiàn)JSP頁(yè)面的Web應(yīng)用開發(fā)4SpringBoot實(shí)現(xiàn)基于Thymeleaf模板的Web應(yīng)用開發(fā)5Thymeleaf的使用6訪問靜態(tài)資源Thymeleaf的使用Thymeleaf的主要作用是把Model對(duì)象中的數(shù)據(jù)渲染到HTML中,它采用的是和JSTL(JPSStandardTagLibrary,JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù))中類似的一系列標(biāo)簽,這些標(biāo)簽可以用于邏輯判斷、循環(huán)遍歷、動(dòng)態(tài)賦值等。另外,需要知道它常用的兩個(gè)表達(dá)式。一個(gè)是變量表達(dá)式${},用于獲取Model對(duì)象中的數(shù)據(jù)。另外一個(gè)是URL表達(dá)式@{},用于標(biāo)注資源路徑,包括靜態(tài)資源、HTTP鏈接以及后端接口。SpringBootWeb開發(fā)常用注解12JSR-303校驗(yàn)的使用3SpringBoot實(shí)現(xiàn)JSP頁(yè)面的Web應(yīng)用開發(fā)4SpringBoot實(shí)現(xiàn)基于Thymeleaf模板的Web應(yīng)用開發(fā)5Thymeleaf的使用6訪問靜態(tài)資源訪問靜態(tài)資源SpringBoot提供了不通過Controller接口,直接訪問靜態(tài)資源的方式。靜態(tài)資源指的是HTML、JS、CSS等前端文件,以及圖片、視頻等多媒體文件。我們只需把靜態(tài)資源放在SpringBoot默認(rèn)的靜態(tài)資源目錄下,便可通過文件名直接訪問文件。SpringBoot默認(rèn)的靜態(tài)資源目錄有4個(gè),它們?cè)赗esourceProperties類的屬性CLASSPATH_RESOURCE_LOCATIONS定義中,如圖5-12所示。注意,這4個(gè)目錄的優(yōu)先級(jí)從前往后排列,我們通常用static就可以了。如圖5-13所示,在resources/static中放一張圖片。然后我們重啟demo項(xiàng)目,在瀏覽器中直接根據(jù)文件名就能訪問該圖片,如圖5-14所示。訪問靜態(tài)資源我們也可以自定義靜態(tài)資源目錄。自定義靜態(tài)資源目錄有兩種方式。第一種方式是在YAML中配置,如程序清單5-13所示?!皊tatic-path-pattern”表示靜態(tài)資源映射路徑,這里表示訪問靜態(tài)資源時(shí)需要加上“boot”?!皊tatic-locations”表示自定義靜態(tài)資源路徑,可以定義多個(gè),中間用逗號(hào)分隔。然后,在resources下創(chuàng)建一個(gè)mystatic目錄,并放一張圖片,如圖5-15所示。最后

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論