SpringMVC 与 Json实现数据交互

最近在学习SpringMVC与前端进行数据交互,其中比较常用的就是使用json,在学习期间遇到不少问题,特记录一下。

1.准备工作(jar包的引入)
1.1 jackson包
1.2 jquery包
1.3 spring的核心包

2.spring的配置
在springmvc中想要使用ajax传递json与后台交互需要配置

<mvc:annotation-driven/>  
<mvc:resources location="/js/" mapping="/js/**"/> 

第一个是实现注解开启,用于json转换器的开启
第二个是配置spring对静态资源的访问处理,否则该资源也会被DispatcherServlet拦截。(开始时我也没有注意,发现调用到jq文件时总是报404错误)

3.json传递的方式
3.1 传递json串

<!-- 前端页面代码,定义两个from表单,第一个提交数据到后台
     然后后台处理返回到第二个表单-->
<from> <input type="text" id="u1" name="u1" />
    <br />
    <input type="text" id="p1" name="p1" />
    <br />
    <input type="button" value="提交" onclick="returnJson()" /> </from>
    <br />
    <from> <input type="text" id="u2" name="u2" />
    <br />
    <input type="text" id="p2" name="p2" /> </from>

对应的js代码

function returnJson() {
        var u1 = $("#u1").val();
        var p1 = $("#p1").val();
        var user = {
            username : $("#u1").val(),
            password : $("#p1").val()
        };
        alert(user.username);
        $.ajax({
            type : 'post',
            url : '${pageContext.request.contextPath}/returnjson',
            contentType : 'application/json;charset=utf-8',
            data : JSON.stringify(user),
            success : function(data) {
                $("#u2").val(data.username);
                $("#p2").val(data.password);
            }
        })

    }

其中stringify()用于从一个对象解析出字符串,如
var a = {a:1,b:2}
结果:
JSON.stringify(a)
“{“a”:1,”b”:2}”

后台的 Controller代码

@Controller
public class jsonAction {

    @RequestMapping("/returnjson")
    @ResponseBody
    public User returnJson(@RequestBody User user)
    {   
        String username=user.getUsername();
        String password=user.getPassword();
        System.out.println(username+" "+password);
        user.setUsername(username+"c");
        user.setPassword(password+"c");
        return user;
    }
}

需要写一个User的bean实体。
其中
@RequestMapping:url的映射处理
@ResponseBody :将java对象转化为json串,这样前端才能解析
@RequestBody :将json串转化为java对象,这样才能以bean处理

实际效果图:
这里写图片描述

3.2以key/value的格式
第一种:

{"username":"reader001","password":"psw001"}

第二种:

username=reader001&password=psw001

其中第一种的传递与以json串的传递处理方式一样
第二种的话就不需要@RequestBody,因为它不是json格式。但是返回还是需要使用@ResponseBody进行转换。

需要注意的就是
1. 静态资源的配置
2. json.stringify()
3. @ResponseBody 和 @RequestBody的使用

以上参考博客:http://blog.csdn.net/eson_15/article/details/51742864

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值