spring接收ajax參數的幾種方式


參考網址:spring接收ajax參數的幾種方法

@ModelAttribute 注解

使用@ModelAttribute這個方法可以直接將參數映射成pojo對象,我不加@ModelAttribute注解,直接接收pojo對象,同樣能夠接收到參數

前端ajax請求

        <script type="text/javascript">
            $(function(){
                $.ajax({
                    type:"post",
                    url:"http://localhost:8080/test",
                    data:{
                        "name":"張三",
                        "phone":"10086",
                        "password":"123456"
                    },
                    async:true,
                    success:function(data){
                        console.log(data);
                    }
                });
            })
        </script>

java接收參數

    @RequestMapping("/test")
    @ResponseBody
    public String testUser(@ModelAttribute("TUser") TUser user){
        System.out.println(user.getName());
        System.out.println(user.getPassword());
        System.out.println(user.getPhone());
        return "ok";
    }

映射結果

@PathVariabl 注解

@PathVariable 是把請求的路徑上的指定的分段點映射成指定的參數名稱,@PathVariable可以指定多個,如果一個參數都不放在url路徑中,直接請求訪問。http://localhost:8080/test同樣能夠接收到參數

前端ajax請求

        <script type="text/javascript">
            $(function(){
                $.ajax({
                    type:"post",
                    url:"http://localhost:8080/test/10086",
                    data:{
                        "name":"張三",
                        "password":"123456"
                    },
                    async:true,
                    success:function(data){
                        console.log(data);
                    }
                });
            })
        </script>

java接收參數

    @RequestMapping("/test/{phone}")
    @ResponseBody
    public String testUser(String name,@PathVariable String phone,String password){
        System.out.println(name);
        System.out.println(phone);
        System.out.println(password);
        return "ok";
    }

映射結果

直接用HttpServletRequest獲取

前端代碼等同於案例一

java接收參數

    @RequestMapping("/test")
    @ResponseBody
    public String testUser(HttpServletRequest request, HttpServletResponse response){
        System.out.println(request.getParameter("name"));
        System.out.println(request.getParameter("phone"));
        System.out.println(request.getParameter("password"));
        return "ok";
    }

映射結果完全相同於案例一

@RequestParam綁定請求參數

前端請求代碼等同於案例一

java接收參數

    @RequestMapping("/test")
    @ResponseBody
    public String testUser(@RequestParam("name") String a,@RequestParam("phone") String b, String password){
        /**
         * @RequestParam() 里邊的值必須要和前端傳遞過來的參數名字相同
         */
        System.out.println(a);
        System.out.println(b);
        System.out.println(password);
        return "ok";
    }

映射結果完全相同

總結:

1、如果前端傳遞過來的參數與后台接口定義的參數名相同,可以不需要任何注解,如果所有參數都在一個pojo對象中,那么可以直接映射成pojo對象,也可以使用  HttpServletRequest 接收參數

2、如果想使用 resfull 風格的請求方式的話,可以使用 @PathVariable 進行注解

3、如果前端傳遞的參數與后台接口定義的參數名稱不相同,那么就使用 RequestParam 注解

 


免責聲明!

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



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