spring注解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/afjaklsdflka/article/details/82561516

@RequestMapping

      @RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上,用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径

      @RequestMapping注解中有六个属性

    1、 value, method;

      value:     指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);

      method:  指定请求的method类型, GET、POST、PUT、DELETE等; 

    2、 consumes,produces;

      consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

      produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回; 

    3、 params,headers;

      params: 指定request中必须包含某些参数值是,才让该方法处理。

      headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

详情:http://www.cnblogs.com/qq78292959/p/3760560.html

 

@RequestBody和@ResponseBody

@ResponseBody

       表示该方法的返回结果直接写入http响应正文,一般是在异步获取数据时使用,通常是在@requestmapping后,返回值通常解析为跳转路径,加上@requestbody后,返回值不会被解析为跳转路径,而是直接写入http响应正文中。

       作用:将Controller的方法返回的对象,通过适当的httpmessageconverter转换为指定格式后,写入Response对象的body数据区,返回json数据

@RequestBody

      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类的话也可以使用这种接受方式

@APIOperation

      @ApiOperation不是spring自带的注解是swagger里的

@ApiParam、@PathVariable、@RequestParam  

     @APIParam是注解api的参数,也就是用于swagger提供开发者文档,文档中生成的注释内容

    @RequestParam

       获取前端传递给后端参数,可以是get方式,也可以是post方式,其中如果前端传递的参数和后端接受的参数名字起得一样,可以忽略不写,如果不一致一定要写完整,不然获取不到,从request里面取值。

https://blog.csdn.net/lovincc/article/details/72800117

     @PathVariable与@RequestParam不同点在于:@PathVariable从UPL模板里面取值

@Controller和@RestController区别

      首先如何遇到使用@RestController注解后,无法跳转到指定界面的问题,直接改用@Controller注解即可

      @RestController注解就相当于是@ResponseBody和@Controller结合

   在Controller类中使用@RestController注解,Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用

       例如:return  “hello” 不会返回hello.jsp页面,而是直接输出hello字符串

       如果要返回到指定页面,必须要用@Controller配合视图解析器InternalResourceViewResolver才行,如果需要返回json,xml或自定义mediaType内容,需要在对应的方法上加上@ResponseBody注解

@Deprecated

     代表此方法已过时,有新的API的类替代了此方法,这个被划去的方法仍然可以使用,这是一个提示而已.

@Autowired 与@Resource

    这两个注解,相当于new一个对象,不同点在于,@Autowired是按照类型装配,而@Resource是按照名称装配

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页