1. 程式人生 > 實用技巧 >spring-mvc中controller,前端傳過來的引數,用陣列,列表,Map來接受引數的方式

spring-mvc中controller,前端傳過來的引數,用陣列,列表,Map來接受引數的方式

spring-mvc中controller,前端傳過來的引數,用陣列,列表,Map來接受引數的方式。

僅使用get方法來進行演示,其他請求方法(POST,DELETE,PUT)接受引數的形式都是一樣的。

  • 用陣列接受引數

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    public class CIsBestController {
    
        // 訪問路徑 http://localhost:8080/array?strings="貂蟬學python","小喬學java","魯班學C++"
        // 瀏覽器顯示的結果:響應資料:"貂蟬學python","小喬學java","魯班學C ",
        @RequestMapping("/array")
        @ResponseBody
        public String resp(String[] strings) {
            String str = "";
            for(String s:strings){
                System.out.println("接受的引數是:" + s);
                str += s+",";
            }
    
            return "響應資料:" + str;
        }
    }
    

  • 用List接受引數

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import java.util.ArrayList;
    
    @Controller
    public class CIsBestController {
    
        // 訪問路徑 http://localhost:8080/list?array_list="貂蟬學python","小喬學java","魯班學C++"
        // 瀏覽器顯示的結果:響應資料:"貂蟬學python","小喬學java","魯班學C ",
        @RequestMapping("/list")
        @ResponseBody
        public String resp(@RequestParam("array_list") ArrayList<String> arrayList) {
            String str = "";
            for(String s:arrayList){
                System.out.println("接受的引數是:" + s);
                str += s+",";
            }
    
            return "響應資料:" + str;
        }
    }
    
  • 用Map接受引數

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import java.util.Map;
    
    @Controller
    public class CIsBestController {
    
        // 訪問路徑 http://localhost:8080/map?name=貂蟬&age=18&sex=女
        // 瀏覽器顯示的結果:響應資料:{name=貂蟬, age=18, sex=女}
        @RequestMapping("/map")
        @ResponseBody
        public String resp(@RequestParam Map map) {
            System.out.println(map);
    
            return "響應資料:" + map;
        }
    }
    

    關於用Map接受引數有個小坑,用Map接受引數必須要在引數前新增 @RequestParam 註解。

    Map不能用來接受複合引數。對於前端來說,Map只能接受

    {
        name : "貂蟬",
        age : 18,
        sex : "女"
    }
    

    這種形式的引數。如果前端傳的是

    {
        name : "貂蟬",
        age : 18,
        sex : "女",
        spouse : {
            name : "呂布",
            age: 25,
            sex: "男"
        }
    }
    

    Map 是拿不到 spouse 裡面的引數資訊的。