日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
學(xué)習(xí)JavaScript時注意的種種問題說明介紹

最近在學(xué)習(xí)JavaScript,發(fā)現(xiàn)不論是ext還是prototype都很推崇json這種通信協(xié)議的格式,但是這兩個框架都是比較偏前端的,和dwr不同,dwr是一個一站式的ajax框架,不僅提供了客戶端的工具方法,也包括服務(wù)端的配置和通信的處理。

目前累計服務(wù)客戶超過千家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗。以網(wǎng)站設(shè)計水平和技術(shù)實力,樹立企業(yè)形象,為客戶提供網(wǎng)站設(shè)計、成都做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁設(shè)計、網(wǎng)絡(luò)營銷、VI設(shè)計、網(wǎng)站改版、漏洞修補等服務(wù)。創(chuàng)新互聯(lián)公司始終以務(wù)實、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對領(lǐng)先技術(shù)的掌握、對創(chuàng)意設(shè)計的研究、對客戶形象的視覺傳遞、對應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進步。

而ext和prototype等僅僅設(shè)置好了json的接口并對ajax通信做了封裝,相對而言是一種比較“純粹”的AJAX實現(xiàn),當(dāng)然ext還包括了大量的圖形組件,這又是題外話了。
為了解決ext們的通信問題,如果單純的定義Servlet,實現(xiàn)起來比較原始,既復(fù)雜又不好管理。#t#

于是網(wǎng)上有好多人采用了dwr來管理通信,還有人用structs作為對學(xué)習(xí)JavaScript的映射配置管理,這樣一來不論是客戶端還是服務(wù)端,都有很多功能被切割掉了,顯得不夠“干凈”。于是我寫了下面的兩個響應(yīng)的Servlet處理類來解決這個問題。

代碼如下:

 
 
  1. JSONServlet.java:     
  2. package com.digitalchina.dcscm.service;     
  3.     
  4. import java.io.*;     
  5. import java.lang.reflect.Method;     
  6. import java.util.Enumeration;     
  7. import java.util.HashMap;     
  8.     
  9. import javax.servlet.ServletException;     
  10. import javax.servlet.http.HttpServletRequest;     
  11. import javax.servlet.http.HttpServletResponse;     
  12. import org.json.*;     
  13.     
  14. /**    
  15.  * 通用JSON服務(wù)端    
  16.  *     
  17.  * @author 楊一    
  18.  */    
  19.     
  20. public class JSONServlet extends javax.servlet.http.HttpServlet implements    
  21.         javax.servlet.Servlet {     
  22.          
  23.     public JSONServlet() {     
  24.         super();     
  25.              
  26.     }     
  27.     
  28.     protected void doPost(HttpServletRequest request,     
  29.             HttpServletResponse response) throws ServletException, IOException {     
  30.         JSONObject jsonObject = null;     
  31.         String responseText = null;     
  32.         try {     
  33.             //JSON對象,由參數(shù)json定義     
  34.             jsonObject = new JSONObject(request.getParameter("json"));     
  35.                  
  36.             //訪問的類和方法,例如Object ExampleClass.exampleMethod()     
  37.             String action = (String)request.getParameter("action");     
  38.             int dotPos = action.lastIndexOf(".");     
  39.                  
  40.             String beanName = action.substring(0, dotPos);     
  41.             String methodName = action.substring(dotPos + 1);     
  42.                  
  43.             //在當(dāng)前線程環(huán)境中找當(dāng)前作用類的實例     
  44.             Object bean = findInstance(beanName);     
  45.             //作用類的原型的引用     
  46.             Class clazz;     
  47.                  
  48.             //如果當(dāng)前線程環(huán)境中有當(dāng)前作用類的實例,獲取其引用,否則實例化并返回引用,同時在線程中保存值     
  49.             if(bean == null){     
  50.                 clazz = Class.forName(beanName);     
  51.                 bean = clazz.newInstance();     
  52.                 storeInstance(beanName, bean);     
  53.             } else{     
  54.                 clazz = bean.getClass();     
  55.             }     
  56.     
  57.             //設(shè)置JSON值     
  58.             AbstractJsonAction aja = (AbstractJsonAction)bean;     
  59.             aja.initJson(jsonObject);     
  60.                  
  61.             //獲得要執(zhí)行的方法     
  62.             Method m = clazz.getMethod(methodName);     
  63.                  
  64.             //設(shè)置bean的其他參數(shù)     
  65.             Enumeration e = request.getParameterNames();     
  66.             Method setM;     
  67.             while(e.hasMoreElements()){     
  68.                 String str = (String)e.nextElement();     
  69.                 if(str.equals("json") || str.equals("action")){     
  70.                     continue;     
  71.                 }     
  72.                 StringBuffer sb = new StringBuffer();     
  73.                 sb.append("set");     
  74.                 sb.append(upperFirstChar(str));     
  75.                 String tempMName = sb.toString();     
  76.                 setM = clazz.getMethod(tempMName, new Class[]{String.class});     
  77.                 setM.invoke(bean, (String)request.getParameter(str));     
  78.             }     
  79.                  
  80.             //執(zhí)行方法     
  81.             Object retObj = m.invoke(bean);     
  82.                  
  83.             //此處的Object要進行重寫toString方法,使其返回一個json串給客戶端     
  84.             responseText = retObj.toString();     
  85.         } catch (Exception e) {     
  86.             e.printStackTrace();     
  87.         }      
  88.         response.setCharacterEncoding("UTF-8");     
  89.         response.setContentType("application/x-json");     
  90.         response.getWriter().print(responseText);     
  91.     }     
  92.          
  93.     private String upperFirstChar(String fieldName) {     
  94.         char ch = fieldName.charAt(0);     
  95.         ch = Character.toUpperCase(ch);     
  96.         StringBuffer sb = new StringBuffer();     
  97.         sb.append(ch);     
  98.         sb.append(fieldName.substring(1));     
  99.         fieldName = sb.toString();     
  100.         return fieldName;     
  101.     }     
  102.          
  103.     private Object findInstance(String beanName){     
  104.         HashMap hm = (HashMap)tl.get();     
  105.         return hm.get(beanName);     
  106.     }     
  107.          
  108.     private void storeInstance(String beanName, Object bean){     
  109.         HashMap hm = (HashMap)tl.get();     
  110.         hm.put(beanName, bean);     
  111.     }     
  112.          
  113.     private static ThreadLocal tl = new ThreadLocal(){     
  114.         protected Object initialValue() {return new HashMap();};     
  115.     };     
  116. }   

以上描述的學(xué)習(xí)JavaScript的代碼充分說明了這點。


網(wǎng)站題目:學(xué)習(xí)JavaScript時注意的種種問題說明介紹
分享鏈接:http://www.dlmjj.cn/article/cocooed.html