在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Spring Boot Web相關的基礎知識

jf_78858299 ? 來源:QStack ? 作者:月下西樓 ? 2023-03-17 15:03 ? 次閱讀

上一篇文章我們已經學會了如何通過IDEA快速建立一個Spring Boot項目,還介紹了Spring Boot項目的結構,介紹了項目配置文件pom.xml的組成部分,并且撰寫了我們Spring Boot的第一個接口。接下來將會將會介紹使用Spring Boot開發Web應用的相關內容,其主要包括使用spring-boot-starter-web組件來實現Web應用開發、URL地址映射、參數傳遞、數據校驗規、統一數據返回和統一異常處理等等。

Web基礎

Spring Boot將傳統Web開發的mvc、json、validation、tomcat等框架整合,提供了spring-boot-starter-web組件,簡化了Web應用配置和開發的難度,將開發者從繁雜的配置項中拯救出來,專注于業務邏輯的開發。

正如上一篇文章所提到的,我們只需要在pom.xml文件中的dependencies中添加以下代碼就可以引入spring-boot-starter-web。其中的webmvc是Web開發的基礎框架,json是JSON數據解析組建,tomcat為自帶的容器依賴。

<dependency>
    <groupId>org.springframework.boot<span class="hljs-name"groupId>
    <artifactId>spring-boot-starter-web<span class="hljs-name"artifactId>
<span class="hljs-name"dependency>

@Controller和@RestController

Spring Boot提供了@Controller和@RestController兩種注解來標識此類負責接收和處理HTTP請求,如果請求的是頁面和數據,使用@Controller注解即可,如何只請求數據,則可以使用哦@RestController注解。

@Controller

@Controller主要主要用于頁面和數據的返回,如果在@Controller類中只返回數據到前臺頁面,則需要使用@ResponseBody注解,否則會報錯,其代碼如下:

@Controller
public class HelloController {
    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello @Spring Boot!!!";
    }
}

@RestController

@RestController注解用于實現數據請求的處理,默認情況下@RestController注解會將返回的對象數據轉換為JSON格式,其代碼如下:

@RestController
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/getUser")
    @ResponseBody
    public User getUser() {
        User u = new User();
        u.setName("QStack");
        u.setAge(20);
        u.setPassword("123456");
        return u;
    }
}

在上述的例子中,定義/user/getUser接口返回JSON格式的User數據,近幾年前端框架越來越強大,前后端分離的RESTful架構成為主流,Spring Boot對RESTful也做了非常完善的支持,使用也特別簡單,使用@RestController注解自動返回JSON格式的數據,與此同時可以使用@GetMapping和@PostMapping等注解實現映射RESTful接口。

@ResponseBody

@ResponseBody注解主要用于定義數據的返回格式,作用在方法上,默認使用Json序列化成JSON字符串后返回給客戶端,如果是字符串則直接返回。在@Controller中有時需要返回數據體,則需要在方法上使用@Responsebody。

@RequestMapping與URL映射

注解@RequestMapping注解主要負責URL的路由映射,它可以添加在Controller類或具體的方法上,如果添加在Controller類上,則這個Controller中所有的路由映射都會加上此映射規則,如果添加在方法上則只對當前方法生效。@RequestMapping注解包含很多屬性參數來定義HTTP,具體屬性參數如下所示,與此相應的Spring Boot支持URL路徑匹配、HTTP Method匹配、params和header匹配等URL映射。

  • value:請求URL的路徑,支持URL模版、正則表達式
  • method:HTTP請求的方法
  • consumes:允許的媒體類型,如consumes=“application/json”為HTTP的Content-Type
  • produces:相應的媒體類型,如produces=“application/json”為HTTP的Accept字段
  • params:請求參數
  • headers:請求頭參數

URL路徑匹配

精確匹配

@RequestMapping的value屬性用于匹配URL映射,value支持簡單表達式。示例代碼如下,其中@PathVariable注解作用在方法參數中,用于表示參數的值來自于URL路徑。

