SpringBoot向后台傳參的若干種方式


SpringBoot向后台傳參的若干種方式

前言

說到傳參肯定大家都不陌生,從事開發的更可以可以說是天天遇到了,這篇文章也就是主要記錄以下傳參的各種方式,因為經常使用的是SpringBoot來開發,所以就拿SpringBoot來舉例,記錄前端向后端傳參的若干種方式。

普通傳參(前端參數與后端形參名稱一致)

前端代碼:

    var param = { "name" : "張三" } $('#btn').click(function () { $.ajax({ url : '/WeChart/items.do', type : 'post', data : param, dataType : 'json', success : function (m) { console.log(m) } }) })
JavaScript

后端代碼

    @RequestMapping("/items") public String charon(String name) { logger.info(name); return "test"; }
Java

后台結果:name=張三

普通傳參(前端參數與后端形參名稱不一致)

前端代碼:

    var param = { "dcc" : "李四" } $('#btn').click(function () { $.ajax({ url : '/WeChart/items2.do', type : 'post', data : param, dataType : 'json', success : function (m) { console.log(m) } }) }) 
JavaScript

后端代碼

    @PostMapping("/items2") public String charon2(@RequestParam("dcc") String name) { logger.info(name); return "test"; }
Java

當前端參數名稱和后端不一致時可以使用RequestParam注解,請求參數的參數名,可以作為參數映射名稱
后台結果:name=李四

pojo實體類傳參

前端代碼

    var param = {
        "users" : "賬戶",
        "password" : "密碼"
    }

    $('#btn').click(function () {
        $.ajax({
            url : '/WeChart/items3.do',
            type : 'post',
            data : param,
            dataType : 'json',
            success : function (m) {
                console.log(m)
            }
        })
    })
Javascritp

后端代碼

    @PostMapping("/items3") public String charon3(Pusers pusers) { logger.info(pusers.getUsers()); logger.info(pusers.getPassword()); return "test"; }
Java

實體類代碼

public class Pusers { private int id; private String users; private String password; //省略get/set方法 }
Java

前端參數名稱對應實體類中的屬性名稱,后端形參可以直接用實體類來表示
后台結果:users=賬戶,password=密碼

多參無實體類傳參一

前端代碼

    var param = { "users" : "賬戶", "password" : "密碼", "name" : "我的名字", }; param = JSON.stringify(param);//將對象轉為json串 $('#btn').click(function () { $.ajax({ url : '/WeChart/items4.do', contentType : "application/json;charset=UTF-8", data : param, type : 'post', dataType : 'json', success : function (m) { console.log(m) } }) })
JavaScript

后端代碼

    @PostMapping("/items4") public String charon4(@RequestBody String map) { logger.info(map); return "test"; }
Java

后端結果:{"users":"賬戶","password":"密碼","name":"我的名字"}

多參無實體類傳參二

前端代碼

    var param = { "users" : "賬戶", "password" : "密碼", "name" : "我的名字" }; $('#btn').click(function () { $.ajax({ url : '/WeChart/items5.do', data : param, type : 'post', dataType : 'json', success : function (m) { console.log(m) } }) })
JavaScript

后端代碼

    @PostMapping("/items5") public String charon5(@RequestParam Map<String, Object> map) { logger.info(map.toString()); logger.info((String) map.get("name")); logger.info((String) map.get("users")); return null; }
Java

后端結果:{users=賬戶, password=密碼, name=我的名字},我的名字,賬戶

傳遞數組

前端代碼

    var param = { "ids" : [1,2,3] }; $('#btn').click(function () { $.ajax({ url : '/WeChart/items6.do', data : param, type : 'post', dataType : 'json', success : function (m) { console.log(m) } }) })
JavaScript

后端代碼

    @PostMapping("/items6") public String charon6(@RequestParam(value = "ids[]") Integer[] ids) { logger.info("數據:{}", Arrays.asList(ids)); return "test"; }
Java

后端結果:[1, 2, 3]

傳遞集合

前端代碼

 var param = { "ids" : [1,2,3] }; $('#btn').click(function () { $.ajax({ url : '/WeChart/items7.do', data : param, type : 'post', dataType : 'json', success : function (m) { console.log(m) } }) })
JavaScript

后端代碼

    @PostMapping("/items7") public String charon7(@RequestParam(value = "ids[]") List<Integer> ids) { logger.info("數據:{}", ids.toString()); return "test"; }
Java

后端結果:[1, 2, 3]

傳遞復雜性參數

前端代碼

 var dcc = []; var lists = [{ "users" : "張三1", "password" : "密碼1" },{ "users" : "張三2", "password" : "密碼2" }]; var user ={ "username" : "張三" }; user.lists = lists;//向對象種添加新屬性 dcc.push(user); $('#btn').click(function () { $.ajax({ url : '/WeChart/items9.do', data : JSON.stringify(dcc), contentType : "application/json", type : 'post', success : function (m) { console.log(m) } }) }) 
JavaScript

后端代碼

    @PostMapping("/items9") public String charon9(@RequestBody String maps) { logger.info("數據:{}", maps); return "test"; }
Java

后端結果:[{"username":"張三","lists":[{"users":"張三1","password":"密碼1"},{"users":"張三2","password":"密碼2"}]}]

總結

  1. @RequestBody注解,必須與contentType 類型application/json配合使用
  2. @RequestParam注解,必須與contentTyp類型application/x-www-form-urlencoded配合使用,其為默認類型。
  3. JSON.stringify()把對象類型轉換為字符串類型,配合@RequestBody注解和contentType 類型application/json使用。

以上就是Springboot傳遞參數的幾種舉例,每個方法都是經過博主實際測試通過的,在此分享同時也算是做個記錄。

 轉載 :https://www.charones.com/archives/84.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM