@RequestBody使用须知
-----------------------siwuxie095
@RequestBody 使用须知
使用 @RequestBody 注解映射请求体
方法参数中的 @RequestBody 注解暗示了方法参数应该被绑定了
HTTP 请求体的值
在实际开发中,传入 JSON 是最常见的一种方式,而 SpringMVC
提供了一种更为简便的方式接收 JSON(非 JSP 页面),那就是使
用 @RequestBody 注解
在接收 JSON 时,需要 Jackson 的 jar 包支持,2.x 版本需要导入
如下三个 jar 包:
(1)jackson-core
https://github.com/FasterXML/jackson-core/wiki
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/
(2)jackson-annotations
https://github.com/FasterXML/jackson-annotations/wiki
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/
(3)jackson-databind
https://github.com/FasterXML/jackson-databind/wiki
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/
「截止目前(2018/03/01),Jackson 最新版本为 2.9.4」
例如:
编写一个实体类
User.java:
package com.siwuxie095.entity;
public class User {
private String userId; private String userName; private String userSex; private String userAge;
public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; }
public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; }
public String getUserSex() { return userSex; } public void setUserSex(String userSex) { this.userSex = userSex; }
public String getUserAge() { return userAge; } public void setUserAge(String userAge) { this.userAge = userAge; }
@Override public String toString() { return "User [userId=" + userId + ", userName=" + userName + ", userSex=" + userSex + ", userAge=" + userAge + "]"; }
} |
编写一个 JSP 页面
show.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>show</title> </head> <body>
<h1>${msg}</h1>
</body> </html> |
编写一个 Controller 类
UserController.java:
package com.siwuxie095.controller;
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;
import com.siwuxie095.entity.User;
@Controller public class UserController {
/** * 接收 JSON,使用 @RequestBody 将其反序列化成 POJO 对象 */ @RequestMapping("/show") public ModelAndView show(@RequestBody User user) { // 创建 ModelAndView 对象,并设置视图名称 ModelAndView mv = new ModelAndView("show"); // 添加模型数据 mv.addObject("msg", user); return mv; }
} |
访问路径:
http://localhost:8080/工程名/show.do
值得注意的是:
@RequestBody 是使用在方法参数前,@ResponseBody 是使用在方法上
参考链接:
附:
推荐一个模拟发送请求的 Chrome 插件 Advanced REST Client,非常好用!
https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo
【made by siwuxie095】
posted on 2018-03-01 10:43 siwuxie095 阅读(261) 评论(0) 编辑 收藏 举报