springmvc框架前后台数据交互
1.两种交互方式

可以看出,前台传过来的方式有两种,一种是传json格式的数据过来,另一种就是在url的末尾传普通的key/value串过来,针对这两种方式,在controller中会有不同的解析,但是在controller中返回的json格式的数据都是一样的。下面来具体分析一下springmvc是如何与前台进行json数据的交互的。
2.json交互测试
2.1前段传来的是json格式的数据
我们使用jQuery的ajax提交json串,对输出的json结果进行解析。前台的程序如下:
//请求json,输出是json
function requestJson(){
var jsonData = {
"name" : "手机",
"price" : "999"
};
$.ajax({
type:'post',
url:'${pageContext.request.contextPath }/requestJson.action',
contentType:'application/json;charset=utf-8',//指定为json类型
//数据格式是json串,商品信息
data:JSON.stringify(jsonData),
success:function(data){//返回json结果
alert(data.name);
}
});
}
看一下controller中是如何操作的。
//测试请求的是json串(商品信息),输出json(商品信息)
//@RequestBody将请求的商品信息的json串转成itemsCustom对象
//@ResponseBody将itemsCustom对象转成json输出
@RequestMapping("/requestJson")
public @ResponseBody ItemsCustom requestJson(@RequestBody ItemsCustom itemsCustom) {
return itemsCustom; //由于@ResponseBody注解,将itemsCustom转成json格式返回
}
总结来说,就post而言有两种方式:
一种:json方式,就是上面的例子,在controller接受参数有两种方式:
1、@RequestBody String requestBody(前台传参需要进行json转换)
2、@RequestBody Student student(可直接接受json串)
二种:form表单方式,在?后面传参,可直接用实体类接受,也可以用单一的字段接收
1、String name(不需要@RequestBody注解)
2、Student student(不需要@RequestBody注解)
就get方式而言:
需要
@RequestMapping(value = "/getSomething/{name}/{code}",method = RequestMethod.GET)
@ResponseBody
public BaseResponse getSomething(HttpServletResponse response,HttpServletRequest request,@PathVariable String name,@PathVariable String code) {
BaseResponse baseResponse = new BaseResponse();
return baseResponse;
}
还有一种get的方式
@RequestMapping("/getStudent")
@ResponseBody
public BaseResponse getSomething(@RequestParam("params") String params) {
BaseResponse baseResponse = new BaseResponse();
RequestModel requestModel = gson.fromJson(params, RequestModel.class);
return baseResponse;
}
前台使用?传参
params={"name":"zhangsan"}
本文深入探讨了SpringMVC框架中前后台JSON数据交互的两种主要方式:通过@RequestBody接收JSON格式数据和通过URL参数传递数据。文章详细介绍了如何在控制器中处理这两种不同类型的输入,并展示了具体的代码示例。
1929

被折叠的 条评论
为什么被折叠?



