成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

學習JavaScript時注意的種種問題說明介紹

開發
經過長時間學習學習JavaScript,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。學習JavaScript時,這里將介紹學習JavaScript問題的解決方法,在這里拿出來和大家分享一下。

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

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

于是網上有好多人采用了dwr來管理通信,還有人用structs作為對學習JavaScript的映射配置管理,這樣一來不論是客戶端還是服務端,都有很多功能被切割掉了,顯得不夠“干凈”。于是我寫了下面的兩個響應的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服務端    
  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對象,由參數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.             //在當前線程環境中找當前作用類的實例     
  44.             Object bean = findInstance(beanName);     
  45.             //作用類的原型的引用     
  46.             Class clazz;     
  47.                  
  48.             //如果當前線程環境中有當前作用類的實例,獲取其引用,否則實例化并返回引用,同時在線程中保存值     
  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.             //設置JSON值     
  58.             AbstractJsonAction aja = (AbstractJsonAction)bean;     
  59.             aja.initJson(jsonObject);     
  60.                  
  61.             //獲得要執行的方法     
  62.             Method m = clazz.getMethod(methodName);     
  63.                  
  64.             //設置bean的其他參數     
  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.             //執行方法     
  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. }   

以上描述的學習JavaScript的代碼充分說明了這點。

責任編輯:chenqingxiang 來源: 新浪科技
相關推薦

2010-01-07 13:11:09

設置JSON

2010-01-11 13:31:03

C++語言

2010-01-07 17:17:19

處理JSON

2010-01-13 10:37:55

C++開發

2010-01-26 16:54:58

學習C++

2010-01-06 16:41:40

解析JSON

2010-01-08 15:37:59

JSON數據

2010-01-06 10:49:54

PHP串行化JSON

2009-11-25 11:25:31

VS2003軟件

2010-01-05 16:18:17

學習JavaScrip

2010-03-03 14:06:38

2010-01-05 16:26:33

Javascript

2010-02-05 18:09:12

Android

2010-01-11 16:19:05

C++ Builder

2010-01-08 15:06:35

JSON功能

2009-12-28 09:19:21

ADO屬性

2009-12-08 16:30:29

WCF程序

2010-01-04 15:37:41

ADO連接

2010-01-22 14:12:40

C++

2010-01-05 16:41:48

JSON 標準
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲乱码国产乱码精品精98午夜 | 欧美一级毛片免费观看 | 99久久精品一区二区毛片吞精 | 精品国产一区二区三区久久 | 欧美一a一片一级一片 | 在线看h | 97精品国产97久久久久久免费 | 中文字幕一区二区三区精彩视频 | 蜜月va乱码一区二区三区 | 九九久久国产 | 激情伊人网 | 国产一区二区电影网 | 精品视频久久久 | 精品一区二区三区在线视频 | 日韩av免费看 | 日韩网站在线 | 久久99国产精品 | 欧美综合一区二区三区 | 国产伊人精品 | 伊人一区 | caoporn视频在线 | 91久久精品日日躁夜夜躁欧美 | 在线国产一区 | 91av视频在线观看 | 香蕉视频黄色 | 日韩一二三区视频 | 国产福利小视频 | 午夜精品一区二区三区在线观看 | 四色永久| 国产一区二区三区免费视频 | 中文字幕高清免费日韩视频在线 | 中文在线观看视频 | 欧美精品久久久 | 日韩三级 | 亚洲一在线| 免费三级av | 欧美二区在线 | 刘亦菲国产毛片bd | 成人性视频免费网站 | 青青久久久 | 一级大片 |