国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Boot接收從前端傳過來的數(shù)據(jù)常用方式以及處理的技巧

這篇具有很好參考價值的文章主要介紹了Spring Boot接收從前端傳過來的數(shù)據(jù)常用方式以及處理的技巧。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一 角度1:是否是json格式的數(shù)據(jù)

  1. 前端傳遞過來的數(shù)據(jù)類型,老師這里會把它分為兩個主要的方向:
    1. 第1個方向:非json格式的數(shù)據(jù)
    2. 第2個方向:json格式的數(shù)據(jù)
  2. 非json格式的數(shù)據(jù)
    1. 方式1:直接可以將控制層方法的參數(shù)名稱和請求的參數(shù)名稱保持一致來進行接收。
      1. 場景:數(shù)據(jù)量(參數(shù)個數(shù))比較小,<=3個參數(shù)
      2. 優(yōu)點:簡單
      3. 缺點:如果參數(shù)比較多,如果我們還是把每個前端傳輸過來參數(shù),在后端用單獨的一個參數(shù)去接收會比較麻煩。
      4. 注意:
        1. 因為我們這里涉及到與前端進行通信,所以項目必須要添加spring-web依賴。
        2. 為了構建業(yè)務的場景,我們得有一個數(shù)據(jù)的載體,即實體類User.java。
      5. 案例:
        1. 代碼
              /*
              * 非json格式
              *   第1種方式:如果有數(shù)據(jù)從前端過來,后端直接把這些數(shù)據(jù)都當成(看作是)字符串。
              *   如:
              *       String username:如果你前端傳輸過來的用戶名,后端直接看成字符串來接收。
              *       String password:如果你前端傳輸過來的密碼,后端直接看成字符串來接收。
              */
              @RequestMapping("add1")
              public String add1(String username,String password){
                  System.out.println("username = "+username);
                  System.out.println("password = "+ password);
                  return "success";
              }
        2. 支持get請求,如下圖所示:Spring Boot接收從前端傳過來的數(shù)據(jù)常用方式以及處理的技巧
        3. 支持post請求,如下圖所示:Spring Boot接收從前端傳過來的數(shù)據(jù)常用方式以及處理的技巧
    2. 方式2:把前端傳輸過來的參數(shù),后端封裝成一個實體類。
      1. 注意:
        1. 前端提交的參數(shù)名稱,需要和后端實體類的屬性名稱保持一致。
      2. 代碼:
        ?
            /*
             * 非json格式
             *   第2種方式:把前端傳輸過來的參數(shù),后端封裝成一個實體類。
             *   如:
             *      把前端傳輸過來的參數(shù),(后端)封裝到User user實體類中。
             */
            @RequestMapping("add2")
            public String add2(User user){
                System.out.println(user);
                return "success";
            }
        
        ?
      3. 支持get請求,同上

      4. 支持post請求,同上

    3. 方式3:restful風格的請求與數(shù)據(jù)提交 ——?需要使用{變量名稱}語法來聲明RestFul的參數(shù)列表,通過一個注解@PathVariable指定參數(shù)的映射規(guī)則。

      1. 概述
        1. 思想路
          1. RestFul風格:只關注數(shù)據(jù)的的內(nèi)容。
      2. 應用場景
        1. 數(shù)據(jù)量不大
        2. 數(shù)據(jù)的安全性沒有嚴格要求
      3. get請求
        1. 以前:localhost:8080/users/add1?username=tom&password=123&&&

          1. 缺點:因為get請求所提交的數(shù)據(jù)是有限制的,所以這里key=value的數(shù)據(jù)提交方式中"key="占用了很多空間,導致了可以傳輸?shù)臄?shù)據(jù)量的減少。如果可以把"key="給刪除掉,那么前端就可以多提交幾個參數(shù)給后端了。

        2. restful風格:localhost:8080/users/add1?tom/123//

        3. 案例:后端接收方式

          ?
              /*
               * 非json格式
               *   第3種方式:restful風格:get請求:localhost:8080/users/add3?tom/123456
               *   注意:
               *   (1)@RequestMapping支持變量占位符的寫法。如:@RequestMapping("add3/{username}/{password}"),其中的{username}和{password}是變量占位符,而其中的username和password是變量名稱。
               *   (2)@RequestMapping只是成功接收到前端傳輸?shù)臄?shù)據(jù),我們是還是把數(shù)據(jù)放到方法的參數(shù)列表中。
               *   (3)使用@PathVariable注解,可以指定請求路徑中的哪個變量(@RequestMapping接收的參數(shù))與add3參數(shù)列表中的哪個參數(shù)對應起來。
               *         1)如果@RequestMapping的變量名稱和add3參數(shù)列表中的參數(shù)名稱一致,只需要加@PathVariable即可,它會自動注入。
               *         2)如果名稱不一致,@RequestMapping("add3/{name}/{password}") 》 add3(@PathVariable("name") String username, @PathVariable String password)
               */
              @RequestMapping("add3/{name}/{password}")
              public String add3(@PathVariable("name") String username, @PathVariable String password){
                  System.out.println(username+" / "+password);
                  return "success";
              }
          
          ?
    4. 方式4:借助HttpServletRequest對象來接收

          /*
           * 非json格式
           *   第4種方式:借助HttpServletRequest對象來接收
           *            無論前端提交的數(shù)據(jù)是簡單類型的還是復雜類型的,都會整體被打包放在HttpServletRequest對象中傳輸?shù)胶蠖肆恕?     *   注:
           *      (1)通過HttpServletRequest對象中的數(shù)據(jù)是以key- value的鍵值對的形式存儲的。比如,key就是前端的參數(shù)名稱username=tom - (key就是username)
           *      (2)通過HttpServletRequest,不光可以獲取到前端提交的數(shù)據(jù),還可以獲取到關于前端的其它信息,如http協(xié)議版本、請求url、提交的數(shù)據(jù)的類型等
           */
          @RequestMapping("add4")
          public String add4(HttpServletRequest request){
              String username = request.getParameter("username");
              String password = request.getParameter("password");
              System.out.println(username+"http://"+password);
              return "success";
          }
  3. json格式的數(shù)據(jù)

    1. 概述

      1. 注意1:凡是前端提交的數(shù)據(jù)是json數(shù)據(jù),那么前端都會將數(shù)據(jù)存儲在請求的實體中,后端在獲取前端數(shù)據(jù)的時需要到請求的實體中獲取,因此后端會使用一個注解@RequestBody注解來進行標記。@RequestBody注解表明(指明),后端會從請求實體類拿數(shù)據(jù),也只有人請求實體中獲取才能拿到Spring Boot接收從前端傳過來的數(shù)據(jù)常用方式以及處理的技巧

    2. 方式5:后端會將前端傳遞過來的json數(shù)據(jù)直接封裝到pojo對象中:

          /*
           *  json格式
           *   第1種:后端會將前端傳遞過來的json數(shù)據(jù)直接封裝到pojo對象中。
           *   注意:
           *      (1)這種方式在前端提交數(shù)據(jù)的時候,不能夠在postman Body和postman Query中使用key=value的方式進行提交,而是通過json來提交
           */
          @RequestMapping("add5")
          public User add5(@RequestBody User user){
              System.out.println(user.toString());
              return user;
          }
    3. 方式6:引用類型。實體類對象中有除了有基本數(shù)據(jù)類型外,還有復雜數(shù)據(jù)類型的出現(xiàn),如引用類型。如果一個實體類中定義有引用數(shù)據(jù)類型,在傳遞數(shù)據(jù)的時候,使用{}的形式來進行提交。后端會使用一個注解@RequestBody注解來進行標記。

      1. 案例

        1. 實體類:Spring Boot接收從前端傳過來的數(shù)據(jù)常用方式以及處理的技巧

        2. 方法:

              /*
               *  json格式
               *   第2種:實體類對象中有除了有基本數(shù)據(jù)類型外,還有復雜數(shù)據(jù)類型的出現(xiàn)
               */
              @RequestMapping("add6")
              public User add6(@RequestBody User user){
                  System.out.println(user.toString());
                  return user;
              }
        3. postman:Spring Boot接收從前端傳過來的數(shù)據(jù)常用方式以及處理的技巧

    4. 方式7:List集合,在實體類中出現(xiàn)

      1. 實體類:Spring Boot接收從前端傳過來的數(shù)據(jù)常用方式以及處理的技巧
      2. 代碼:
            /*
             *  json格式
             *   第3種:實體類對象中有List集合
             */
            @RequestMapping("add7")
            public User add7(@RequestBody User user){
                System.out.println(user.toString());
                return user;
            }
      3. postman:Spring Boot接收從前端傳過來的數(shù)據(jù)常用方式以及處理的技巧
    5. 方式8:Map<String,String>

      1. 方法:

            /*
             *  json格式
             *   第4種:Map<String,String>
             *         因為在java看來json本質(zhì)意義上就是一種map結(jié)構的內(nèi)容。
             *   如:key分別會是"username"和"password"
             *      {
             *          "username":"tom",
             *          "password":"123456"
             *      }
             */
            @RequestMapping("add8")
            public String add8(@RequestBody Map<String,String> map){
                System.out.println(map.get("username"));
                System.out.println(map.get("password"));
                return "success";
            }
      2. postman:Spring Boot接收從前端傳過來的數(shù)據(jù)常用方式以及處理的技巧
  4. 附1:完整的代碼
    1. User.java
      package com.pojo;
      
      import java.util.List;
      
      public class User {
          private String username;
          private String password;
          private Cat cat;
          private List<Course> courseList;
      
          @Override
          public String toString() {
              return "User{" +
                      "username='" + username + '\'' +
                      ", password='" + password + '\'' +
                      ", cat=" + cat +
                      ", courseList=" + courseList +
                      '}';
          }
      }
      
    2. UserController.java
      package com.controller;
      
      import com.pojo.User;
      import org.springframework.web.bind.annotation.PathVariable;
      import org.springframework.web.bind.annotation.RequestBody;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RestController;
      
      import javax.servlet.http.HttpServletRequest;
      import java.util.Map;
      
      @RequestMapping("users")
      @RestController
      public class UserController {
          /*
          * 非json格式
          *   第1種方式:如果有數(shù)據(jù)從前端過來,后端直接把這些數(shù)據(jù)都當成(看作是)字符串。
          *   如:
          *       String username:如果你前端傳輸過來的用戶名,后端直接看成字符串來接收。
          *       String password:如果你前端傳輸過來的密碼,后端直接看成字符串來接收。
          */
          @RequestMapping("add1")
          public String add1(String username,String password){
              System.out.println("username = "+username);
              System.out.println("password = "+ password);
              return "success";
          }
      
          /*
           * 非json格式
           *   第2種方式:把前端傳輸過來的參數(shù),后端封裝成一個實體類。
           *   如:
           *      把前端傳輸過來的參數(shù),(后端)封裝到User user實體類中。
           */
          @RequestMapping("add2")
          public String add2(User user){
              System.out.println(user);
              return "success";
          }
      
          /*
           * 非json格式
           *   第3種方式:restful風格:get請求:localhost:8080/users/add3?tom/123456
           *   注意:
           *   (1)@RequestMapping支持變量占位符的寫法。如:@RequestMapping("add3/{username}/{password}"),其中的{username}和{password}是變量占位符,而其中的username和password是變量名稱。
           *   (2)@RequestMapping只是成功接收到前端傳輸?shù)臄?shù)據(jù),我們是還是把數(shù)據(jù)放到方法的參數(shù)列表中。
           *   (3)使用@PathVariable注解,可以指定請求路徑中的哪個變量(@RequestMapping接收的參數(shù))與add3參數(shù)列表中的哪個參數(shù)對應起來。
           *         1)如果@RequestMapping的變量名稱和add3參數(shù)列表中的參數(shù)名稱一致,只需要加@PathVariable即可,它會自動注入。
           *         2)如果名稱不一致,@RequestMapping("add3/{name}/{password}") 》 add3(@PathVariable("name") String username, @PathVariable String password)
           */
          @RequestMapping("add3/{name}/{password}")
          public String add3(@PathVariable("name") String username, @PathVariable String password){
              System.out.println(username+" / "+password);
              return "success";
          }
      
          /*
           * 非json格式
           *   第4種方式:借助HttpServletRequest對象來接收
           *            無論前端提交的數(shù)據(jù)是簡單類型的還是復雜類型的,都會整體被打包放在HttpServletRequest對象中傳輸?shù)胶蠖肆恕?     *   注:
           *      (1)通過HttpServletRequest對象中的數(shù)據(jù)是以key- value的鍵值對的形式存儲的。比如,key就是前端的參數(shù)名稱username=tom - (key就是username)
           *      (2)通過HttpServletRequest,不光可以獲取到前端提交的數(shù)據(jù),還可以獲取到關于前端的其它信息,如http協(xié)議版本、請求url、提交的數(shù)據(jù)的類型等
           */
          @RequestMapping("add4")
          public String add4(HttpServletRequest request){
              String username = request.getParameter("username");
              String password = request.getParameter("password");
              System.out.println(username+"http://"+password);
              return "success";
          }
      
          /*
           *  json格式
           *   第1種:后端會將前端傳遞過來的json數(shù)據(jù)直接封裝到pojo對象中。
           *   注意:
           *      (1)這種方式在前端提交數(shù)據(jù)的時候,不能夠在postman Body和postman Query中使用key=value的方式進行提交,而是通過json來提交
           */
          @RequestMapping("add5")
          public User add5(@RequestBody User user){
              System.out.println(user.toString());
              return user;
          }
      
          /*
           *  json格式
           *   第2種:實體類對象中有除了有基本數(shù)據(jù)類型外,還有復雜數(shù)據(jù)類型的出現(xiàn)
           */
          @RequestMapping("add6")
          public User add6(@RequestBody User user){
              System.out.println(user.toString());
              return user;
          }
      
          /*
           *  json格式
           *   第3種:實體類對象中有List集合
           */
          @RequestMapping("add7")
          public User add7(@RequestBody User user){
              System.out.println(user.toString());
              return user;
          }
      
      
          /*
           *  json格式
           *   第4種:Map<String,String>
           *         因為在java看來json本質(zhì)意義上就是一種map結(jié)構的內(nèi)容。
           *   如:key分別會是"username"和"password"
           *      {
           *          "username":"tom",
           *          "password":"123456"
           *      }
           */
          @RequestMapping("add8")
          public String add8(@RequestBody Map<String,String> map){
              System.out.println(map.get("username"));
              System.out.println(map.get("password"));
              return "success";
          }
      }
  5. 參考

    1. ???????【Spring Boot接收前端數(shù)據(jù)】Spring Boot接收從前端傳過來的數(shù)據(jù)常用8種方式,帶你輕松搞定前后端數(shù)據(jù)聯(lián)調(diào)、

