@RequestBody与@ResponseBody的使用
作用
@RequestBody把前台页面传递过来的json数据转换为JavaBean
@ResponseBody这个注解通常使用在控制层(controller)的方法上,其作用是将方法的返回值以特定的格式写入到response的body区域,进而将数据返回给客户端。当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。
注:
@ResponseBody
使用步骤
一、导入依赖jar包
这两个注解不能直接使用,它们依赖与json的jar包
在pom.xml文件里导依赖
<dependencies>
<!--jackson导包开始-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.4</version>
</dependency>
<!--jackson导包结束-->
</dependencies>
注:上面的jar包版本需要注意一下,低版本的jar可能不支持此类操作,如果出现不支持情况的话,就把jar包版本提高,上面的jar包版本是支持的。
二、配置注解处理适配器
在springmvc.xml中配置
<!--处理器映射器,处理器适配器-->
<mvc:annotation-driven/>
三、前端发送请求
register.jsp
$.ajax({
url: "/user/addUser",
type:"post",
//需要配置请求头
contentType: "application/json;charset=utf-8",
//把js数据转化为json数据
data:JSON.stringify({"username": username, "password": password}),
success: function (res) {
console.log("res"+res);
if (res>0){
alert("1注册成功!");
} else {
alert("0注册失败!")
}
}
})
后端处理请求
UserController.java
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
UserService userService;
@RequestMapping("/addUser")
@ResponseBody
public int addUser(@RequestBody User user){
System.out.println("username"+user.getUsername());
return userService.addUser(user);
}
}
补充
关于@RequestBody可以处理的请求头格式问题:
- ReuqestBody 主要是处理json串格式的请求参数,要求使用方指定- - header content-type:application/json
- RequestBody 通常要求调用方使用post请求
- RequsetBody参数,不会放在HttpServletRequest的Map中,因此没法通过javax.servlet.ServletRequest#getParameter获取
有兴趣的同学可看Spring之RequestBody的使用姿势小结
了解详细信息