欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA实现JSON后端向前端传递数据

程序员文章站 2024-03-05 19:11:13
1 后端两个辅助类 concurrentdateutil.java,用于生成我们需要格式的时间 import java.text.dateformat; im...

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;
    }
  });
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。