Servlet怎么返回JSON值到前台,返回的是一个数组

如题所述

第1个回答  2017-05-30
1、实体类

[java] view plain copy
import java.util.ArrayList;

public class ObjectType {

private String type;
private ArrayList<SubObjectType> subObjects;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public ArrayList<SubObjectType> getSubObjects() {
return subObjects;
}
public void setSubObjects(ArrayList<SubObjectType> subObjects) {
this.subObjects = subObjects;
}
}

[java] view plain copy
public class SubObjectType {

private String subtype;
private double fileCount;
private double bytes;
private String timeRange;
public String getSubtype() {
return subtype;
}
public void setSubtype(String subtype) {
this.subtype = subtype;
}
public double getFileCount() {
return fileCount;
}
public void setFileCount(double fileCount) {
this.fileCount = fileCount;
}
public double getBytes() {
return bytes;
}
public void setBytes(double bytes) {
this.bytes = bytes;
}
public String getTimeRange() {
return timeRange;
}
public void setTimeRange(String timeRange) {
this.timeRange = timeRange;
}

}

2、servlet:得到一个对象列表ArrayList<T>,将其转化为jsonArray

[java] view plain copy
AccountInfoDao dao = new AccountInfoDao();
ArrayList<ObjectType> objectTypes = new ArrayList<ObjectType>();
objectTypes = dao.load();

JSONObject jsonObject = new JSONObject();
jsonObject.put("categorys", objectTypes);

JSONArray jsonArray = new JSONArray();
jsonArray.add(jsonObject);
System.out.println(jsonArray);
PrintWriter out = response.getWriter();
out.write(jsonArray.toString());

3、js处理:

[javascript] view plain copy
function load(){
$.ajax({
type:"post",//请求方式
url:"servlet/AccountInfo",//发送请求地址
dataType:"json",
data:{//发送给数据库的数据
},
//请求成功后的回调函数有两个参数
success:function(data,textStatus){
var objs=eval(data); //解析json对象
var obj = objs[0];

var table = $("#table");
table.empty();
table.append('<tr><th></th><th>类别</th><th>文件个数</th><th>文件大小</th><th>时间范围</th></tr>');

if(obj==null || obj==""){
table.append('<tr><td colspan="5" style="text-align: center; color:red">暂无数据!</td></tr>')
//$("#page").hide();
return false;
}

var categorys = obj.categorys;
for(var i=0;i<categorys.length;i++){
var type = categorys[i].type;
var subObjects = categorys[i].subObjects;
var len = subObjects.length;
table.append('<tr><td rowspan="'+len+'">'+type+'</td>'+'<td>'+subObjects[0].subtype+'</td>'+'<td>'+subObjects[0].fileCount+'</td>'+'<td>'+subObjects[0].bytes+'</td>'+'<td>'+subObjects[0].timeRange+'</td></tr>')
//table.append('<td>'+subObjects[0].subtype+'</td>'+'<td>'+subObjects[0].fileCount+'</td>'+'<td>'+subObjects[0].bytes+'</td>'+'<td>'+subObjects[0].timeRange+'</td></tr>');
for(var j=1;j<len;j++){
table.append('<tr><td>'+subObjects[j].subtype+'</td>'+'<td>'+subObjects[j].fileCount+'</td>'+'<td>'+subObjects[j].bytes+'</td>'+'<td>'+subObjects[j].timeRange+'</td></tr>');
}
}

//为鼠标移动添加样式,鼠标所在行变色,鼠标离开行恢复原状
$("tr:even").addClass("even");
$("th").first().css("text-align","left");
$("th").first().css("padding-left","5px");
$("tr").mouseenter(function(){
$(this).addClass('bs');
});
$("tr").mouseleave(function(){
$(this).removeClass('bs');
});
}
});
}

4、jsp页面

[html] view plain copy
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="tab" id="table">
<tr>
<th></th>
<th>类别</th>
<th>文件大小</th>
<th>文件个数</th>
<th>时间范围</th>
</tr>
</table>
望采纳,谢谢。本回答被网友采纳

