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"
		});
	});
	
})

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章