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; } }); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。