@RequestMapping("/getUserById/{id}")
public String getUserById(@PathVariable("id") Long id) {
    return "getUserById" + id;
}

如果URL中的參數名稱與方法中的參數名一致,則可以簡化為如下

@RequestMapping("/getUserById/{id}")
public String getUserById(@PathVariable Long id) {
    return "getUserById" + id;
}

通配符匹配

@RequsetMapping支持使用通配符匹配URL,用于統一映射某些URL規則類似的請求,示例的代碼如下

@RequestMapping("/getJson/*.json")
public String getJson() {
    return "get json data";
}

在上例中,無論請求/getJson/a.json還是請求/getJson/b.json都會匹配到getJson方法。

Method匹配

@RequestMapping注解提供了method參數指定請求的Mathod類型,包括RequestMethod.GET 、RequestMethod.POST、RequestMethod.DELETE、RequestMethod.PUT等值,分別對應HTTP請求的Method,以下是以GET方法為例說明。

@RequestMapping(value = "/getData", method = RequestMethod.GET)
public String getData() {
    return "RequestMethod GET";
}

consumes和produces匹配

@RequestMapping注解提供了consumes和produces參數用于驗證HTTP請求的內容類型和返回類型。

  • consumes表示請求的HTTP頭的Content-Type媒體類型與consumes的值匹配才可以調用方法。
  • produces表示HTTP請求中Accept字段匹配成功才可以調用。下面的例子演示了consumes參數的用法。
@RequestMapping(value = "/content", method = RequestMethod.POST, consumes = "application/json")
public String Consumes(@RequestBody Map param){
    return "Consumes POST Content-Type=application/json";
}

params和header匹配

@RequestMapping注解還提供header參數和params參數映射URL請求的能力,Spring Boot可以從請求參數或HTTP頭中提取參數,通過判斷參數如params=“action=save”是否通過來實現映射,代碼如下

