JSON后端向前端传递数据 JAVA

1 后端两个辅助类

ConcurrentDateUtil.java,用于生成我们需要格式的时间

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ConcurrentDateUtil {
    private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>() {
        @Override
        protected DateFormat initialValue() {
            return new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        }
    };

    public static Date parse(String dateStr) throws ParseException {
        return threadLocal.get().parse(dateStr);
    }

    public static String format(Date date) {
        return threadLocal.get().format(date);
    }
}

JsonResult.java,JsonResult封装,用于后端向前端传递数据

import com.sf.utils.ConcurrentDateUtil;

import java.util.Date;

public class JsonResult<T> {
    public static int NEED_RE_LOGIN = 1;
    public static int NEED_RETRY = 2;

    private int errCode;

    private String message;

    private String timestamp = ConcurrentDateUtil.format(new Date());

    private T data;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getTimestamp() {
        return timestamp;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public int getErrCode() {
        return errCode;
    }

    public void setErrCode(int errCode) {
        this.errCode = errCode;
    }
}

上面这两个类完成之后,我们就可以在web层的controller中使用JsonResult封装数据并传递到前端。
接下来介绍两种情况,看看前端怎么取数据出来

2 前端JS怎么取出数据

如果后端传给前端的JsonResult封装的是一个Map,例如

@ResponseBody
@RequestMapping(value = "/user/getUserAmount", method = RequestMethod.POST)
public JsonResult<Map<String, Integer>> getUserAmount() {
    JsonResult<Map<String, Integer>> result = new JsonResult<>();
    try {
        //已签到人数
        Integer signedAmount = userService.getSignedAmount();
        //总人数
        Integer totalUserAmount = userService.getTotalUserAmount();
        Map<String, Integer> amountMap = new HashMap<>();
        amountMap.put("signed", signedAmount);
        amountMap.put("sum", totalUserAmount);
        result.setData(amountMap);
        //这里举个例子,如果觉得setData穿的信息不够,还可以用setMessage方法多传一个字符串过去
        result.setMessage("这是签到界面");
    } catch (Exception e) {
        log.warn(ExceptionUtils.getStackTrace(e));
    }
    return result;
}

现在想在前端JS把已签到人数和总人数两个数据取出来,要怎么做呢?只需要在”.”后面跟着Map的Key就好了,如下所示:

function getSignedAmount(){
    $.ajax({
        type: "post",
        url : getContextPath() + "/user/getUserAmount",
        dataType:'json',
        data: {
        },
        success: function(data){
            var amount = data.data;
            //取出总人数
            var totalAmount = amount.sum;
            //总人数减去已经签到的人数,就是未签到的人
            var unsignedNumber = amount.sum-amount.signed;
            //取出后端controller中setMessage方法传过来的字符串
            var logMessage = data.message;
        }
    });
}

说明:
如有转载,请务必在文章开头注明出处:
http://blog.csdn.net/antony9118/article/details/54411284

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值