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
2.1 JavaBean/Map
//json对象

  Student stu1 = new Student("s001","zhangsan");
    	ObjectMapper om = new ObjectMapper();
    	try {
    		System.out.println(om.writeValueAsString(stu1));
    	} catch (JsonProcessingException e) {
    		e.printStackTrace();
    	}
	输出:{"sid":"s001","sname":"zhangsan","teas":[]}

2.2 数组/List/Set
//json数组

Student stu2 = new Student("s002","lisi");
		List<Student> list1 = new ArrayList<>();
		list1.add(stu1);
		list1.add(stu2);
		try {
			System.out.println(om.writeValueAsString(list1));
		} catch (JsonProcessingException e) {
			e.printStackTrace();
		}
	输出:[{"sid":"s001","sname":"zhangsan","teas":[]},{"sid":"s002","sname":"lisi","teas":[]}]

2.3 类里嵌类
//json混合模式

Map<String, Object> map = new HashMap<>();
		map.put("total", 2);
		map.put("stus", list1);
		try {
			System.out.println(om.writeValueAsString(map));
		} catch (JsonProcessingException e) {
			e.printStackTrace();
		}
	输出:{"total":2,"stus":[{"sid":"s001","sname":"zhangsan","teas":[]},{"sid":"s002","sname":"lisi","teas":[]}]}

map集合与JavaBean转json字符串有什么区别?
在这里插入图片描述
输出:
在这里插入图片描述
结论: javaBean与Map集合换成json字符串格式是一样的。
3.javaBean转json字符串死循环问题:java.lang.StackOverflowError(堆栈溢出错误)
忽略双向关联的一个方向即可
@JsonIgnore/程序控制

4.Ajax地址三级联动

先写一个通用查询

package com.zking.util;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class JsonBaseDao extends BaseDao<Map<String, Object>> {
	/*
	 * 1、创建一个实体类的实例
	 * 2、给创建的实例属性赋值
	 * 3、将添加完类容的实体类添加到list集合中
	 */
	public List<Map<String, Object>> executeQuery(String sql, PageBean pageBean)
			throws SQLException, InstantiationException, IllegalAccessException {
		return super.executeQuery(sql, pageBean, new Callback<Map<String, Object>>() {
			@Override
			public List<Map<String, Object>> foreach(ResultSet rs) throws SQLException, InstantiationException, IllegalAccessException {
				List<Map<String, Object>> list = new ArrayList<>();
				ResultSetMetaData md = rs.getMetaData();
				int count = md.getColumnCount();
				Map<String, Object> map = null;
				while(rs.next()) {
					 map = new HashMap<>();
					for (int i = 1; i <= count; i++) {
						map.put(md.getColumnName(i), rs.getObject(i));
					}
					list.add(map);
				}
				return list;
			}
		});
	}
}

查询方法

   public List<Map<String, Object>> list(Map<String, String[]> paramMap, PageBean pageBean)
			throws InstantiationException, IllegalAccessException, SQLException {
		String id = JsonUtils.getParamVal(paramMap, "ID");
		String sql = "select * from ch_region where true";
		// 如果id为空就给它一个默认值,反之不为空就用就jsp页面传来的id
		if (StringUtils.isBlank(id)) {
			sql += " and parent_id=9504";
		} 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 zx413
     *
     */
    public class JsonUtils {
    	/**
    	 * 从paramMap拿到我们所需要用到查询维度,用于sql语句拼接
    	 * 获取从jsp页面传递到后台的参数集合(req.getparamMap)
    	 * @param paramMap
    	 * @param key
    	 * @return
    	 */
    	public static String getParamVal(Map<String, String[]> paramMap,String key) {
    		if (paramMap != null && paramMap.size()>0) {
    			String[] vals = paramMap.get(key);
    			if (vals != null && vals.length > 0) {
    				String val = Arrays.toString(vals);	
    				return val.substring(1, val.length()-1);
    			}
    			return "";
    		}
    		return "";
    	}
    }

js插件
jsp页面加入隐藏域

$(function(){
	var ctx = $("#ctx").val();
	$.ajax({
		url:ctx+"/regionServlet",
		success:function(data){
			for(index in data) {
				console.log(data[index]);
				//province为下拉框id
				$("#province").append("<option value='"+data[index].ID+"'>"+data[index].REGION_NAME+"</option>")
			}
		},
		dataType:"json"
	});
	

	$("#province").change(function(){
		$("option:gt(0)","#city").remove();
		$.ajax({
			url:ctx+"/regionServlet?ID="+this.value,
			success:function(data){
				for(index in data) {
				//city为下拉框id
					$("#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为下拉框id
					$("#county").append("<option value='"+data[index].ID+"'>"+data[index].REGION_NAME+"</option>")
				}
			},
			dataType:"json"
		});
	});
})		

效果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41038970/article/details/82813330