posts - 165, comments - 198, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          下面 (?alt+shift+T ) 中都可以找到
          1.改名 :??(?alt+shift+R )
          2.類移動:(?alt+shift+V )
          3.方法上移父類,下移子類 (alt+shift+T) + U/D
          4.方法接口化? (alt+shift+T) +T
          5.部分代碼提升為方法 alt+shift+M
          6.局部變量提升為類變量 alt+shift+F

          .............

          ***************************************************************

          Ctrl+M: ? 工作區最大化/最小化 ?
          ? Alt+/: ? ? 智能提示 ?
          ? F3: ? ? ? ? ? 察看聲明 ?
          ? Crtl+1: ? 修正錯誤 ?
          ? ?
          ? Shift+Alt+T: ? 重構 ?
          ? Shift+Alt+M: ? 提取函數 ?
          ? Shift+Alt+R: ? 重命名 ?
          ? Shift+Alt+C: ? 更改函數標記 ?
          ? ?
          ? Ctrl+Shitf+F: ? 格式化代碼 ?

          posted @ 2007-10-15 10:21 G_G 閱讀(262) | 評論 (0)編輯 收藏

          在WEB開發中
          測試 在 C/S? 而 實際運行 B/S 造成配置文件 在硬編碼時總是改 。
          但看 hibernate 的配置文件 確可以很好工作 ,沒辦法讀源碼
          在框架中 發現 ConfigHelper類起到了作用 。
          結合自己開發需求,寫出了自己的 帶查詢文件功能類
          擴展的主要部分在 findFile方法 這用了一下 簡單的數據結構有興趣的可以看看

          ?
          測試:
          文件skynet.xml
          <?xml?version="1.0"?encoding="UTF-8"?>
          <xml-body>
          ????
          <man?id='1'>
          ????????
          <name>劉凱毅</name>
          ????????
          <avg>24</avg>
          ????
          </man>
          ????
          <man?id='2'>
          ????????
          <name>heha</name>
          ????????
          <avg>25</avg>
          ????
          </man>
          </xml-body>

          測試類
          package?test.config;

          import?org.apache.commons.jxpath.JXPathContext;
          import?org.apache.commons.jxpath.XMLDocumentContainer;

          import?junit.framework.TestCase;

          public?class?SkynetConfigTest?extends?TestCase?{

          ????
          protected?void?setUp()?throws?Exception?{
          ????????
          super.setUp();
          ????}
          ????
          ????
          public?void?testConfigFile(){
          ????????System.out.println(
          ????????????????
          //find?file?in?System?user.dir?->?skynet.xml??
          ????????????????SkynetConfig.getResourceAsFile(System.getProperty("user.dir")?,?
          ????????????????????????
          "skynet.xml").getPath()
          ????????);
          ????????System.out.println(
          ????????????????
          //find?file?in?System?java.class.path?->?skynet.xml?
          ????????????SkynetConfig.getResourceAsFile(System.getProperty("java.class.path")?,?
          ????????????????????
          "skynet.xml").getPath()?
          ????????);
          ????}
          ????
          public?void?testConfigURL(){
          ????????????JXPathContext?jx?
          =?JXPathContext.newContext(new?XMLDocumentContainer(?
          ????????????????????
          //?in?System?user.dir,java.class.path?find??url:skynet
          ????????????????????SkynetConfig.getResourceAsURL("skynet.xml")???
          ????????????????));
          ????????????System.out.println(?jx.getValue(
          "//man[avg='24']/@id")?);
          ????????????System.out.println(?jx.getValue(
          "//man[avg='24']/name")?);
          ????}
          ????
          ????
          public?void?testConfigStream(){
          ????????System.out.println(?SkynetConfig.getResourceAsStream(
          "skynet.xml")?);
          ????}
          }


          結果:
          E:\src3\rlzy15\lmisWeb\WEB-INF\classes\test\config\skynet.xml
          E:\src3\rlzy15\lmisWeb\WEB-INF\classes\test\config\skynet.xml
          1
          劉凱毅
          java.io.FileInputStream@1551d7f


          SkynetConfig 類
          package?test.config;

          import?java.io.File;
          import?java.io.FileInputStream;
          import?java.io.InputStream;

          import?java.net.URL;

          import?org.apache.commons.jxpath.JXPathContext;
          import?org.apache.commons.jxpath.XMLDocumentContainer;
          import?org.hibernate.util.ConfigHelper;

          public?class?SkynetConfig?{
          ????
          ????
          public?static?final?URL?getResourceAsURL(final?String?path)?{
          ????????URL?url?
          =?null;

          ????????
          //?First,?try?to?locate?this?resource?through?the?current
          ????????
          //?context?classloader.
          ????????ClassLoader?contextClassLoader?=?Thread.currentThread().getContextClassLoader();
          ????????
          if?(contextClassLoader!=null)?{
          ????????????url?
          =?contextClassLoader.getResource(path);
          ????????}
          ????????
          if?(url?!=?null)
          ????????????
          return?url;

          ????????
          //?Next,?try?to?locate?this?resource?through?this?class's?classloader
          ????????url?=?ConfigHelper.class.getClassLoader().getResource(path);
          ????????
          if?(url?!=?null)
          ????????????
          return?url;
          ????????
          ????????
          //?Next,?try?to?locate?this?resource?through?the?system?classloader
          ????????url?=?ClassLoader.getSystemClassLoader().getResource(path);
          ????????
          if(url?!=null)
          ????????????
          return?url;
          ????????
          ????????File?ff?
          =?getResourceAsFile(System.getProperty("user.dir")?,path);
          ????????
          if(ff==null)
          ????????????ff?
          =?getResourceAsFile(System.getProperty("java.class.path")?,?path);
          ????????
          try?{
          ????????????url?
          =?new?URL("file:/"+ff.getPath());
          ????????}?
          catch?(Exception?e)?{e.printStackTrace();}
          ????????
          ????????
          return?url;
          ????}
          ????
          ????
          public?static?InputStream?getResourceAsStream(final?String?resource)?{
          ????????String?stripped?
          =?resource.startsWith("/")???
          ????????????????resource.substring(
          1)?:?resource;
          ????????InputStream?stream?
          =?null;?
          ????????ClassLoader?classLoader?
          =?Thread.currentThread().getContextClassLoader();
          ????????
          if?(classLoader!=null)?{
          ????????????stream?
          =?classLoader.getResourceAsStream(?stripped?);
          ????????}
          ????????
          if?(?stream?==?null?)?{
          ????????????SkynetConfig.
          class.getResourceAsStream(?resource?);
          ????????}
          ????????
          if?(?stream?==?null?)?{
          ????????????stream?
          =?SkynetConfig.class.getClassLoader().getResourceAsStream(?stripped?);
          ????????}
          ????????
          if?(?stream?==?null?)?{
          ????????????File?ff?
          =?getResourceAsFile(System.getProperty("user.dir")?,resource);
          ????????????
          if(ff==null)
          ????????????????ff?
          =?getResourceAsFile(System.getProperty("java.class.path")?,?resource);
          ????????????
          try?{
          ????????????????stream?
          =?new?FileInputStream(ff);
          ????????????????
          if(stream==null)
          ????????????????????
          throw?new?Exception(?resource?+?"?not?found"?);
          ????????????}?
          catch?(Exception?e)?{e.printStackTrace();}
          ????????}
          ????????
          return?stream;
          ????}
          ????
          ????
          public?static?File?getResourceAsFile(String?str,String?findff){
          ????????String[]?sfd?
          =?str.split(";");
          ????????
          for(int?i=0;i<sfd.length;i++){
          ????????????File?file?
          =?new?File(sfd[i]);
          ????????????
          if(?file.isDirectory()){
          ????????????????File[]?cfs?
          =?file.listFiles();
          ????????????????
          for(int?j=0;j<cfs.length;j++){
          ????????????????????File?ff?
          =?findFile(cfs[j],findff);
          ????????????????????
          if(ff==null)continue;
          ????????????????????
          else?return?ff;
          ????????????????????
          ????????????????}
          ????????????}
          ????????}
          ????????
          return?null?;
          ????}
          ????
          ????
          private?static?File?findFile(File?file,String?findff){
          ????????
          if(file.isFile()?&&?file.exists()?&&?isFileEqu(file,findff)??)?return?file?;
          ????????
          else?if(?file.isDirectory()?){
          ????????????File[]?cfs?
          =?file.listFiles();
          ????????????
          for(int?i=0;i<cfs.length;i++){
          ????????????????File?ff?
          =?findFile(cfs[i],findff);
          ????????????????
          if(ff==null)continue;
          ????????????????
          if(?isFileEqu(ff,findff)?){
          ????????????????????
          return?ff;
          ????????????????}
          ????????????}
          ????????}
          ????????
          return?null?;
          ????}
          ????
          ????
          private?static?boolean?isFileEqu(File?ff,String?findff){
          ????????String?path?
          =?ff.getPath().trim()?;
          ????????String?findfft?
          =?findff.trim()?;
          ????????
          ????????
          if(?path.lastIndexOf(?findfft?)>0)return?true;
          ????????
          ????????
          return?false;
          ????}

          }



          posted @ 2007-10-10 14:50 G_G 閱讀(1608) | 評論 (1)編輯 收藏

          為我準備學習和理解spring
          特留下代碼筆記:
          參考:
          http://dev.csdn.net/author/labile/e70c97cb7f504d35b7b5350e7810cc5a.html
          代碼感想:
          ??? 沒個方法都或多或少需要環境參數(如: jdbc的conn ,hbn的session...等等 ),方法結束后又要關閉。
          何不用proxy代理并用配置文件的方法來 關,開session 等
          如:以下是我的想法并不是實際可用
          ???
          配置:
          <
          class?name="HelloWorldImpl">
          ?
          <function?name="set*" />

          ? <function?name="getName">
          ??? <proxyBegin artt="name" value="liukaiyi"/>
          ??? ??? //使用Proxy來賦值 name那在實現代碼中就可以不用去關注象 session 等屬性的開關了
          ??? ??? //proxy中配置下 , 在實現類中 就使用 就可以了

          ??? <proxyBegin?ref="HelloWorldHandler.doBefter"?args="null"/>
          ??? <proxyEnd?ref="HelloWorldHandler.doAfter"?args="null"/>
          ? </function>

          ? <function?=?name="sayHelloWorld">
          ??? <proxyEnd?ref="HelloWorldHandler.doAfter"?args="null"/>
          ? </function>
          </class>

          代碼:
          HelloWorld hw = (HelloWorld)Factory.getBean("HelloWorldImpl");
          hw.getName();

          結果是:
          before method invoke!
          劉凱毅
          after method invoke!
          在此 我只是想象,spring 還沒有看,但我認為spring 這個著名的框架應該在這方面有很好的實現。

          實際代碼:希望spring可以向我上面的方法配置好用來取代下面的實際代碼 ^_^
          package?test.proxy;

          import?java.lang.reflect.InvocationHandler;
          import?java.lang.reflect.Method;
          import?java.lang.reflect.Proxy;

          import?junit.framework.TestCase;

          public?class?TestProxy?extends?TestCase?{
          ????
          ????
          protected?void?setUp()?throws?Exception?{
          ????????
          super.setUp();
          ????}
          ????
          ????
          public?void?testProxy(){
          ?????????????HelloWorld?hw?
          =?new?HelloWorldImpl();???????????
          ???????????????????????InvocationHandler?handler?
          =?new?HelloWorldHandler(hw);??????????
          ???????????????????????HelloWorld?proxy?
          =?(HelloWorld)?Proxy.newProxyInstance(???
          ?????????????????????????????????????hw.getClass().getClassLoader(),???
          ?????????????????????????????????????hw.getClass().getInterfaces(),???
          ?????????????????????????????????????handler);???
          ???????????????????????proxy.sayHelloWorld();
          ???????????????????????
          ???????????????????????System.out.println();
          ???????????????????????proxy.setName(
          "liukaiyi");
          ???????????????????????proxy.getName();
          ????}
          ????
          }

          interface?HelloWorld?{???
          ????
          void?sayHelloWorld()?;???
          ????
          void?getName();
          ????
          void?setName(String?name);
          }

          class?HelloWorldImpl?implements?HelloWorld?{???
          ????
          private?String?name?=?"";
          ????
          public?void?setName(String?name)?{
          ????????
          this.name?=?name;
          ????}

          ????
          public?void?sayHelloWorld()?{???
          ????????System.out.println(
          "Hello?World!");??????????????
          ????}

          ????
          public?void?getName()?{
          ????????System.out.println(
          this.name);
          ????}???
          }

          class?HelloWorldHandler?implements?InvocationHandler?{???
          ????????????
          //要代理的原始對象???
          ????????????private?Object?objOriginal;???
          ????????????
          /**??
          ?????????????*?構造函數。??
          ?????????????*?
          @param?obj?要代理的原始對象。??
          ?????????????
          */??
          ????????????
          public?HelloWorldHandler(Object?obj)?{???
          ???????????????????
          this.objOriginal?=?obj?;???
          ????????????}???
          ????????????
          public?Object?invoke(Object?proxy,?Method?method,?Object[]?args)???
          ??????????????????????????
          throws?Throwable?{???????????????
          ???????????????????Object?result?
          =?null?;??????????????
          ???????????????????String?meName?
          =?method.getName();
          ???????????????????
          if(meName.indexOf("set")>-1?){
          ???????????????????????
          return?method.invoke(this.objOriginal?,args);???
          ???????????????????}
          ???????????????????
          if(?meName.equals("getName")?){
          ????????????????????
          //方法調用之前???
          ???????????????????????????doBefore();?//仿佛是AOP的影子,呵呵???
          ???????????????????}
          ?????????????????????
          //調用原始對象的方法???
          ???????????????????????????result?=?method.invoke(this.objOriginal?,args);???
          ?????????????????????
          //方法調用之后???
          ???????????????????????????doAfter();???????
          ???????????????????
          ???????????????????
          return?result?;???
          ????????????}???
          ????????????
          private?void?doBefore()?{???
          ???????????????????System.out.println(
          "before?method?invoke!");???
          ????????????}???
          ????????????
          private?void?doAfter()?{???
          ???????????????????System.out.println(
          "after?method?invoke!");???
          ????????????}???
          ?????}???


          結果:
          Hello World!
          after method invoke!

          before method invoke!
          劉凱毅
          after method invoke!

          posted @ 2007-10-09 11:13 G_G 閱讀(1118) | 評論 (2)編輯 收藏

          在 D2D 論壇中見
          一文標題 《在java中利用動態編譯實現eval》
          http://dev2dev.bea.com.cn/bbsdoc/20060724298.html
          雖然給出代碼不能運行 但標題的意思已經達到
          在此 我也不多說了
          在此完善下原作者的代碼 并使可運行來方便大家理解

          企圖說明:
          代碼的可用性是沒有的,但代碼向我們打開了一個使java動態編譯的一向大門
          有想法的程序員們。我們在此得到了什么?

          代碼說明:
          ??? 1.為了使用例子的方便 testJavac.java 是 Bean ( name , avg ) 也是 邏輯類 ( eval(string) )
          ??? 2.運行請在 classpath 加入 java\lib\tools.jar jar 包 (
          com.sun.tools.javac.Main )
          ??? 3.還是方便運行本例對 自己在什么 path 并不在意 類中使用了 System.getProperty("user.dir")

          import?java.io.File;
          import?java.io.FileWriter;
          import?java.io.PrintWriter;
          import?java.lang.reflect.Method;

          import?com.sun.tools.javac.Main;


          public?class?testJavac{
          ????????
          public?String?getName(){
          ???????????
          return?"劉凱毅";
          ????????}
          ????????
          public?int?getAvg(){
          ???????????
          return?24;
          ????????}
          ????????
          ????????
          public?Object?eval(String?str)throws?Exception{
          ???????????
          //生成java文件
          ????????String?s?=?"class?Temp{";
          ????????????s?
          +=?"private?testJavac?tj?=?new?testJavac();";
          ????????????s?
          +=?"public?String?rt(){";
          ????????????s?
          +=?"?return??\"\"+tj."+str+"();"??;
          ????????????s?
          +=?"}";
          ????????????s?
          +="}";
          ????????????
          ???????????File?f?
          =?new?File(System.getProperty("user.dir")+"\\Temp.java");
          ???????????PrintWriter?pw?
          =?new?PrintWriter(new?FileWriter(f));
          ???????????pw.println(s);
          ???????????pw.close();
          ???????????
          //動態編譯
          ???????????Main?javac?=?new?Main();
          ???????????String[]?cpargs?
          =?new?String[]?{"-d",?System.getProperty("user.dir")?,"Temp.java"};
          ???????????
          int?status?=?javac.compile(cpargs);
          ???????????
          if(status!=0){
          ??????????????System.out.println(
          "沒有成功編譯源文件!");
          ??????????????
          return?null;
          ???????????}
          ???????????
          //調用Temp的rt方法返回結果:
          ???????????ClassLoader?mc?=?this.getClass().getClassLoader();
          ???????????
          ???????????Class?clasz?
          =?mc.loadClass("Temp");

          ???????????Method?rt?
          =?clasz.getMethod("rt",?new?Class[]{});
          ???????????
          return?rt.invoke(clasz.newInstance(),?new?Object[]?{?});
          ???????????
          //如果方法沒有返回就直接調用
          ????????}
          ????????
          ????????
          ????
          public?static?void?main(String[]args)throws?Exception{
          ????????testJavac?jj?
          =?new?testJavac();
          ????????System.out.println(?jj.eval(args[
          0])?);
          ????}

          }

          運行結果
          D:\javac>javac -classpath D:\java\lib\tools.jar;. testJavac.java

          D:\javac>java -classpath D:\java\lib\tools.jar;. testJavac getName
          劉凱毅
          //此時在當前目錄下你可以看到 多了一個 Temp.java 和 Temp.class 文件
          //再使用 CalssLoader.loadClass方法
          動態加載到運行環境中來
          //創建 動態? 加載 動態?? (java 動起來了)
          D:\javac>java -classpath D:\java\lib\tools.jar;. testJavac getAvg
          24


          posted @ 2007-10-09 09:26 G_G 閱讀(1309) | 評論 (4)編輯 收藏

          參照:
          ??? http://json-lib.sourceforge.net/usage.html

          先 json <-> object
          package?test.json;

          import?java.util.ArrayList;
          import?java.util.HashMap;
          import?java.util.List;
          import?java.util.Map;

          import?org.apache.commons.beanutils.PropertyUtils;

          import?com.jjm.viewBean.reportTableBean;

          import?net.sf.json.JSONArray;
          import?net.sf.json.JSONFunction;
          import?net.sf.json.JSONObject;

          import?junit.framework.TestCase;

          public?class?JsonTest?extends?TestCase?{

          //?object?to?json?************************************************************
          ????public?void?testList(){
          ????????
          boolean[]?boolArray?=?new?boolean[]{true,false,true};???
          ????????????JSONArray?jsonArray1?
          =?JSONArray.fromObject(?boolArray?);???
          ????????????System.out.println(?jsonArray1?);???
          ????????????
          //?prints?[true,false,true]??
          ????????????
          ????????????List?list?
          =?new?ArrayList();???
          ????????????list.add(?
          "first"?);???
          ????????????list.add(?
          "second"?);???
          ????????????JSONArray?jsonArray2?
          =?JSONArray.fromObject(?list?);???
          ????????????System.out.println(?jsonArray2?);???
          ????????????
          //?prints?["first","second"]??

          ????????????JSONArray?jsonArray3?
          =?JSONArray.fromObject(?"['json','is','easy']"?);???
          ????????????System.out.println(?jsonArray3?);???
          ????????????
          //?prints?["json","is","easy"]???
          ????}
          ????
          ????
          public?void?testMap(){
          ????????Map?map?
          =?new?HashMap();???
          ?????????map.put(?
          "name",?"json"?);???
          ?????????map.put(?
          "bool",?Boolean.TRUE?);???
          ?????????
          ?????????map.put(?
          "int",?new?Integer(1)?);???
          ?????????map.put(?
          "arr",?new?String[]{"a","b"}?);???
          ?????????map.put(?
          "func",?"function(i){?return?this.arr[i];?}"?);???
          ?????????JSONObject?json?
          =?JSONObject.fromObject(?map?);???
          ?????????System.out.println(?json?);???
          ?????????
          //{"func":function(i){?return?this.arr[i];?},"arr":["a","b"],"int":1,"name":"json","bool":true}
          ????}

          ????
          /**
          ?????*?Bean.java?
          ????????private?String?name?=?"json";???
          ????????private?int?pojoId?=?1;???
          ????????private?char[]?options?=?new?char[]{'a','f'};???
          ????????private?String?func1?=?"function(i){?return?this.options[i];?}";???
          ????????private?JSONFunction?func2?=?new?JSONFunction(new?String[]{"i"},"return?this.options[i];");
          ????
          */
          ?????
          public?void?testBean(){
          ?????????JSONObject?jsonObject?
          =?JSONObject.fromObject(?new?JsonBean()?);???
          ?????????System.out.println(?jsonObject?);???
          ?????????
          //{"func1":function(i){?return?this.options[i];?},"pojoId":1,"name":"json","options":["a","f"],"func2":function(i){?return?this.options[i];?}}??
          ?????}
          ?????
          ?????
          /**
          ??????*?private?int?row?;
          ??????????private?int?col?;
          ??????????private?String?value?;
          ??????*
          ??????
          */
          ?????
          public?void?testBeans(){
          ?????????List?list?
          =?new?ArrayList();
          ?????????JsonBean2?jb1?
          =?new?JsonBean2();
          ?????????jb1.setCol(
          1);
          ?????????jb1.setRow(
          1);
          ?????????jb1.setValue(
          "xx");
          ?????????
          ?????????JsonBean2?jb2?
          =?new?JsonBean2();
          ?????????jb2.setCol(
          2);
          ?????????jb2.setRow(
          2);
          ?????????jb2.setValue(
          "");
          ?????????
          ?????????
          ?????????list.add(jb1);
          ?????????list.add(jb2);
          ?????????
          ?????????JSONArray?ja?
          =?JSONArray.fromObject(list);
          ?????????System.out.println(?ja.toString()?);
          ?????????
          //[{"value":"xx","row":1,"col":1},{"value":"","row":2,"col":2}]
          ?????}
          ?????
          ?????

          //????json??to?object?************************************************************?????
          ?????
          ?????
          public?void?testJsonBeanUtil()throws?Exception{
          ?????????????String?json?
          =?"{name=\"json\",bool:true,int:1,double:2.2,func:function(a){?return?a;?},array:[1,2]}";???
          ????????????JSONObject?jsonObject?
          =?JSONObject.fromString(json);???
          ????????????Object?bean?
          =?JSONObject.toBean(?jsonObject?);???
          ????????????assertEquals(?jsonObject.get(?
          "name"?),?PropertyUtils.getProperty(?bean,?"name"?)?);???
          ????????????assertEquals(?jsonObject.get(?
          "bool"?),?PropertyUtils.getProperty(?bean,?"bool"?)?);???
          ????????????assertEquals(?jsonObject.get(?
          "int"?),?PropertyUtils.getProperty(?bean,?"int"?)?);???
          ????????????assertEquals(?jsonObject.get(?
          "double"?),?PropertyUtils.getProperty(?bean,?"double"?)?);???
          ????????????assertEquals(?jsonObject.get(?
          "func"?),?PropertyUtils.getProperty(?bean,?"func"?)?);???
          ????????????List?expected?
          =?JSONArray.toList(?jsonObject.getJSONArray(?"array"?)?);???
          ????????????assertEquals(?expected,?(List)?PropertyUtils.getProperty(?bean,?
          "array"?)?);??
          ?????}
          ?????
          ?????
          public?void?testJsonBean(){
          ?????????????String?json?
          =?"{\"value\":\"xx\",\"row\":1,\"col\":1}";???
          ????????????JSONObject?jsonObject?
          =?JSONObject.fromString(json);
          ????????????JsonBean2?bean?
          =?(JsonBean2)?JSONObject.toBean(?jsonObject,?JsonBean2.class?);???
          ????????????assertEquals(?jsonObject.get(?
          "col"?),new?Integer(?bean.getCol())??);???
          ????????????assertEquals(?jsonObject.get(?
          "row"?),?new?Integer(?bean.getRow()?)?);???
          ????????????assertEquals(?jsonObject.get(?
          "value"?),?bean.getValue()?);??
          ?????}
          }??? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???


          json <-> xml
          JSON to XML
          1. JSONObject?json?=?new?JSONObject(?true?);??
          2. String?xml?=?XMLSerializer.write(?json?);??
          1. <o?class="object"?null="true">??
          2. ??????
          1. JSONObject?json?=?JSONObject.fromObject("{\"name\":\"json\",\"bool\":true,\"int\":1}");??
          2. String?xml?=?XMLSerializer.write(?json?);??
          1. <o?class="object">??
          2. ???<name?type="string">json</name>??
          3. ???<bool?type="boolean">true</bool>??
          4. ???<int?type="number">1</int>??
          5. </o>??
          1. JSONArray?json?=?JSONArray.fromObject("[1,2,3]");??
          2. String?xml?=?XMLSerializer.write(?json?);??
          1. <a?class="array"<??
          2. ???<e?type="number">1</e>??
          3. ???<e?type="number">2</e>??
          4. ???<e?type="number">3</e>??
          5. </a>??
          xml to json
          1. <a?class="array">??
          2. ??<e?type="function"?params="i,j">??
          3. ??????return?matrix[i][j];??
          4. ??</e>??
          5. </a>??
          1. JSONArray?json?=?(JSONArray)?XMLSerializer.read(?xml?);??
          2. System.out.println(?json?);??
          3. //?prints?[function(i,j){?return?matrix[i][j];?}]?


          posted @ 2007-10-08 15:08 G_G 閱讀(1846) | 評論 (0)編輯 收藏

          約定:
          ??? bean.getXX.. 稱為 gbean
          ??? bean.setXX.. 稱為 sbean
          目的:
          gbean 多屬性 付值給 sbean 多屬性(并值有一定修改后)等復雜

          用 一句 *邏輯string* 就可以了
          多屬性不同類型 賦值了
          說明:
          1.sbean : testData 類有4個屬性 ??? personid ; workno ; hname ; dob ;
          2.gbean 類我這用的是數據庫動態類 ,有興趣的可以看看我的另一遍blog 動態面向對象數據庫操作
          ??? 數據庫 表 z_jcyy_basepersonnel 多屬性 但 personid,workno,hname 不可以為空
          3.這里 get set 賦值 使用的工具 LGUtil
          測試:
          package?myGGUtil.LGBeanUtil.test;

          import?java.util.Date;
          import?java.util.Iterator;
          import?java.util.List;
          import?org.apache.commons.beanutils.BeanUtils;
          import?org.apache.commons.jxpath.JXPathContext;
          import?myGGUtil.DBUtil.DyanDBUtils.DyanDBUtils;
          import?myGGUtil.LGBeanUtil.LGUtil;
          import?myGGUtil.LGBeanUtil.SpecialAttFun;
          import?junit.framework.TestCase;

          public?class?test?extends?TestCase?{
          ???

          ??? //只有一條數據的 一對一
          ????
          public?void?testONE_TO_ONE()throws?Exception{

          ??? ??? //得到修改的 數據'0301003300
          ' dob 時間為當前 一條值
          ????????DyanDBUtils?dyd?
          =?new?DyanDBUtils();
          ????????List?list?
          =?dyd.select("select?t.*?from?z_jcyy_basepersonnel?t?where?t.personid?=?'0301003300'");
          ????????BeanUtils.setProperty(?list.get(
          0)?,"dob",new?Date());?
          ????????dyd.updateOrInsert(list.get(
          0));
          ????????List?listD?
          =?dyd.select("select?t.*?from?z_jcyy_basepersonnel?t?where?t.personid?=?'0301003300'");

          ??? ??? //這使用 LGutil 目的是 包, 把
          數據'0301003300'的 personid,workno,hname,dob 值通過一定邏輯賦值
          ????????LGUtil?lb?
          =?new?LGUtil();
          ????????lb.setDataList(listD);?? //數據加入? : 就是 gbean
          ????????lb.setMapping(LGUtil.ONE_TO_ONE);?? //定義是一對一 get -> set
          ????????lb.setVbClass(testData.
          class); // sbean 類
          ????????lb.setAttrLg(Date.
          class,"?./${.+}?","action:date($this,'yy-MM-dd')");
          ??? ??? //把gbean數據為Date類型的付值給 sbean 的string類型 并以 'yy-MM-dd'時間字符格式
          ?

          ????????lb.setAttrLg(String.
          class,"./${.+}"); //String 普通付值
          ????????
          ????????lb.setFun(
          new?SpecialAttFun(){
          ????????????
          public?void?action(JXPathContext?temD,?JXPathContext?temV,?int?step,?JXPathContext?all)?{
          ????????????????temV.setValue(
          "hname","heha"?); //在特殊值 hname 改為 heha (呵哈 我的口號哦^_^)
          ????????????}
          ????????});
          ????????
          ????????testData?oo?
          =?(testData)lb.getVBean().get(0)?;
          ??? ??? //sbean 的值輸出 :
          ????????System.out.println(oo.getPersonid()
          +":"+oo.getHname()+":"+oo.getWorkno()+":"+?oo.getDob()?);
          ???????
          ??? ??? //測試結束 數據庫 改回去 dob 為空
          ????????BeanUtils.setProperty(?list.get(
          0)?,"dob",null);?
          ????????dyd.updateOrInsert(list.get(
          0));
          ????}
          ???
          ??? //多條數據的
          ? :就是 gbean多 -> sbean
          ????public?void?testMANY_TO_ONE()throws?Exception{
          ????????DyanDBUtils?dyd?
          =?new?DyanDBUtils();
          ????????List?list?
          =?dyd.select("select?t.*?from?z_jcyy_basepersonnel?t?where?t.personid?like?'03010033%'?");
          ??? ??? // 得到多條數據

          ????????LGUtil?lb?
          =?new?LGUtil();
          ????????lb.setDataList(list);
          ????????lb.setMapping(LGUtil.MANY_TO_ONE);
          ????????lb.setVbClass(testData.
          class);
          ????????lb.setAttrLg(
          "sum(./${workno})");? //把屬性 workno 的全部值 向加 并 付值給 sbean.workno
          ????????
          ????????testData?oo?
          =?(testData)lb.getVBean().get(0)?;
          ????????System.out.println(oo.getWorkno()); //輸出 workno
          ????}

          ??? //多數據的一對一? gbean多 -> sbean多
          ????
          public?void?testOne_to_one()throws?Exception{
          ????????DyanDBUtils?dyd?
          =?new?DyanDBUtils();
          ????????List?listd?
          =?dyd.select("select?t.*?from?z_jcyy_basepersonnel?t?where?t.personid?=?'0301003300'");
          ????????BeanUtils.setProperty(?listd.get(
          0)?,"dob",new?Date());?
          ????????dyd.updateOrInsert(listd.get(
          0));
          ????????List?list?
          =?dyd.select("select?t.*?from?z_jcyy_basepersonnel?t?where?t.personid?=?'0301003300'");
          ??? ?? //這 030100330 數據改值 下面 展現需要 (有不同哦)
          ??? ??
          ????????LGUtil?lb?
          =?new?LGUtil();
          ????????lb.setDataList(dyd.select(
          "select?t.dob,?t.*?from?z_jcyy_basepersonnel?t?where?t.personid?like?'03010033%'"))?;
          ????????lb.setMapping(LGUtil.ONE_TO_ONE);
          ????????lb.setVbClass(testData.
          class);
          ????????
          ????????lb.setAttrLg(
          "${.+}");//全付值?
          ??????? lb.setAttrLg(Date.class," ./${.+} ","action:date($this,'yy-MM-dd')"); //date 給格式

          ????????
          for(Iterator?it=lb.getVBean().iterator();it.hasNext();?){
          ????????????testData?oo?
          =?(testData)it.next();
          ????????????System.out.println(oo.getPersonid()
          +":"+oo.getHname()+":"+oo.getWorkno()+":"+?oo.getDob()?);
          ????????}
          ????????
          ????????BeanUtils.setProperty(?list.get(
          0)?,"dob",null);?
          ????????dyd.updateOrInsert(list.get(
          0));
          ????}?
          }

          結果:
          //方法 testONE_TO_ONE(): dob為'yy-MM-dd'
          0301003300:heha:3300:07-09-29

          //方法testMANY_TO_ONE() workno 全加 就是方法3 的workno全加 (大家可以看看哦)
          174005.0
          //方法testOne_to_one() 全付值 (簡單展示 也可以對沒個屬性修改付 如:dob 方法一樣)
          0301003300:張金棟:3300:07-09-29
          0301003301:谷嘉奇:3301:78-09-21
          0301003302:閆國春:3302:78-12-24
          0301003304:解國強:3304:77-08-17
          0301003305:任志勇:3305:71-10-20
          0301003306:張寧:3306:74-10-13
          0301003307:閆立文:3307:70-07-05
          0301003308:鄧志山:3308:74-02-28
          0301003309:劉承謙:3309:67-12-30
          0301003310:郭愛軍:3310:75-11-21
          0301003312:楊濤:3312:73-08-01
          0301003313:喬迎松:3313:74-05-27
          0301003314:徐志斌:3314:69-03-14
          0301003323:黃向東:3323:72-07-30
          0301003324:高國良:3324:73-11-17
          0301003326:高杰:3326:74-02-10
          0301003329:葛燕京:3329:74-10-29
          0301003331:趙震:3331:75-01-07
          0301003333:郝君平:3333:74-03-12
          0301003339:孫雪峰:3339:73-03-28
          0301003340:劉紹明:3340:74-12-23
          0301003341:郭金江:3341:73-06-07
          0301003342:趙福軍:3342:74-01-17
          0301003343:劉勇:3343:74-07-04
          0301003349:鄭巖:3349:73-11-29
          0301003350:周勇:3350:75-06-03
          0301003352:許東波:3352:73-11-30
          0301003353:于華濤:3353:71-11-08
          0301003354:陳建宏:3354:71-11-21
          0301003355:王福祿:3355:70-11-16
          0301003357:曹小軍:3357:75-09-05
          0301003358:耿龍:3358:76-04-09
          0301003359:麻然松:3359:74-04-05
          0301003361:侯亮:3361:77-11-01
          0301003362:翁寶重:3362:73-10-06
          0301003364:李結:3364:74-12-08
          0301003367:張建杰:3367:70-01-03
          0301003369:王琪:3369:76-03-23
          0301003370:劉洪濤:3370:77-10-26
          0301003371:張兆鵬:3371:76-06-21
          0301003373:王飛虎:3373:74-12-06
          0301003375:王愛軍:3375:74-01-02
          0301003376:李小發:3376:72-12-20
          0301003377:楊京海:3377:78-08-12
          0301003379:王羽:3379:77-10-27
          0301003380:周鳳昆:3380:74-02-16
          0301003381:王建新:3381:76-05-11
          0301003384:盧紅峰:3384:77-11-03
          0301003387:解瑞杰:3387:72-05-15
          0301003390:李振盈:3390:76-10-03
          0301003393:馬強:3393:75-10-03
          0301003397:齊永強:3397:77-04-06

          有興趣的可以看看我花了3 天寫的代碼(重構過一次應該還是可以看看的 )
          下載:
          myGGUtil.rar
          包說明:
          ?本次 代碼在 myGGUtil.LGBeanUtil.LGUtil 下 (^_^)大家提點意見哦 !
          我希望這個好的想法 能成一個框架 哦~~~
          ?

          posted @ 2007-09-29 09:51 G_G 閱讀(1051) | 評論 (2)編輯 收藏

          BUG修訂 09-21 15:44
          ???時間類不能Update 問題 (如果在上面時間前下載那請從新下載)

          ?

          在上一版本有大改動 自用小框架:DB工廠??
          ?????????1.? 添加 jdbc ?事物
          ?????????2.? 結構更合理
          ???????? 3.? 速度加快

          工具簡單說明
          ??????脫離 DB 影射包 java 數據類 ,動態在內存中生成 動態數據類 ( 使用BeanUtils的DyanBean類?)??????.
          ????? 操作DB 面向對象操作(當然是動態^_^)
          ????? 為了更實用 我用了張 50多屬性的大表進行測試.閱讀起來可能有點困難,希望大家海涵.?
          version?
          ???jdk 1.4

          下載
          ??????DyanDBUtils.rar


          包文件說明 :
          ?????????Config ? :? JDBC 需要的 驅動 密碼等
          ???????? DBResources :?? 根據Config給出 Connection ,? PreparedStatement
          ?????????DynaClass :? 根據元數據 和 table 給出 動態BasicDynaClass?
          ?????????SQLSpelling : 給出 sql 語句和 sql語句中 ? ?的值?,格式為 List?:?lise.get(0)為sql語句 后其他為值??
          ?????????DyanDBUtils.java : 為本Util主要入口點 也是運行點

          數據庫表? z_jcyy_basepersonnel
          ??????有53個屬性?(什么類型都有)
          ??????4 個不為空屬性 personid , workno , depotid ,? hname?????

          測試

          package ?DyanDBUtils.test;


          import ?java.util.Iterator;

          import ?org.apache.commons.beanutils.BeanUtils;

          import ?DyanDBUtils.DyanDBUtils;
          import ?junit.framework.TestCase;

          public ? class ?testUtil? extends ?TestCase?{
          ????
          static ? private ?DyanDBUtils?dyd? = ??DyanDBUtils.getDyanDBUtil()?;
          ????
          static ? private ?Object?obj? = ? null ?;
          ????//SELECT
          ????
          public ? void ?testSelete() throws ?Exception{
          ????????dyd.setIsShowSQL(
          true );
          ????????
          for (Iterator?it? = ?dyd.select( " select?t.*,?t.rowid?from?z_jcyy_basepersonnel?t?where?t.personid?=?'0301003719' " ).iterator();
          ????????????????????it.hasNext();){
          ????????????Object?obj?
          = ?it.next();
          ????????}
          ????}
          ????//INSERT
          ????
          public ? void ?testInsert() throws ?Exception{
          ????????obj?
          = ?dyd.getDyanDBBean( " z_jcyy_basepersonnel " );
          ????????????BeanUtils.setProperty(obj,
          " personid " , " 1000 " );
          ????????????BeanUtils.setProperty(obj,
          " workno " , " 2000 " );
          ????????????BeanUtils.setProperty(obj,
          " depotid " , " 300 " );
          ????????????BeanUtils.setProperty(obj,
          " hname " , " 劉凱毅 " );
          ????????dyd.insert(obj);?? //INSERT?

          ????}

          ???//UPDATE
          ????
          public ? void ?testUpdate() throws ?Exception{
          ????????BeanUtils.setProperty(obj,
          " hname " , " 思考.. " );
          ????????dyd.updateOrInsert(obj); //UPDATE

          ????}
          //DELECT
          ????
          public ? void ?testDelete() throws ?Exception{
          ????????dyd.delete(obj);//DELECT

          ????????System.out.println(
          " ****************************************** " );
          ????}
          ????
          ????
          public ? void ?testCommit() throws ?Exception{
          ????????dyd.openCommit()?;
          ????????Object?obj?
          = ?dyd.select( " select?t.*,?t.rowid?from?z_jcyy_basepersonnel?t?where?t.personid?='0301003719'? " ).get( 0 );
          ????????
          ????????BeanUtils.setProperty(obj,
          " hname " , " 劉凱毅 " );
          ????????dyd.updateOrInsert(obj);

          ????????BeanUtils.setProperty(obj,
          " workno " , null );? // 不可為空
          ????????dyd.updateOrInsert(obj);
          ????????
          ????????dyd.colseCommit();
          ????????testSelete();
          ????}
          ????
          }



          測試測試結果 (注意: 開頭的 李家佳?3719? 和后面的 3719? 沒變 就是事物的結果)

          李家佳? 3719
          insert ? into ?z_jcyy_basepersonnel(?depotid,drivekm,hname,hundreds,personid,resbaseknowledge,rescheck,resctrl,resproknowledge,ressaferules,roomarea,safekm,status,workno)? values (??,?,?,?,?,?,?,?,?,?,?,?,?,?)
          //劉凱毅?2000?? print insert
          // 思考..?
          2000???? print update
          delete ? from ?z_jcyy_basepersonnel? where ? 1 = 1 ?? and ?personid = ?
          ******************************************
          delete ? from ?z_jcyy_basepersonnel? where ? 1 = 1 ?? and ?personid = ?
          insert ? into ?z_jcyy_basepersonnel(?beginworktime,depotid,deptid,dob,drivekm,drivelocotype,dynamicinfo,dynamicinfo2,dynamicinfo3,eductionlevel,folk,hname,hundreds,marrystatus,minordriveno,nativeplace,personid,political,postid,promoteminordriverdate,resbaseknowledge,rescheck,resctrl,resproknowledge,ressaferules,roomarea,safebeginday,safekm,sex,status,techniclevel,workno)? values (??,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
          delete ? from ?z_jcyy_basepersonnel? where ? 1 = 1 ?? and ?personid = ?
          insert ? into ?z_jcyy_basepersonnel(?beginworktime,depotid,deptid,dob,drivekm,drivelocotype,dynamicinfo,dynamicinfo2,dynamicinfo3,eductionlevel,folk,hname,hundreds,marrystatus,minordriveno,nativeplace,personid,political,postid,promoteminordriverdate,resbaseknowledge,rescheck,resctrl,resproknowledge,ressaferules,roomarea,safebeginday,safekm,sex,status,techniclevel)? values (??,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
          java.sql.SQLException:?ORA
          - 01400 :?無法將? NULL ?插入?("JCYY"."Z_JCYY_BASEPERSONNEL"."WORKNO") //事物運行良好 哦

          李家佳?3719

          總結
          事物 解決了 還有多表問題 大家多給點鼓勵哦 ^_^?

          posted @ 2007-09-21 14:46 G_G 閱讀(1824) | 評論 (6)編輯 收藏

          BUG 修改 :
          09-20?? 因為 Oracle??取元數據的字符串需要大寫 至修改并下載更新
          測試使用表
          ??????ID?????????????????????????? SN?? STATIONNAME????????? SPELL????? DEPOTID?
          ??????-------------- ---- -------------------- ---------- ------- ------------------
          ??????08050000390689??? 3???? 永安???????????????????????????? ?ya??????????????? ....

          版本升級
          09-21 DyanDBUtils 動態面向對象數據庫 操作

          由于 hibernate 還要table影射成class 這好處和壞處只有我們程序員知道了
          ??????? 只要修改數據庫就大量影射附加工作要做 ,有時影射還有BUG弄的我們@#$%!.....(哈hibernate我是小鳥^_^),我----不要----影射 , 沒有他們數據庫就又回到jdbc.本人比較喜歡偷懶 哈哈 自己來個小框架吧( 就300來行的代碼有興趣的看看哦 )!!!?

          用到技術
          ???? BeanUtil , JDBC元數據(在這我可是好好看了下JDBC,其實他是很強的東西,大家應該好好用用^_^)?
          下載DBFactory.rar
          DBFactroy
          數據是:
          +----+-------+-------------+------------+
          | id | title | description | buydate??? |
          +----+-------+-------------+------------+
          |? 6 | tt??? | asdgwgw???? | 1990-12-02 |
          +----+-------+-------------+------------+


          先看看測試吧

          public?class?testNotKonw?extends?TestCase?{

          ????
          protected?void?setUp()?throws?Exception?{
          ?????? //運行 sql 可見
          ????????DBFactory.getTools().setIsShowSql(DBFactory.SHOW);
          ????????
          super.setUp();
          ????}
          ????
          public?void?testDelete()throws?Exception{
          ?????????// select 出來 就的 List 中 DynaBean?: id , title?.....? 類型 , 和值都有了
          ????????
          for(Iterator?it?=?DBFactory.getTools().select("select?*?from?books").iterator();it.hasNext();){
          ????????????// 那就是delete :?目的是測試前 刪除全部數據
          ????????????DBFactory.getTools().delete(it.next());
          ????????}
          ????}
          ????
          ??????
          public?void?testInsert()throws?Exception{
          ??????? // insert 要先new出來個 table->bean??再?添屬性 ?
          ????????Object?obj?
          =?DBFactory.getTools().getDynaTableClass("books").newInstance();
          ????????BeanUtils.setProperty(obj,
          "id","6");
          ????????BeanUtils.setProperty(obj,
          "title","tt");
          ????????BeanUtils.setProperty(obj,
          "description","asdgwgw");
          ????????BeanUtils.setProperty(obj,
          "buydate",new?Date());
          ?????? //這幾是 insert 了 (簡單吧)
          ????????DBFactory.getTools().insert(obj);
          ????}
          ????
          ????
          //?update
          ????public?void?testUpdate()throws?Exception{
          ????????
          for(Iterator?it?=?DBFactory.getTools().select("select?*?from?books").iterator();it.hasNext();){
          ????????????Object?obj?
          =?it.next();
          ????????????BeanUtils.setProperty(obj,
          "buydate",new?Date(90,11,2));
          ????????????DBFactory.getTools().update(obj);
          ????????}
          ????}
          }


          控制臺輸出
          //testDelete
          delete from books where 1=1? and id=6
          //testInsert
          insert into books(id,title,description,buydate) values( 6,'tt','asdgwgw','2007-09-19')
          //testUpdate
          delete from books where 1=1? and id=6
          insert into books(id,title,description,buydate) values( 6,'tt','asdgwgw','1990-12-02')

          代碼關鍵說明:
          關鍵在BeanUtil 的 DnayBean中 我通過元數據 得到了 這個Bean 屬性.屬性類型,還有表信息放在 getClass();的字符串中
          ???EG:????table=...;key=..,..,..;columns=...,..,;?后在insert ,?delet , update就是(先delete后insert^_^) ?中?解析得到 動態寫sql語句?
          ?????????更舉 DnayBean中屬性類型看看 Bean value 是否要加 ' value?' 還是直接 value 到sql 中

          ????public??BasicDynaClass?getDynaTableClass(String?table){
          ????????Connection?conn?
          =?getConn()?;
          ????????List?props?
          =?new?ArrayList();
          ????????DatabaseMetaData?dm?
          =?null?;
          ????????BasicDynaClass?dynaClass?
          =?null?;
          ????????
          try?{????
          ????????????dm?
          =?conn.getMetaData();
          ????????????ResultSet?coulumns?
          =?dm.getColumns(null,null,table,null);
          ????????????
          while(coulumns.next()){
          ?????????????? //元數據中得到 類型做?DynaBean 屬性?? coulumns.getInt("DATA_TYPE")? 是? java.sql.Types.XXXXX
          ????????????????props.add(
          new?DynaProperty(?coulumns.getString("COLUMN_NAME"),getStrClass(coulumns.getInt("DATA_TYPE")))?);
          ????????????}
          ????????????
          //?all?:?table
          ????????????
          //delete?:?column_name?column_value
          ????????????
          //insert?:?column_name
          ????????????StringBuffer?sb?=?new?StringBuffer();
          ????????????sb.append(
          "table=").append(table).append(";");
          ????????????
          ????????????sb.append(
          "keys=");
          ????????????????ResultSet?keys?
          =?dm.getPrimaryKeys(null,null,table);
          ????????????????
          while(keys.next()){
          ????????????????????sb.append(?keys.getString(
          "column_name")).append(",");
          ????????????????}
          ????????????????sb.replace(sb.length()
          -1,sb.length(),";");
          ????????????
          ????????????sb.append(
          "columns=");????
          ????????????????ResultSet?couls?
          =?dm.getColumns(null,null,table,null);
          ????????????????
          while(couls.next()){
          ????????????????????sb.append(?couls.getString(
          "column_name")).append(",");
          ????????????????}
          ????????????????sb.replace(sb.length()
          -1,sb.length(),";");
          ????????????????
          ??????????? //為 Class name? <- sb.toString()
          ????????????dynaClass?
          =?new?BasicDynaClass(sb.toString()?,?null,?
          ????????????????????(DynaProperty[])props.toArray(
          new?DynaProperty[]{})?);
          ????????}?
          catch?(Exception?e)?{e.printStackTrace();}
          ????????
          finally{
          ????????????
          try?{
          ????????????????conn.close()?;
          ????????????}?
          catch?(SQLException?e)?{e.printStackTrace();}
          ????????}
          ????????
          return?dynaClass?;
          ????}

          insert , delete 差不多 就來insert

          ????public?boolean?insert(Object?obj){
          ????????String?sqlstrat?
          =?"insert?into?";
          ????????String?sqldo?
          =?"?values(?";
          ????????String?sqlend?
          =?")";
          ????????String?sql?
          =?"";
          ????????
          boolean?od?=?false?;
          ????????
          ????????Connection?conn?
          =?getConn()?;
          ????????Statement?sta?
          =?null?;
          ????????
          try?{
          ???????????? //解析getDynaClass().getName()? 得到 table
          ????????????sqlstrat?
          +=?getTableConfig(obj,"table")[0]+"("?;
          ????????????
          ???????????? //解析getDynaClass().getName()? 得到?columns
          ????????????String[]?cols?
          =?getTableConfig(obj,"columns");
          ????????????
          for(int?i=0;i<cols.length;i++){
          ????????????????sqlstrat?
          +=?cols[i]??+",";
          ????????????????sqldo?
          +=?getSqlAtt(obj,cols[i]?)+",";
          ????????????}
          ????????????sql?
          =?sqlstrat.substring(0,sqlstrat.length()-1)+")"+sqldo.substring(0,sqldo.length()-1)+sqlend;
          ????????????sta?
          =?conn.createStatement();
          ????????????
          if(?sta.executeUpdate(sql)>0){od?=?true;};
          ????????}?
          catch?(Exception?e)?{e.printStackTrace();}
          ????????
          finally{
          ????????????
          try?{
          ????????????????
          if(?isShowSql==SHOW?)?{System.out.println();System.out.println(sql);}
          ????????????????conn.close();
          ????????????}?
          catch?(SQLException?e)?{e.printStackTrace();}
          ????????}
          ????????
          return?od?;
          ????}



          小結:
          當然表連和多表 是沒問題的
          但在多表 delete , update 就還沒有完成 (蠻難的 5555? 還有 沒時間)
          單表的 delete update ,select,insert 都完成了 我會努力的
          大家要是認為還可以 幫忙頂貼 哦 我會都都完善哦

          posted @ 2007-09-19 11:41 G_G 閱讀(1504) | 評論 (6)編輯 收藏

          本人特留使用 ( ^_^ 寫html 不多 呵呵 )
          ??? 本頁問題說明: 在第一次加載這3個頁面的javascript可正常使用
          ?????????????????? 后 ajax修改的( innerHTML= )頁面 javascript就使用不了全頁的document而是修改后的document
          ??? ?? ?? ?? ?? ?? 有人可以幫幫忙嗎?
          <%@?page?language="java"?import="java.util.*"?pageEncoding="GBK"%>
          <%
          String?path?=?request.getContextPath();
          String?basePath?=?request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
          %>

          <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">
          <html>
          ??
          <head>
          ????
          <base?href="<%=basePath%>">
          ????
          ????
          <title>My?JSP?'Layout.jsp'?starting?page</title>
          ?????
          ????
          <meta?http-equiv="pragma"?content="no-cache">
          ????
          <meta?http-equiv="cache-control"?content="no-cache">
          ????
          <meta?http-equiv="expires"?content="0">
          ????
          <meta?http-equiv="keywords"?content="keyword1,keyword2,keyword3">
          ????
          <meta?http-equiv="description"?content="This?is?my?page">
          ????
          <SCRIPT?src="http://127.0.0.1:7000/jspLayout/js/ajax.js"></SCRIPT>
          ????
          <!--
          ????<link?rel="stylesheet"?type="text/css"?href="styles.css">
          ????
          -->
          ??
          </head>
          ??
          ??
          <body>
          ???????????
          <%@include?file="../html/top.jsp"%>
          ???????????
          <table?width="90%">
          ???????????????
          <tr>
          ???????????????????
          <td??valign="top"?align="center"?height="80%">
          ???????????????????????
          <jsp:include?flush="true"??page="../html/left.html"/>
          ???????????????????
          </td>
          ???????????????????
          <td?id="cen"?valign="middle"?align="center"?width="80%"?height="80%">
          ???????????????????????
          <jsp:include?flush="true"??page="../html/center.html"/>
          ???????????????????
          </td>
          ???????????????
          </tr>
          ???????????
          </table>
          ??
          </body>
          </html>

          posted @ 2007-09-14 17:46 G_G 閱讀(2238) | 評論 (3)編輯 收藏


          使用后好處?
          ??? java 和 javascript 使用同統一對象,語法?. 數據從 sever 到 v層?和?v層 到 sever ?方便.
          ??????????? 簡單說就是?JBean 不做修改拿到V層 當 JSBean (javascript 類)?中用

          1.url 亂碼問題參照 Ajax uri 亂碼問題總結(IE,FF)
          2.使用jar是 jxpath ; json? ......(與相關)
          ???????????????jxpath 參照 jxpath 學習筆記?
          ???????????????json 參照 使用json-lib

          例題說明 數據 name,avg 在通過 ajax json 后 avg +1 再展現到頁面
          本頁需要 json.js 下載到 http://www.json.org/json.js?

          <% @?page?pageEncoding = " GBK " %>
          <% @?page?contentType = " text/html;?charset=GBK " ? %> ??
          < html >
          ??
          < head >
          ????
          < title > json.html </ title >
          ????
          ????
          < meta? http-equiv ="keywords" ?content ="keyword1,keyword2,keyword3" >
          ????
          < SCRIPT? src ="../js/json.js" ? ></ SCRIPT > ?
          ????
          < script? language ="javascript" ?type ="text/javascript" >
          ????
          var ?request? = ? false ;
          ????
          ?? // javascript ?Ajax? 沒什么好說的 這可以用 prototype prototype.js 的理解??,dojo?dojo? 等 ajax
          ? //本例?為方便直接寫了 ^_^
          ?
          ????
          function ?getOpen(){??????
          ???????
          try ?{
          ?????????request?
          = ? new ?XMLHttpRequest();
          ???????}?
          catch ?(trymicrosoft)?{
          ?????????
          try ?{
          ???????????request?
          = ? new ?ActiveXObject( " Msxml2.XMLHTTP " );
          ?????????}?
          catch ?(othermicrosoft)?{
          ???????????
          try ?{
          ?????????????request?
          = ? new ?ActiveXObject( " Microsoft.XMLHTTP " );
          ???????????}?
          catch ?(failed)?{
          ?????????????request?
          = ? false ;
          ???????????}??
          ?????????}
          ???????}
          ????}???
          ???????
          ???????
          ??????
          function ?getCustomerInfo()?{
          ??????getOpen();
          ???????
          if ?( ! request)
          ?????????alert(
          " Error?initializing?XMLHttpRequest! " );
          ?????????
          ?????? //這通過 url 把數據傳給 server?
          ?????? //數據來源 javascript 類 就下方 DBdata
          ???? string:?name:我名字^_^??,? int:?avg:年齡^_^
          ?????????
          var ?url? = ? " /json/json?jsonStr= " + ?( new ?DBdata()).toJSONString()?;
          ?????????request.open(
          " GET " ,?url,? true );
          ?????????request.send(
          null );
          ?????????request.onreadystatechange?
          = ?updatePage;
          ???????}
          ???????
          ?????? //?ajax 處理?數據后返回的?結果?
          ????? // 年齡 +1?并輸入到 輸入框中
          ???????
          function ?updatePage(){
          ???????
          if ?(request.readyState? == ? 4 )?
          ???????????
          if ?(request.status? == ? 200 ){?
          ??????????? //得到 json str
          ?????????????
          var ?jss? = ?request.responseText;
          ??????????? //加載到 javascript 類中 string -> jsBean
          ?????????????
          var ?jsobj? = ?eval('('? + ?jss? + ?')');
          ???????????? //使用和 java對象一樣 ^_^
          ?????????????document.getElementById('xx').value?
          = ?jsobj.name? + ':' + ?jsobj.avg?;
          ????????????}
          ???????}
          ????
          //數據來源
          ?????
          function ?DBdata(){
          ?????????
          this .name? = ?'劉凱毅';
          ?????????
          this .avg = 23 ;?
          ?????????
          this .init = function (){
          ?????????????alert('呵呵');
          ?????????}
          ?????}
          </ script >
          ??
          </ head >
          ??
          < body? onload ="" >
          ??????
          < INPUT? id ='xx'? type ="text" ? >
          ??????
          < INPUT? id ='x'? type ="button" ?onclick ="getCustomerInfo()" ?value ="go" >
          ??
          </ body >
          </ html >

          為了方便明了我java方就使用了 server
          package?servlet;

          import?java.io.IOException;
          import?java.io.PrintWriter;

          import?javax.servlet.ServletException;
          import?javax.servlet.http.HttpServlet;
          import?javax.servlet.http.HttpServletRequest;
          import?javax.servlet.http.HttpServletResponse;

          import?org.apache.commons.jxpath.JXPathContext;

          import?net.sf.json.JSONObject;


          public?class?Json?extends?HttpServlet?{
          ????
          public?void?doGet(HttpServletRequest?req,HttpServletResponse?rpo)throws?ServletException,IOException{
          ????????rpo.setCharacterEncoding(
          "GBK");
          ????????req.setCharacterEncoding(
          "GBK");
          ????????rpo.setContentType(
          "text/html;?charset=GBK");
          ????????
          ????????PrintWriter?out?
          =?rpo.getWriter()?;
          ???????
          ??? ??? //得到 url 傳入數據
          ????????String?str?
          =?req.getParameter("jsonStr")?;
          ??? ??? //java 方 string -> javaBean
          ????????JSONObject?jso?
          =?JSONObject.fromString(str);
          ??? ??? //javaBean 使用jxpathcontxt解讀更方便 ^_^
          ??????? //其實jso中是以 map 形式存區的 有興趣的可以自己動手寫下哦

          ????????JXPathContext?jx?
          =?JXPathContext.newContext(jso);
          ????????
          try?{
          ??? ?? ?? ?? //jxpath好處來了 avg + 1
          ????????????jx.setValue(
          "./avg",?jx.getValue("./avg?+?1?")?);
          ????????}?
          catch?(Exception?e)?{e.printStackTrace();}
          ??? ???
          ??? ?? //以 jsonString 傳出
          ????????out.print(jso.toString());

          ????}
          }

          web.xml(好象有點多嘴了 哈哈 方便下入門人了)
          ????<servlet>
          ????????
          <servlet-name>json</servlet-name>
          ????????
          <servlet-class>servlet.Json</servlet-class>
          ????
          </servlet>
          ????
          <servlet-mapping>
          ????????
          <servlet-name>json</servlet-name>
          ????????
          <url-pattern>/json</url-pattern>
          ????
          </servlet-mapping>



          posted @ 2007-09-13 11:36 G_G 閱讀(2924) | 評論 (2)編輯 收藏

          僅列出標題
          共16頁: First 上一頁 8 9 10 11 12 13 14 15 16 下一頁 
          主站蜘蛛池模板: 太白县| 荥阳市| 灌南县| 旌德县| 城口县| 高雄县| 泰来县| 安国市| 左云县| 海南省| 沙坪坝区| 龙山县| 阳曲县| 门源| 鲁山县| 隆化县| 琼结县| 休宁县| 临城县| 张家界市| 温泉县| 石城县| 堆龙德庆县| 湘阴县| 视频| 连城县| 桃源县| 达州市| 莎车县| 夏河县| 伊川县| 池州市| 桃源县| 建宁县| 宁国市| 新绛县| 资阳市| 永丰县| 民丰县| 泾源县| 沙洋县|