1. 程式人生 > >j簡單的Ajax

j簡單的Ajax

昨天學校放假,所以偷懶了一天沒有更新我的部落格。
今天我將向大家講述JQuery的Ajax,廢話不多說。
上AJAX之前我們提及了JSon ,但那是前臺json,後臺又是怎麼的呢?
前提 因為資料庫中所儲存的資料和後臺json的輸出表達一個樣的,因此我們可以將建實體類用json給替換掉。
第一步
我們需要一個工具包,去將後臺例項物件給轉成json,
jackson-annotations-2.2.3.jar
jackson-core-2.2.3.jar
jackson-databind-2.2.3.jar
第二步
new 一個ObjectMapper;


不能雙向賦值,一定要改為單向,
  或者用@JsonIgnore被標識的屬性不參與轉換為String[];
  不然會造成棧溢位。
  1:
  Student stu1 = new Student("s01","zhangsan");
  Student stu2 = new Student("s02","lisi");
 Teacher tea1 = new Teacher("t01","xiaoge",null);
  Teacher tea2 = new Teacher("t02","yuan",null);
  Set<Teacher> teas = new HashSet<>();
 teas.add(tea1);
 teas.add(tea2);
  stu1.setTeas(teas );
  Set<Student> stus = new HashSet<>();
 stus.add(stu1);
 tea1.setStus(stus);
  ObjectMapper om = new ObjectMapper();
  System.out.println(om.writeValueAsString(stu1));
  
  2:
  Map<String, Object> map = new HashMap<>();
  map.put("totls",2);
  map.put("stu", stu1);
  ObjectMapper om = new ObjectMapper();
  String str = om.writeValueAsString(map);
  System.out.println(str);
  因此不僅僅是實體物件可以轉成json,
  Map集合也是可以的;
 

接下來就是怎麼去從資料庫中取值給json

這個是dao方法中的程式碼
public List<Map<String, Object>> list(Map<String, String[]> map,PageBean pageBean) throws Exception{
  String id=JsonUtil.getprepmeval(map, "ID");
  String region_parent_id=JsonUtil.getprepmeval(map, "REGION_PARENT_ID");
  String sql="select * from ch_region where true";
  if(StringUtils.isBlank(region_parent_id)) {
  if(StringUtils.isBlank(id)) {
   sql+=" and parent_id=7459";
  }else {
   sql+=" and parent_id="+id;
  }
  }else {
   sql+=" and region_parent_id="+region_parent_id;
  }
  return super.executeQuery(sql, pageBean);
 
  }
  其中JsonUtil是下面程式碼
  這個方法是將原表裡面的資料賦值給json
public static List<Map<String, Object>> formatRsToJsonArray(ResultSet rs) throws SQLException{
  ResultSetMetaData md = rs.getMetaData();//原表資料
  int count = md.getColumnCount();//有多少列名
  List<Map<String,Object>> list = new ArrayList<>();//可以將Map集合看成原本的objct物件
  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));//md.getColumnName(i)是對應列名,rs.getObject(i)在rs中取到對應的值
  }
  list.add(map);
  }
  return list;
 }
 這個是方便Dao中到json裡面屬性的值。
public static String getprepmeval(Map<String, String[]> map,String key) {
  if(map!=null && map.size()>0) {
   String[] vals=map.get(key);
   if(vals!=null && vals.length>0) {
    String val = Arrays.toString(vals);
    val=val.substring(1,val.length()-1);
    System.out.println(val);
    return val;
   }
  }
  return "";
 }
 

到這裡我們就能把資料庫的資料給添到json裡了。
得到的json物件就可以將他寫到AJAX裡面去了。
當然你需要一個servlet將其寫進Jquery外掛中去

 private RegionDao dao=new RegionDao();
 @Override
 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doPost(req, resp);
 }
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  // TODO Auto-generated method stub
  try {
   List<Map<String, Object>> list = dao.list(req.getParameterMap(), null);
   ObjectMapper om = new ObjectMapper();
   ResponseUtil.wrtie(resp, om.writeValueAsString(list));
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
其中 ResponseUtil.wrtie()為以下程式碼:
public  static void wrtie(HttpServletResponse resp,Object o) throws IOException {
  resp.setContentType("text/html;charset=utf-8");
  PrintWriter out = resp.getWriter();
  out.println(o.toString());
  out.flush();
  out.close();
}

寫進ajax的JQeury外掛的程式碼為:

$(function() {
 var cm=$("#cm").val();
 $.ajax({
     url: cm+"/allselectSerlvet.do",//data資料來源地址/資源
     success: function(data){
     alert("hollo ajxa");//你想實現的功能;
         },
     dataType: "json" //設定型別
  });

因此到這裡我的這次學習心得就結束了。