java后台返回前端数据的方式json,html 组装json的技术struts2-json-plugin,fast-json,Gson,手动拼接

	/**
	 * 后台返回返回数据有几种方式:
	 * 1. json
	 * 2. html
	 * 组装json的技术:
	 * 1.struts2-json-plugin
	 * 2.fastjson
	 * 3.Gson
	 * 4.手动拼接
	 * 
	 * */
	/**方式一:采用struts2-json-plugin解决:
	 * 1.首先在struts的xml文件中配置结果集<result name="json" type="json"></result>,
	 * 并修改xml中的package标签extends="struts-default"
	 * 为<package name="default" namespace="/" extends="json-default">
		2.默认把所有关联属性转成json格式的数据,比如User中有UserInfo,UserInfo中有User这样一直死循环造成内存溢出
		解决方法:在实体类对应关系的get方法上加上@JSON(serialize=false)
	*/
/*	public String findMangerByDeptId1(){
		//根据部门id查找部门的领导
		List<User> userList = userService.find("from User where dept.id = ?", User.class, new String[]{deptId});
		//放入值栈,struts2-json-plugin会自动从root栈取值
		super.push(userList);
		//返回值
		return "json";	
	}*/
	/**
	 * 方式2:fastjson解决
	 * 在实体类对应关系的属性上面加上@JSONField(serialize=false),防止内存溢出
	 * @throws Exception 
	 * */
/*	public String findMangerByDeptId2() throws Exception{
		//根据部门id查找部门的领导
		List<User> userList = userService.find("from User where dept.id =?", User.class, new String[]{deptId});
		//采用fastjson转成json数据
		String result = JSON.toJSONString(userList);
		//我们需要手动返回json数据
		
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setCharacterEncoding("UTF-8");
		response.getWriter().write(result);
		//返回值
		return NONE;	
	}*/
	
	/**
	 * 方式三:html方式解决
	 * */
	public String findMangerByDeptId() throws Exception{
		//根据部门id查找部门的领导
		List<User> userList = userService.find("from User where dept.id =?", User.class, new String[]{deptId});
		//拼接数据
		String result = "";
			for (User user : userList) {
				result+="<option value='"+user.getId()+"'>"+user.getUserName()+"</option>";
			}
			HttpServletResponse response = ServletActionContext.getResponse();
			response.setCharacterEncoding("UTF-8");
			response.getWriter().write(result);		
		return NONE;	
	}


//前台接收
<script type="text/javascript">
	function deptChange() {
		var deptId = $("#deptId :selected").val();
		//alert(deptId)		
		/* 方式一:的返回方式,往select标签里面放option数据
		$.ajax({
			url:"userAction_findMangerByDeptId",
			type:"post",
			data:{"deptId":deptId},
			dataType:'text',
			success:function(data){
				//每次选择后要先清空 id="managers"的下拉框
				//使用jQuery获取对象都是数组对象,里面存放的是一个个js对象,可以通过下标的方式访问这些对象,取出来的就是js对象
				$("#managers")[0].length=1;
				//分割data,使之成为数组
				data = eval("("+data+")");
				$(data).each(function(){
					//console.log("<option value='"+this.id+"'>'"+this.userName+"'</option>");
					$("#managers").append("<option value='"+this.id+"'>"+this.userName+"</option>")
				})
			}
			
		})
	} */
	
	/*方式二:的返回方式,往select标签里面放option数据 
	$.ajax({
	url:"userAction_findMangerByDeptId",
	type:"post",
	data:{"deptId":deptId},
	dataType:'text',
	success:function(data){
		//每次选择后要先清空 id="managers"的下拉框
		//使用jQuery获取对象都是数组对象,里面存放的是一个个js对象,可以通过下标的方式访问这些对象,取出来的就是js对象
		$("#managers")[0].length=1;
		//分割data,使之成为数组
		data = eval("("+data+")");
		$(data).each(function(){
			$("#managers").append("<option value='"+this.id+"'>"+this.userName+"</option>")
		})
	}
	
})
} */

//方式三:html拼接方式返回数据接收往select标签里面放option数据 
	$.ajax({
		url:"userAction_findMangerByDeptId",
		type:"post",
		data:{"deptId":deptId},
		dataType:'text',
		success:function(data){
			//每次选择后要先清空 id="managers"的下拉框
			//使用jQuery获取对象都是数组对象,里面存放的是一个个js对象,可以通过下标的方式访问这些对象,取出来的就是js对象
			$("#managers")[0].length=1;
			//接收的数据是后台采用html拼接形式发送过来的,所以无需再像struts2-json-plugin和fastjson一样对数据进行处理
			//data是html数据,所以直接appened就可以
			$("#managers").append(data);
		}
		
	})
}

</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值