Spring Boot學習2(Sping Boot-MVC框架)

一、Spring Boot介紹

1、Spring Boot介紹

針對Spring 搭建Web程序複雜的問題,Spring Boot簡化了Spring應用開發,不需要配置就能運行Spring應用,Spring Boot管理 Spring容器、第三方插件,並提供很多默認系統級的服務。

相比Spring具有以下優點:

  • 實現約定大於配置,是一個低配置的應用系統框架
  • 提供了內置的Tomcat或Jetty容器
  • 通過依賴的jar包管理、自動裝配技術、容易支持與其他技術體系、工具集成。
  • 支持熱加載、開發體驗好。
  • starters自動依賴於版本控制。 

2、Spring Boot 框架MVC框架

Spring Boot 框架下有着完善的 MVC 設計模型支持,其在 SpringMVC4.x 基礎上進行了簡化操作,對於項目的配置工作採用自動化配置的方式,使得在 SpringBoot 環境下進行 MVC 模式的開發變得尤爲簡單。

SpringBoot 下 的 MVC 基 本 由 Controller + Thymeleaf+Model 組成,Controller 控制器 起 到 在View 和 Model 間 銜 接 作 用 ,Thymeleaf 是 View,Model 有專門的類與其對應,對於數據的操作則完全通過 Model 來完成。

參考:https://www.cnblogs.com/zyt-bg/p/10627573.html

3、引入依賴

 Spring Boot集成Spring MVC框架並實現自動配置,只需要在pom.xml中添加以下依賴即可:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

 二、MVC框架

1、Spring Boot創建的Web項目目錄結構如下

  •  src/main/java:Java 原生代碼的存放位置。
  • src/main/resources:前端視圖相關的模板、資源存放的位置,其中 templates 子目錄存放由Thymeleaf 產生的視圖模板等;static 存放各類資源文件。
  • src/main/resources/static:用於存放各類靜態資源。 
  • src/main/resources/templates:用於存放模板文件,如Thymeleaf。
  • src/main/resources/application.properties:配置文件,默認支持兩種類型properties和.yml
  • src/test:測試目錄。
  • target :項目打包後的目標目。
  • External Libraries:包括JRE的錄目錄和Maven依賴的庫目錄
  • pom.xml:Maven 的依賴文件

 2、控制器

Spring MVC框架不像傳統的MVC框架那樣必須繼承某個基礎類才能處理用戶的HTTP請求,只需要使用標註的方式。

控制器有Controller和RestController兩種。

  •  @Controller:基本的控制器,用於接收、傳輸純字符串信息,調用業務模型處理信息,也是SpringBoot 主要的控制器,它可以完成大部分 MVC
  •  @RestController:該控制器是 SpringBoot 將WebService 技術與常用的數據封裝格式整合在一起,通過一定的技術規則,將原來較爲複雜的數據封裝 技 術 簡 化 爲 十 分 方 便 的 幾 個 步 驟 來 實 現WebService 功能,常用的數據封裝格式(例如:Json、Xml)在 RestController 中均有支持。

3、URL映射到方法

(1)@RequestMapping

使用@RequestMapping可以映射到某個Controller類,或某個方法。RequestMapping有多個屬性來進一步匹配HTTP請求到Controller方法:

  • value,請求的URL的路徑,支持URL模板、正則表達式。
  • method, HTTP 請求方法,有 GET、POST、PUT 等。
  • consumes,允許的媒體類型(Media Types),如 consumes = "application/json",對應 於請求的 HTTP 的 Content-Type。
  • produces,相應的媒體類型,如 produces="application/json",對應於 HTTP 的 Accept字段。
  • params,請求的參數,如 params="action=update’’。
  • headers,請求的 HTTP 頭的值,如 headers = "myHeader=myValue"。

(2)URL路徑匹配

 1)RequestMapping的value屬性用於匹配URL映射,支持簡單的表達式

  @RequestMapping("/get/{id}.json")
  public @ResponseBody String getDataById(@PathVariable("id") Long id) {
        return userService.getUserById(id);
    }

當訪問/get/1.json時,調用getDataById方法,且參數id的值是1。

2)通配符匹配

Ant用“*”表示匹配任意字符;“**”表示統配任意路徑;“?”匹配單個字符

  • /user/*.html,匹配/user/1.html和/user/11.html等
  • /**/1.html,匹配/user/1.html和/user/add/1.html等
  • /user/?.html,匹配/user/1.html和/user/2.html等

3)同時在類和方法上匹配

@RequestMapping("/home")
public class IndexController {
     @RequestMapping("/")
      public String index() {
        return "Hello home";
    }
     @RequestMapping("/get")
      public  String get() {
        return "Hello home-get";
    }
}

/home請求由index()方法處理;/home/get請求由get()方法處理。

(3)HTTP method匹配

 @RequestMapping 註解能夠處理 HTTP 請求的方法, 比如 GET, PUT, POST, DELETE 以及 PATCH。

Spring提供了簡化後的@RequestMapping

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping

  @GetMapping("/get/*.json")
  public @ResponseBody String getDataById() {
        return "hello";
    }

 等價於:

@RequestMapping("/get/*.json")
public class IndexController {
     @GetMapping(method=RequestMethod.GET)
      public String getDataById() {
        return "Hello";
    }

}

(4)consumes和produces

屬性consumes意味着請求的HTTP頭的Context-Type媒體類型與consumes的值匹配,才能調用此方法。

@RequestMapping(value = "/cons", consumes = {
        "application/JSON",
    })
    String getConsumes() {
        return "Consumes attribute";
    }

此處consumes(請求的媒體類型)爲application/JSON。

(5)params和header匹配

@RequestMapping 註解提供了一個 header 元素來根據請求中的消息頭內容縮小請求映射的範圍。

4、方法參數

Spring的Controller方法可以接受多種類型參數,主要接受的參數如下:

  • @PathVariable,可以將URL中的值映射到方法參數中。
  • Model,MVC的Model。
  • JavaBean,將HTTP參數映射到JavaBean對象。

(1)@PathVariable

@PathVariable用於從請求URL中獲取參數並映射到方法參數中。

三、視圖技術

 

四、常用註解

1、主程序類、主入口類

@SpringBootApplication

標註一個主程序類,說明這是一個Spring Boot應用,SpringBoot運行這個類的main()方法。

注意:入口類要放到包的最外層,以便能夠掃描到所有子包中的類。


@SpringBootApplication
public class SpringBootTest1Application {

	public static void main(String[] args) {

		SpringApplication.run(SpringBootTest1Application.class, args);
	}

}

 2、配置類

@SpringBootConfiguration

標註在某個類上,表示這是一個Sping Boot配置類。

3、開啓自動配置功能

@EnableAutoConfiguration

以前需要配置的東西,Spring Boot幫助我們配置

@AutoConfigurationPackage 自動配置包

將配置類(@SpringBootApplication標註的類)所在包及下面所有子包裏面的所有組件掃描到Spring容器。

4、測試類

@SpringBootTest
class SpringBootTest1ApplicationTests {

	@Test
	void contextLoads() {
	}

}

@SpringBootTest可以引用入口類的配置。

 

 

 


參考鏈接:

https://blog.csdn.net/rocling/article/details/82903574

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章