JAVA中后台的Servlet程序怎么将结果返回给前台的页面?
前台用AJAX将json数据传入后台,同样,后台将数据封装在json串中可传入前台,前台用ajax的回调函数响应:示例:前台脚本:$(function(){$("a").click(function(){var url = this.href;var args = {"time":new Date()};$.getJSON(url,args,function(data){ \/\/回调函数的参数data就是后台封...

怎么将从servlet拿到的list集合用json数据显示到jsp页面?
可以这样做,返回类型为html格式,把集合显示做成单个页面(userlist.jsp),用div包含该页面,后台跳转到该页面,把div的html替换成返回来的html,页面:\\x0d\\x0a \\x0d\\x0a\\x0d\\x0a\\x0d\\x0avar submitUrl = "AdminMangeServlet";\\x0d\\x0a \\x0d\\x0a $.ajax({\\x0d\\x0a url: submitUrl,\\x...

JAVA 开发 怎么让webservice输出 json格式字符串?
你可以这样!!Java的Servlet里面的response有个Writer是专门向向前台写东西的。也可以写Object。然后你可以观察下JSON的规则:1.有一种是这样的:{'3','54','54'}这是最简单的一种JSON 你可以观察到,这种写法和数组的写法还有List转换成toString后的写法是一模一样的,所以当你需要向前台传送一个...

java返回json格式数据?
这种方法有两大步第一步是拼接需要的json数据,第二步是用servlet的内置对象response返回到前台。2 String类型的数据可以不用借助任何工具直接返回,只要把它拼接对了就可以。如我需要返回一个{“suess”:true,“msg”:“修改失败!”}的json,就可以如下图这样写。(注意,java里的引号要用的转义字符...

后端怎么把json数据拿出来(jsonp后端怎么处理)
ajax前台提交数据,Json数据在java后台怎么取出来1、前台ajax以data将页面参数传到后台,后台通过request.getParameter()来获取参数值。通过逻辑计算后,将需要返回前台的数据通过out返回。前端页面ajax中的success方法能够接收到后台返回的数据。2、在JS中,一般是使用eval()函数将JSON的字符串解析成JSON数据格式...

怎么提取servlet中的数据
JSONArray.fromObject(strValue))把数据返回到前台,然后 for(var i=0;i<data.length;i++){ alert(data[i].county);alert(data[i].unitName);} 或者直接把这两个 String ssqx=object.get("county").toString();String company=object.get("unitName").toString();组成json串数组返回前台 ...

如何用java获取百度API返回的json数据的?
1:是拼接需要的json数据。2:是用servlet的内置对象response返回到前台。3:String 类型的数据可以不用借助任何工具直接返回,只要把它拼接对了就可以。如我需要返回一个{“success”:true,“msg”:“修改失败!”}的json(注意,java里的引号要用的转义字符“\\”)。4:如果需要返回的是一个list或者别...

java后台 servlet怎么获取 data这个json串
1.这属于正常的ajax提交form表单,提交后,form表单中的参数是存放在请求的ParameterMap中的。所以后台只需要String param1=request.getParameter("【前台name】"); 就可以获得参数了。你用“data”这么获取,你确定你form表单中有name为‘data’的表单控件吗?2.request将参数是封装在parameterMap中,原生...

servlet中怎么获取jQuery传过来的数组
可以用ajax,$post和$get其实就是简写的ajax,给你一段代码 .ajax({ type:"post",\/\/请求方式 url:"myServlet",\/\/发送请求地址 data:{\/\/发送给servlet的数据 name:["1","2"] }, success:function(data,textStatus){\/\/请求成功的回调函数 $("#divs #upInfo").html(...

webservice接口返回值格式问题
第一个问题,你可以用xml解析当前节点ns:return取出来转化为json。第二个是可以用post的,用httpClient的post方法返回。建议post安全些。

相似回答