3.4 SpringMVC --JSON数据交互和RESTFUL风格接口支持
1.JSON数据交互:
JSON数据:在现在前后台分离趋势下,JSON是常用的进行前后台交互的主要数据载体。全称是JavaScript Object Notation。
在Spring中提供了一个接口(HttpMessageConverter)来实现浏览器与控制器之间的数据交互,**HttpMessageConverter**这个接口可以将请求信息中的数据转换为 T 数据类型,并将转换后的数据绑定到控制器内处理方法的形参中;同时也可以将处理方法返回的消息转换为响应消息返回给浏览器端。
在实际业务中,会使用HttpMessageConverter 实现类,来完成前后台数据交互的实际需求。SpringMVC中默认使用 MappingJackson2HttpMessageConverter 来处理携带JSON格式数据的请求。MappingJackson2HttpMessageConverter 可以将Java对象转换为JSON或XML,也可以将JSON或XML转换为Java对象。
在Maven管理的项目中引入Jackson包,在pom.xml文件中添加Jackson的三个依赖包:
jackson-annoations-2.8.8.jar(JSON转换注解包);
jackson-core-2.8.8.jar (JSON转换核心包);
jackson-databind-2.8.8.jar(JSON转换的数据绑定包);
demo:
本例中用到了两个注解 @RequestBody 和 @ ResponseBody :
@RequestBody: 该注解用在控制器的处理方法的形参上,将请求体中的数据绑定到方法形参中(请求体中的参数Key值要与形参(一般是POJO类的属性)保持一致);
@ResponseBody:用在方法上,将 return 返回数据 作为JSON数据格式返回给浏览器;
在本例中,用的是 <mvc:annotation-driven />
来配置JSON转换器的,也可以在Spring配置中 以bean 的方式 进行配置JSON转换器:
…………
<!--配置处理映射器-->
<bean class="
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<!--配置处理适配器-->
<bean class="
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />
<property name="messageConverters">
<list>
<!--配置JSON转换器-->
<bean class="
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
</list>
</property>
</bean>
…………
2.关于RESTful:
就是把请求参数变为请求路径的编程风格
例如一个请求:
http://localhost:8080/userSelect?id=1
变为RESTful风格请求:
http://localhost:8080/userSelect/1
相应地,后台控制器处理方法获取RESTful风格的请求参数:
/**
*接收RESTful风格的请求,其接收方式为GET
*/
@RequestMapping(value="/userSelect/{id}",method= RequestMethod.GET)
@ResponseBody
public User selectUser(@PathVariable("id") String id){
//查看数据接收
System.out.println("id="+id);
User user=new User();
//模拟根据id查询出到用户对象数据
if(id.equals("1234")){
user.setUsername("tom");
}
//返回JSON格式的数据
return user;
}
上一篇: 牛顿法求解一元函数