springmvc框架前后台数据交互

本文深入探讨了SpringMVC框架中前后台JSON数据交互的两种主要方式:通过@RequestBody接收JSON格式数据和通过URL参数传递数据。文章详细介绍了如何在控制器中处理这两种不同类型的输入,并展示了具体的代码示例。

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"}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值