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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

溫馨提示

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

評論

0/150

提交評論