j簡單的Ajax
阿新 • • 發佈:2018-11-08
昨天學校放假,所以偷懶了一天沒有更新我的部落格。
今天我將向大家講述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" //設定型別
});
因此到這裡我的這次學習心得就結束了。