@RequestMapping @ResponseBody 和@RequestBody 注解的用法

转自: https://blog.csdn.net/a1024271896/article/details/81945540

做为经常使用SSM框架的程序猿,我们对于ajax和与他相关的@RequestMapping @ResponseBody 和@RequestBody 这些注解再熟悉不过了,楼主也在这几天整理了一下关于这些注解的相关用法,以供大家参考。

@RequestMapping 
首先要介绍的就是@RequestMapping,它可用于类或方法上,作用是处理请求地址的相关映射。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。具体实现如下图:

用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法。具体实现如下图:

(在上图中我们想要调用该方法则路径应该为/jfpt/jfqr/getJfddxx) 

该注解有六个属性,分别为value, method,consumes,produces,params,headers。

value: 指定请求的实际地址。

method:指定请求的method类型,如:GET、POST等类型。

consumes: 指定处理请求的提交内容类型(Content-Type)也就是前台传递的类型,例如application/json, text/html等。

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

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

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

@Responsebody
@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用。通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。 
作用: 
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。 
使用时机: 
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

例:

(@Responsebody 注解将返回的String类型转换成立json类型)

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

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

例:在前台我们用ajax方式运行方法。

我们传入的参数类型为contentType : "application/json",参数传入方式为json转成字符串(JSON.stringify({ })),所以在后台我们需要用@requestBody注解来接收。

而且我们用该注解后,由于他会屏蔽我写的自动XSS校验,所以我需要自己手动进行XSS校验。

注意的是:

@RequestBody需要把所有请求参数作为json解析,因此,不能包含key=value这样的写法在请求url中,所有的请求参数都是一个json。直接通过浏览器输入url时,@RequestBody获取不到json对象,需要用java编程或者基于ajax的方法请求,将Content-Type设置为application/json。
--------------------- 
作者:夏天wx:a1024271896 
来源:CSDN 
原文:https://blog.csdn.net/a1024271896/article/details/81945540 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/hello_world123456789/article/details/90765612