什么是SpringBootBoot:?jiǎn)?dòng),引導(dǎo),,電話或者電腦,,完整的開啟過程叫啟動(dòng) SpringBoot:Spring 環(huán)境啟動(dòng)管理器,可以“0”配置完成Spring環(huán)境的搭建,,可以大大簡(jiǎn)化Spring軟件的配置開發(fā)過程,。 使用IDEA創(chuàng)建SpringBoot項(xiàng)目1、創(chuàng)建項(xiàng)目 2,、創(chuàng)建項(xiàng)目 3,、選擇SpringBoot 2.3.8 4、填寫項(xiàng)目名稱
SpringBoot HelloWorld創(chuàng)建beans包,,并且創(chuàng)建JavaBean類
package cn.yemao.springboot01.beans;
import org.springframework.stereotype.Component;
import java.io.Serializable;
@Component public class DemoBean implements Serializable { @Override public String toString() { return "Hello World,!"; } }
2、在測(cè)試類中進(jìn)行測(cè)試: /** * SpringBoot 整合了JUnit5 * 1. 測(cè)試類需要和啟動(dòng)類在相同的包 * 2. 需要標(biāo)注@SpringBootTest * 3. 可以注入Spring中的JavaBean對(duì)象 * 4. 測(cè)試類和方法,,可以不是 public 的 */ @SpringBootTest class SpringBoot01ApplicationTests {
@Resource private DemoBean demoBean; @Test void contextLoads() { System.out.println(demoBean); } }
SpringBoot 項(xiàng)目說明: SpringBoot啟動(dòng)類: /** * SpringBoot 的啟動(dòng)類就是Spring的配置類,SpringBoot項(xiàng)目自動(dòng)創(chuàng)建了啟動(dòng)類 * 1. 必須標(biāo)注@SpringBootApplication注解 * 2. 提供組件掃描,自動(dòng)掃描當(dāng)前包和子包 * 3. 啟動(dòng)類,,就是配置類,,可以使用@Bean聲明JavaBean對(duì)象 */
SpringBoot測(cè)試類: /** * SpringBoot 整合了JUnit5 * 1. 測(cè)試類需要和啟動(dòng)類在相同的包 * 2. 需要標(biāo)注@SpringBootTest * 3. 可以注入Spring中的JavaBean對(duì)象 * 4. 測(cè)試類和方法,可以不是 public 的 */
SpringBoot 腳手架SpringBoot 提供了項(xiàng)目搭建網(wǎng)站,,稱為:腳手架 https://start. 是Spring官方提供了腳手架網(wǎng)站,,由于眾所周知的原因,訪問有時(shí)候不通 https://start.aliyun.com 是阿里提供的腳手架網(wǎng)站,,訪問沒有問題,,阿里提供了一些特殊的擴(kuò)展,創(chuàng)建的項(xiàng)目 pom.xml 和 官方網(wǎng)站 略有不同,。 IDEA Spring 項(xiàng)目創(chuàng)建向?qū)Ь褪沁B接到這些腳手架網(wǎng)站下載項(xiàng)目模板,。如果網(wǎng)絡(luò)有故障,,則會(huì)出現(xiàn)無法創(chuàng)建項(xiàng)目的問題! 創(chuàng)建項(xiàng)目期間需要從Maven倉(cāng)庫(kù)下載大量的包,,所以請(qǐng)事先保證Maven倉(cāng)庫(kù)配置正確,!
SpringBoot 搭建Tomcat服務(wù)器SpringBoot 已經(jīng)將Tomcat作為模塊,配置好了,。只需要將 Web依賴包 到人到項(xiàng)目中就自動(dòng)完成配置,! 執(zhí)行啟動(dòng)類Tomcat服務(wù)器就可以運(yùn)行了! 在SpringBoot項(xiàng)目中添加 web 依賴, 重新加載Maven,,就會(huì)自動(dòng)安裝配置Tomcat:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
在resources文件夾中添加 static 文件夾,,這個(gè)文件夾是Tomcat發(fā)布的web文件夾 在static文件夾中添加index.html, 就是網(wǎng)站的首頁
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>Hello World!</h1> </body> </html>
執(zhí)行項(xiàng)目的啟動(dòng)類,在控制臺(tái)上能夠看到 Tomcat 啟動(dòng),,并且監(jiān)聽了8080端口 測(cè)試 http://localhost:8080 就可以訪問 網(wǎng)站首頁
直接創(chuàng)建SpringBoot web項(xiàng)目創(chuàng)建SpringBoot項(xiàng)目時(shí)候,,勾選web即可! 創(chuàng)建SpringBoot項(xiàng)目 勾選 web 組件
在 resources\static 文件夾中添加 index.html,,index.html 是默認(rèn)訪問網(wǎng)頁 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h2>Hello World!</h2> </body> </html>
執(zhí)行啟動(dòng)類,,能夠看到 Tomcat 啟動(dòng)消息 瀏覽器訪問 localhost:8080 測(cè)試
修改Tomcat端口號(hào)SpringBoot項(xiàng)目統(tǒng)一了配置文件application.properties, 程序的所有參數(shù)都在這個(gè)文件中集中管理,其中也包括 Tomcat的端口號(hào),,如果希望修改Tomcat的端口號(hào),,就在application.properties填寫下面配置信息: # 修改Tomcat 服務(wù)器的端口號(hào) server.port=8088
這樣啟動(dòng)SpringBoot就可以訪問 http://localhost:8088 Maven 配置創(chuàng)建SpringBoot項(xiàng)目之前請(qǐng)務(wù)必保證Maven倉(cāng)庫(kù)配置好 SpringMVC什么是SpringMVCSpring MVC也稱為Spring WebMVC,Spring提供的 WEB 編程框架,,實(shí)現(xiàn)MVC設(shè)計(jì)模式,。使用Spring MVC 可以大大簡(jiǎn)化Web應(yīng)用程序的開發(fā)??梢岳斫鉃?SpringMVC是Web程序的半成品,,只要寫很少的代碼就可以快速開發(fā)Web應(yīng)用程序。 使用SpringMVC單獨(dú)使用Spring MVC需要一個(gè)繁瑣的配置過程,,SpringBoot簡(jiǎn)化了SpringMVC的配置,,只需要導(dǎo)入spring-boot-starter-web,就默認(rèn)配置好了Spring MVC,。使用時(shí)候無需配置,,直接編寫控制器就可以工作: Spring MVC Hello World直接編寫一個(gè)控制器,用于處理Web請(qǐng)求 @GetMapping("URL") 注解標(biāo)注在方法上,,則這個(gè)方法就能處理瀏覽器的URL請(qǐng)求 方法的字符串返回值就會(huì)作為響應(yīng)發(fā)送到瀏覽器
執(zhí)行啟動(dòng)類,,啟動(dòng)服務(wù)器 瀏覽器訪問 URL 就能顯示結(jié)果
案例: 編寫控制器: /** * @Controller 專門用于聲明Spring MVC中的控制器Bean! * 控制器 是專門用于出了 web url 請(qǐng)求的Java類 */ @Controller public class DemoController { /** * @GetMapping("/demo") 注解的意義:處理瀏覽器發(fā)送的 * get請(qǐng)求,,請(qǐng)求路徑:http://localhost:8088/demo * 用戶請(qǐng)求了/demo,,則執(zhí)行方法 demo() * 返回值 會(huì)作為 信息返回到瀏覽器 * @ResponseBody 的作用:將方法的返回值直接發(fā)送到 瀏覽器 * @return */ @GetMapping("/demo") @ResponseBody public String demo(){ System.out.println("執(zhí)行了 demo()"); return "Hello World!"; } }
啟動(dòng)SpringBoot后測(cè)試:http://localhost:8088/demo 使用Thymeleaf 作為視圖SpringBoot 推薦使用Thymeleaf作為網(wǎng)頁模板視圖,已經(jīng)內(nèi)嵌支持,配置步驟非常簡(jiǎn)單: 導(dǎo)入Thymeleaf 依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
thymeleaf 模板放在 resources/templates 文件夾,,如在文件夾中編寫模板 demo.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>這是一個(gè)模板,!</h1> </body> </html>
控制器方法返回 ModelAndView,表示數(shù)據(jù)送到視圖 @GetMapping("/show") public ModelAndView show(){ return new ModelAndView("demo"); //demo.html }
啟動(dòng)后測(cè)試:http://localhost:8088/show
控制器方法的返回值: 標(biāo)注了@ResponseBody Spring MVC會(huì)自動(dòng)處理控制器返回 (不常用)如果是字符串,,就直接作為 Response 的正文信息送到瀏覽器 (常用)如果是Java Bean 對(duì)象,,就序列化為JSON,作為Response 的正文信息送到瀏覽器,,支持Ajax功能的,! (很少用)如果 BufferedImage 對(duì)象就會(huì) 顯示圖片, 很少使用! 如果返回ModelAndView,,就轉(zhuǎn)發(fā)到對(duì)應(yīng)的模板顯示模板信息 ...
如果返回字符串,,就是直接轉(zhuǎn)發(fā)到 模板,是ModelAndView 的簡(jiǎn)化版本 返回 ModelAndView 轉(zhuǎn)發(fā)到 模板
將控制器方法返回視圖名稱: @GetMapping("/show2") public String show2(){ /** * 不標(biāo)注 @ResponseBody 時(shí)候,,直接返回字符串作為模板名 * Spring 會(huì)查找相應(yīng)模板作為顯示結(jié)果 */ return "demo"; //demo.html }
測(cè)試:http://localhost:8088/show2 標(biāo)注@ResponseBody后將JavaBean作為返回值,,會(huì)轉(zhuǎn)換為JSON: JavaBean: public class DemoBean implements Serializable { private String name = "Demo"; private Double price = 8.88; private Integer times = 230;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Double getPrice() { return price; }
public void setPrice(Double price) { this.price = price; }
public Integer getTimes() { return times; }
public void setTimes(Integer times) { this.times = times; } }
控制器: @GetMapping("/demobean") @ResponseBody public DemoBean demoBean(){ /** * 如果標(biāo)注了@ResponseBody 并且返回值是一個(gè)JavaBean * 則會(huì)被序列化為一個(gè)JSON字符串返回 * 將對(duì)象轉(zhuǎn)換為JSON稱為:JSON序列化 * 請(qǐng)求URL:http://localhost:8088/demobean */ return new DemoBean(); }
測(cè)試:http://localhost:8088/demobean 在視圖模板上顯示數(shù)據(jù)軟件中經(jīng)常需要控制器數(shù)據(jù)傳遞到模板中顯示,,比如數(shù)據(jù)庫(kù)查詢結(jié)果,,數(shù)據(jù)計(jì)算結(jié)果等。Spring MVC中的ModelAndView對(duì)象架起了控制器和視圖的溝通橋梁,,ModelAndView中封裝了視圖名稱和需要顯示的數(shù)據(jù),。控制器返回ModelAndView時(shí)候,,Spring MVC的前端控制器(DispatcherServlet)就會(huì)調(diào)用視圖解析器(ViewResolver)找到視圖頁面,,并且將視圖和數(shù)據(jù)合并生成最后的網(wǎng)頁,再將網(wǎng)頁發(fā)送給客戶的瀏覽器,。瀏覽器中就顯示了數(shù)據(jù),。 原理: 實(shí)現(xiàn)步驟 在resources/template文件夾創(chuàng)建模板文件 msg.html
<!DOCTYPE html> <html lang="cn" xmlns:th="http://www."> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>在模板中顯示消息</h1> <p th:text="${message}"></p> </body> </html>
編寫控制器方法: @GetMapping("/message") public ModelAndView msg(){ // 轉(zhuǎn)發(fā)到視圖:msg.html ModelAndView mv = new ModelAndView("msg"); //向視圖傳遞數(shù)據(jù) message:"哈嘍" mv.addObject("message", "哈嘍"); //Spring MVC的視圖解析器會(huì)根據(jù)返回值找到 msg.html //并且進(jìn)行模板數(shù)據(jù)替換,顯示數(shù)據(jù) return mv; }
測(cè)試:http://localhost:8088/message
簡(jiǎn)化傳遞數(shù)據(jù)的方案: 編寫控制器方法: @GetMapping("/message2") public String msg2(Map map){ /** * 參數(shù)可以是 ModelMap HashMap Map 都可以 * 將向模板傳遞的數(shù)據(jù),,存儲(chǔ)到map中 */ map.put("message", "數(shù)據(jù)"); //返回視圖名稱 return "msg"; }
測(cè)試:http://localhost:8088/message2 Spring MVC處理流程: Spring 提供半成品Web應(yīng)用程序,。只需要添加控制器和視圖模板就可以快速的編寫Web程序。 視圖模板:視圖模板是在網(wǎng)頁基礎(chǔ)上添加了 th:屬性,,在服務(wù)器上進(jìn)行標(biāo)簽替換以后才變成HTML網(wǎng)頁
|