zoukankan      html  css  js  c++  java
  • 接受参数的几个注解

    一、@RequestParam

    请求参数@RequestParam

    该接收参数名可以随意,通过注解@RequestParam指明即可,nnn要与前台保持一致,nnn1可随便命名

    (@RequestParam(value="nnn",required=false)String nnn1)

    前端传值时要在URL后面拼接 参数名+参数值

    二、@PathVariable

    请求路径@PathVariable

    @PathVariable String typeId

    前端传值时,不需要参数名,直接在URL后面拼接参数值即可,url/typeId

    @PathVariable是用来获得请求url中的动态参数的,所以该注解只能支持将参数放在请求url的GET提交方式,所以不管你如何进行设置,@PathVariable都是无法支持Post请求的。

    三、@RequestBody

    我们在开发过程中传递的对象只能是放在请求体中,所以只能通过Post提交方式来提交对象。所以我们在在传递对象的过程中,我们只能是通过@RequestBody这个注解来进行处理。

      转自:https://blog.csdn.net/shine0112/article/details/72778518

      1、@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。

      2、

        通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。
        例如说以下情况:
        $.ajax({
            url:"/login",
            type:"POST",
            data:'{"userName":"admin","pwd","admin123"}',
            content-type:"application/json charset=utf-8",
            success:function(data){
              alert("request success ! ");
            }
        });

        @requestMapping("/login")
        public void login(@requestBody String userName,@requestBody String pwd){
          System.out.println(userName+" :"+pwd);
        }
        这种情况是将JSON字符串中的两个变量的值分别赋予了两个字符串,但是呢假如我有一个User类,拥有如下字段:
          String userName;
          String pwd;
        那么上述参数可以改为以下形式:@requestBody User user 这种形式会将JSON字符串中的值赋予user中对应的属性上
        需要注意的是,JSON字符串中的key必须对应user中的属性名,否则是请求不过去的。

       3、

        在一些特殊情况@requestBody也可以用来处理content-type类型为application/x-www-form-urlcoded的内容,只不过这种方式

        不是很常用,在处理这类请求的时候,@requestBody会将处理结果放到一个MultiValueMap<String,String>中,这种情况一般在
        特殊情况下才会使用,

        例如jQuery easyUI的datagrid请求数据的时候需要使用到这种方式、小型项目只创建一个POJO类的话也可以使用这种接受方式

        4、

      @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.

      

    <script type="text/javascript">  
        $(document).ready(function(){  
            var saveDataAry=[];  
            var data1={"userName":"test","address":"gz"};  
            var data2={"userName":"ququ","address":"gr"};  
            saveDataAry.push(data1);  
            saveDataAry.push(data2);         
            $.ajax({ 
                type:"POST", 
                url:"user/saveUser", 
                dataType:"json",      
                contentType:"application/json",               
                data:JSON.stringify(saveData), 
                success:function(data){ 
                                           
                } 
             }); 
        });  
    </script>
     @RequestMapping(value = "saveUser", method = {RequestMethod.POST }}) 
        @ResponseBody  
        public void saveUser(@RequestBody List<User> users) { 
             userService.batchSave(users); 
        } 
  • 相关阅读:
    点击退出 防止回退
    AngularJS select中ngOptions用法详解
    git hub
    .ashx datatable转excel
    写日志 log 到文件夹
    easyui layout 布局title
    easyui tree 折叠节点
    转json using指令
    Qt QWindow转QWidget
    CEF 重写弹窗事件
  • 原文地址:https://www.cnblogs.com/sanhao/p/9948151.html
Copyright © 2011-2022 走看看