jQuery (Ajax三级联动)

1. jackson
   Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象

核心代码:
   ObjectMapper mapper = new ObjectMapper();
   mapper.writeValueAsString(obj);
   
   int count = md.getColumnCount();
   map.put(md.getColumnName(i), rs.getObject(i));

 

2. jackson将java实体转换为json字符串

    后台三种json:

2.1 JavaBean/Map
      {}

2.2 数组/List/Set
      []

  2.3 类里嵌类
      混合模式

        //json对象模式
		Student stu1=new Student("s001", "张三");
		ObjectMapper om=new ObjectMapper();
		System.out.println(om.writeValueAsString(stu1));
		
		//json数组模式
		Student stu2=new Student("s002", "李四");
		List<Student> list1=new ArrayList<>();
		list1.add(stu1);
		list1.add(stu2);
		System.out.println(om.writeValueAsString(list1));
		
		
		//json混合模式
		Map<String , Object> map=new HashMap<>();
		map.put("count", 5);
		map.put("stu1", stu1);
		map.put("stu2", stu2);
		System.out.println(om.writeValueAsString(map));

map集合与JavaBean转json字符串有什么区别:

结论:map集合与JavaBean转json字符串是一样的。

        Map<String, Object> map1=new HashMap<>();
		map1.put("sid", "s001");
		map1.put("sname", "张三");
		ObjectMapper om=new ObjectMapper();
		System.out.println(om.writeValueAsString(map1));
		
		Map<String, Object> map2=new HashMap<>();
		map2.put("sid", "s001");
		map2.put("sname", "张三");
		List<Map<String, Object>> list=new ArrayList<>();
		list.add(map1);
		list.add(map2);
		System.out.println(om.writeValueAsString(list));

3. javaBean转json字符串死循环问题:java.lang.StackOverflowError(堆栈溢出错误)

处理方法:
  1.忽略双向关联的一个方向即可,由双向关联改为单向关联
  2.实体类加 @JsonIgnore(程序控制) 

        Student stu1=new Student("s001", "张三");
		Student stu2=new Student("s002", "李四");
		Teacher tea1=new Teacher("t001", "晓哥", null);
		Teacher tea2=new Teacher("t002", "袁哥", null);
		Set<Teacher> tea=new HashSet<>();
		tea.add(tea1);
		tea.add(tea2);
		stu1.setTeacher(tea);
		Set<Student> stu=new HashSet<>();
		stu.add(stu1);
		stu.add(stu2);
		tea1.setStudent(stu);
		
		ObjectMapper om=new ObjectMapper();
		System.out.println(om.writeValueAsString(tea1));

4.Ajax地址三级联动

package com.zking.dao;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.zking.util.JsonBeanDao;
import com.zking.util.JsonUtils;
import com.zking.util.PageBean;
import com.zking.util.StringUtils;

public class RegionDao extends JsonBeanDao{
	/**
	 * Ajax 地址三级联动
	 * @param paramMap
	 * @param pageBean 通用分页
	 * @return
	 * @throws InstantiationException
	 * @throws IllegalAccessException
	 * @throws SQLException
	 */
	public List<Map<String , Object>> list(Map<String , String[]> paramMap,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{
		String id = JsonUtils.getParanVal(paramMap, "ID");
		String sql = "select * from ch_region where true ";
        //如果id为空就给它一个默认值,反之不为空就用就jsp页面传来的id        
		if(StringUtils.isBlank(id)) {
			sql += " and parent_id=7459";
		}else {
			sql += " and parent_id="+id;
		}
		return super.executeQuery(sql, pageBean);
	}
	
	
}

 处理json数据工具包:

由于传过来的是数组,所以我们需要把他转化成String字符串

package com.zking.util;

import java.util.Arrays;
import java.util.Map;

/**
 * 处理json数据工具包
 * @author 10948
 *
 */
public class JsonUtils {
	
	/**
	 * 从paramMap拿到所需要用到的查询维度,用于sql语句拼接
	 * @param paramMap   获取从jsp页面传递到后台的参数集合
	 * @param key
	 * @return
	 */
	public static String getParanVal(Map<String , String []> paramMap,String key) {
		if(paramMap !=null && paramMap.size()>0) {
			String[] vals = paramMap.get(key);
			if(vals!=null && vals.length>0) {
                //将String数组转换成String字符串
				String val = Arrays.toString(vals);
				return val.substring(1, val.length()-1);
			}
			return "";
		}
		return "";
		
	}

}

jQuery.Ajax   js

$(function() {
	var ctx=$("#ctx").val();
	$.ajax({
		url:ctx+"/regionServlet",
		success:function(data){
			for(index in data){
				$("#province").append("<option value='"+data[index].ID+"'>"+data[index].REGION_NAME+"</option>")
			}
		},
		dataType:"json"
	});
	
	$("#province").change(function(){
		$("option:gt(0)","#city").remove();
		$("option:gt(0)","#county").remove();
		$.ajax({
			url:ctx+"/regionServlet?ID="+this.value,
			success:function(data){
				for(index in data){
					$("#city").append("<option value='"+data[index].ID+"'>"+data[index].REGION_NAME+"</option>")
				}
			},
			dataType:"json"
		});
	});
	
	$("#city").change(function(){
		$("option:gt(0)","#county").remove();
		$.ajax({
			url:ctx+"/regionServlet?ID="+this.value,
			success:function(data){
				for(index in data){
					$("#county").append("<option value='"+data[index].ID+"'>"+data[index].REGION_NAME+"</option>")
				}
			},
			dataType:"json"
		});
	});
	
})

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值