@RequestMapping(value = "/testParam", params = "action=save")
public String testParam(@RequestBody Map param) {
    return "param test";
}
@RequestMapping(value = "/testHead", headers = {"Host=localhost:8080"})
public String testHead() {
    return "header test";
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Web
    Web
    +關注

    關注

    2

    文章

    1263

    瀏覽量

    69460
  • URL
    URL
    +關注

    關注

    0

    文章

    139

    瀏覽量

    15339
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14343
  • idea
    +關注

    關注

    1

    文章

    68

    瀏覽量

    4276
收藏 人收藏

    評論

    相關推薦

    啟動Spring Boot項目應用的三種方法

    的讀取,開啟注解4)配置日志文件...配置完成之后部署tomcat 調試。但是如果使用spring boot呢?很簡單,我僅僅只需要非常少的幾個配置就可以迅速方便的搭建起來一套web項目或者是構建一個
    發表于 01-14 17:33

    談一談Spring Boot嵌入式Web容器

    Spring Boot嵌入式Web容器Embedded Tomcatorg.springframework.boot.context.embedded.EmbeddedServletConta
    發表于 12-16 08:16

    Spring Boot嵌入式Web容器原理是什么

    Spring Boot嵌入式Web容器原理Spring Boot的目標是構建“非常容易創建、獨立、產品級別的基于
    發表于 12-16 07:57

    Spring Boot定時任務的重寫方法

    Spring Boot應該是目前最火的java開源框架了,它簡化了我們創建一個web服務的過程,讓我們可以在很短時間、基本零配置就可以啟動一個web服務。
    的頭像 發表于 01-20 17:38 ?2447次閱讀

    Spring Boot從零入門1 詳述

    在開始學習Spring Boot之前,我之前從未接觸過Spring相關的項目,Java基礎還是幾年前自學的,現在估計也忘得差不多了吧,寫Spring
    的頭像 發表于 12-10 22:18 ?639次閱讀

    Spring認證」什么是Spring GraphQL?

    這個項目建立在 Boot 2.x 上,但它應該與最新的 Boot2.4.x5 相關。 要創建項目,請轉到start.spring.io并為要使用的GraphQL傳輸選擇啟動器: 啟動機
    的頭像 發表于 08-10 14:08 ?825次閱讀
    「<b class='flag-5'>Spring</b>認證」什么是<b class='flag-5'>Spring</b> GraphQL?

    學習Spring Boot 嵌入式服務器

    嵌入式Web服務器每個Spring Boot Web應用程序都包含一個嵌入式Web服務器。此功能會導致許多操作方法問題,包括如何更改嵌入式服
    發表于 10-20 15:36 ?7次下載
    學習<b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> 嵌入式服務器

    Spring Boot特有的實踐

    Spring Boot是最流行的用于開發微服務的Java框架。在本文中,我將與你分享自2016年以來我在專業開發中使用Spring Boot所采用的最佳實踐。這些內容是基于我的個人經驗
    的頭像 發表于 09-29 10:24 ?912次閱讀

    簡述Spring Boot數據校驗

    上一篇文章我們了解了Spring Boot Web相關知識,初步了解了spring-boot-star
    的頭像 發表于 03-17 15:07 ?779次閱讀

    Spring Boot配置加載相關知識

    Spring BOOT 啟動參數 在Java Web的開發完成后,以前我們都會打包成war文件,然后放大web容器,比如tomcat、jetty這樣的容器。現在基于SpringBoot
    的頭像 發表于 10-07 15:47 ?490次閱讀

    Spring Boot Actuator快速入門

    不知道大家在寫 Spring Boot 項目的過程中,使用過 Spring Boot Actuator 嗎?知道 Spring
    的頭像 發表于 10-09 17:11 ?638次閱讀

    Spring Boot啟動 Eureka流程

    在上篇中已經說過了 Eureka-Server 本質上是一個 web 應用的項目,今天就來看看 Spring Boot 是怎么啟動 Eureka 的。 Spring
    的頭像 發表于 10-10 11:40 ?894次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>啟動 Eureka流程

    Spring Boot的啟動原理

    spring-boot-maven-plugin 的 maven 項目打包插件,可以方便的將 Spring Boot 項目打成 jar 包。這樣我們就不再需要部署 Tomcat 、Jetty等之類的
    的頭像 發表于 10-13 11:44 ?650次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的啟動原理

    Spring Boot 的設計目標

    什么是Spring Boot Spring BootSpring 開源組織下的一個子項目,也是 S
    的頭像 發表于 10-13 14:56 ?587次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> 的設計目標

    Spring事務傳播性的相關知識

    本文主要介紹了Spring事務傳播性的相關知識
    的頭像 發表于 01-10 09:29 ?447次閱讀
    <b class='flag-5'>Spring</b>事務傳播性的<b class='flag-5'>相關</b><b class='flag-5'>知識</b>
    主站蜘蛛池模板: 精品亚洲国产国拍| 国产中文字幕一区| 丁香六月欧美| 亚洲精品国产自在久久出水| 国模张文静啪啪私拍337p| 色播图片| 亚洲人免费视频| 日韩久久精品视频| 精品视频卡1卡2卡3| 爆操极品美女| 天天看天天操| 222aaa免费国产在线观看| 男人的午夜影院| 四月婷婷七月婷婷综合| 久久人人做人人玩人精品| 最近观看免费高清视频| 久久天天躁夜夜躁狠狠躁2020| 好紧好爽的午夜寂寞视频| 色香蕉在线观看网站| 激情五月婷婷综合网| 天天做爽夜夜做爽| 欧美猛交xxxx免费看| 伊人久久精品成人网| 日韩高清特级特黄毛片| 午夜影院免费在线观看| 成人午夜免费视频毛片| 九月婷婷综合| 欧美日韩国产另类一区二区三区| 99久久免费精品高清特色大片| 免费国内精品久久久久影院| 欧美一区二区不卡视频| 三级毛片网| 天天色天天色| 中国一级特黄特级毛片| 免费观看成人毛片| 天天插天天狠天天透| 曰本aaaaa毛片午夜网站| 天堂网免费| 操狠狠| 亚洲日本在线观看视频| 精品一区视频|