二 角度2:基于何種注解或無注解

  1. 一、基于@PathVariable注解

    二、基于@RequestParam注解

    三、基于@PathVariable+@RequestParam混合

    四、基于@RequestBody注解

    五、基于HttpServletRequest請求

    六、不基于任何注解進行表單傳參?

  2. 參考:
    1. ??????????????(415條消息) SpringBoot接收參數(shù)的六種常用方式(全面詳細)_黃團團的博客-CSDN博客_springboot接收參數(shù)

????????文章來源地址http://www.zghlxwxcb.cn/news/detail-429353.html

到了這里,關于Spring Boot接收從前端傳過來的數(shù)據(jù)常用方式以及處理的技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 前端post,get請求傳參方式 以及后臺接收

    前端post,get請求傳參方式 以及后臺接收

    post請求: 1:js中 2:使用 首先引入方法js: 調(diào)用方法 3:瀏覽器請求 4:后臺參數(shù)接收 get請求: 第一種:通過params對象傳遞,將參數(shù)以鍵值對的形式傳遞,當傳遞的參數(shù)為多個時,瀏覽器會自動拼接進行分割 1:js中 2:使用 首先引入方法js: 調(diào)用方法 3:瀏覽器請求 4:后臺

    2024年02月10日
    瀏覽(24)
  • Spring MVC學習之——如何接收請求傳過來的參數(shù)

    Springmvc中,接收頁面提交的數(shù)據(jù)是通過方法形參來接收: 處理器適配器調(diào)用springmvc使用反射將前端提交的參數(shù)傳遞給controller方法的形參 springmvc接收的參數(shù)都是String類型,所以spirngmvc提供了很多converter(轉(zhuǎn)換器)在特殊情況下需要自定義converter,如對日期數(shù)據(jù) 直接接收即可

    2024年01月20日
    瀏覽(33)
  • @PathVariable、@PathParam、@RequestBody接收axios傳遞的請求參數(shù);后端接收前端傳遞過來的參數(shù)

    目錄 一、前言 :Content-Type 類型 ? ?(1)、?application/x-www-form-urlencoded 類型 (2)、application/json 類型 二、@PathVariable 二、@PathParam? 三、@RequestBody ?四、后端發(fā)送數(shù)據(jù)給前端 五、注意事項 ? ? ? ? 請求參數(shù)以key-value的形式傳輸 ? ? ? ? 請求參數(shù)以JOSN串的形式傳輸 ? ? ? ? ax

    2024年01月18日
    瀏覽(21)
  • 在 Spring MVC 中,用于接收前端傳遞的參數(shù)的注解常用的有以下幾種

    目錄 1、對于json請求體參數(shù), 2、對于路徑傳參 3、對于query傳參 4、對于form-data參數(shù), 總結(jié): ? 1、對于json請求體參數(shù), 請求頭的Content-Type應為application/json。在前端,可以使用 data格式 傳參。在后端,可以使用 @RequestBody 注解來接收參數(shù)。 ? 2、對于路徑傳參 (例如:test/

    2024年01月23日
    瀏覽(17)
  • Spring Boot中最常用注解的使用方式(下篇)

    Spring Boot中最常用注解的使用方式(下篇)

    摘要:本文是《深入解析Spring Boot中最常用注解的使用方式》的下篇內(nèi)容,將繼續(xù)介紹Spring Boot中其他常用的注解的使用方式,并通過代碼示例進行說明,幫助讀者更好地理解和運用Spring Boot框架。 1.@Autowired @Autowired :自動裝配依賴對象。示例代碼如下: 2. @Configuration @Config

    2024年02月07日
    瀏覽(30)
  • Spring Boot中最常用注解的使用方式(上篇)

    Spring Boot中最常用注解的使用方式(上篇)

    摘要:本文將詳細介紹Spring Boot中最常用的注解的使用方式,并通過代碼示例加以說明。通過學習這些注解,讀者將能夠更好地理解和運用Spring Boot框架,構建高效的企業(yè)級應用。 1.@RequestMapping @RequestMapping :將一個HTTP請求映射到對應的控制器方法上??梢杂糜陬惡头椒墑e。

    2024年02月07日
    瀏覽(29)
  • Spring Boot中使用thymeleaf以及各種取值,判斷,選擇,截取等方式

    Spring Boot支持FreeMarker、Groovy、Thymeleaf和Mustache四種模板解析引擎,官方推薦使用Thymeleaf。 spring-boot-starter-thymeleaf 在Spring Boot中使用Thymeleaf只需在pom中加入Thymeleaf的starter即可: 在Spring Boot 1.5.9.RELEASE版本中,默認的Thymeleaf版本為2.1.6.RELEASE版本,這里推薦使用3.0以上版本。在pom中

    2024年02月10日
    瀏覽(20)
  • @RequestMapping運用舉例(有源碼) 前后端如何傳遞參數(shù)?后端如何接收前端傳過來的參數(shù),傳遞單個參數(shù),多個參數(shù),對象,數(shù)組/集合(有源碼)

    @RequestMapping運用舉例(有源碼) 前后端如何傳遞參數(shù)?后端如何接收前端傳過來的參數(shù),傳遞單個參數(shù),多個參數(shù),對象,數(shù)組/集合(有源碼)

    目錄 一、@RequestMapping? 路由映射 二、參數(shù)傳遞 1、傳遞單個參數(shù) 2、傳遞多個參數(shù) 3、傳遞對象 4、后端參數(shù)重命名 5、傳遞數(shù)組 6、傳遞集合 7、傳遞JSON 8、獲取url中的參數(shù) 9、上傳圖片/文件 指定請求訪問的路徑 既可以修飾類,又可以修飾方法 @RequestMapping支持Get、Post、Dele

    2024年02月04日
    瀏覽(21)
  • 五、Spring MVC 接收請求參數(shù)以及數(shù)據(jù)回顯、亂碼問題

    五、Spring MVC 接收請求參數(shù)以及數(shù)據(jù)回顯、亂碼問題

    客戶端或者前端通過 URL 請求傳遞過來的參數(shù),在控制器中如何接收? 1、當參數(shù)和 Controller 中的方法參數(shù)一致時,無需做處理,可以正常接收 代碼示例以及對應 URL http://localhost:8080/user?name=sys 測試結(jié)果 2、當參數(shù)和 Controller 中的方法參數(shù)不一致時,需要通過 @RequestParam 控制

    2024年02月12日
    瀏覽(22)
  • 前端常用的數(shù)據(jù)加密方式

    前端常用的數(shù)據(jù)加密方式

    前端開發(fā)中,數(shù)據(jù)安全是至關重要的一個方面。數(shù)據(jù)加密是保護用戶隱私和信息安全的關鍵方法之一。 前端常用的數(shù)據(jù)加密方式涵蓋了對傳輸數(shù)據(jù)的加密、存儲數(shù)據(jù)的加密以及客戶端與服務器端之間通信的加密。 1. 對稱加密算法 對稱加密算法使用相同的密鑰進行加密和解密

    2024年04月25日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包