2009年3月19日

          struts2 相關(guān)包--------------------------------------------------

          xwork-2.0.5.jar                          webwork的核心庫

          ognl-2.6.11.jar                           OGNL表達式語言,struts2支持該EL

          freemarker-2.3.8.jar                  表現(xiàn)層框架,定義了struts2的可視組件主題

          commons-beanutils.jar              提供對java 反射和自省API的包裝

          commons-fileupload.jar             文件上傳

          commons-io.jar                         輸入輸出,支持文件上傳

          commons-logging.jar                用于通用日志處理

          commons-validator.jar            提供了一個簡單的,可擴展的框架來在一個XML文件中定義校驗器(校驗方法)和校驗規(guī)則

          struts2-spring-plugin-2.0.11.2.jar   struts2的spring插件

          struts2-core-2.0.11.2jar                  struts2 2.0.11.2的核心庫

           

          hibernate 相關(guān)包--------------------------------------------------                   

          antlr-2.7.6.jar                                  語法分析生成器

          backport-util-concurrent-3.1.jar     ehcache支持jar    

          cglib-nodep-2.1_3.jar                    是一種高性能,高質(zhì)量的代碼產(chǎn)生庫, Hibernate 用它來實現(xiàn) po (persistent                                                          object)字節(jié)碼的動態(tài)生成

          commons-collections.jar                包含了一些Apache開發(fā)的集合類,功能比java.util.*強大

          commons-pool.jar

          commons-dbcp.jar                          DBCP數(shù)據(jù)庫連接池。

          c3p0-0.9.1.jar                                 是一個數(shù)據(jù)庫連接池,Hibernate可以配置為使用C3PO連接池。如果準備用這個連接池,就需要這個jar包.

          dom4j-1.6.1.jar                               用來讀寫XML文件的

          ehcache-1.5.0.jar                        ehcache緩存

          hibernate3.jar                              hibernate-3.3.1.GA jar

          jaxen-1.1.1.jar                              支持dom4j的xpath

          javassist-3.4.GA.jar                       是一個開源的分析、編輯和創(chuàng)建Java字節(jié)碼的類庫,用于 Java 的加載時反射系統(tǒng)

          jta-1.1.jar                                       JTA規(guī)范,當(dāng)Hibernate使用JTA的時候需要

          jsr107cache-1.0.jar                             ehcache支持jar

          mysql-connector-java-3.1.14-bin.jar  mysql驅(qū)動jar

           

          spring 相關(guān)包--------------------------------------------------

          spring.jar                                     spring-2.5.5.jar

          slf4j-log4j12-1.5.0.jar                         slf4j log4j支持包

          log4j-1.2.15.jar

          slf4j-api-1.5.0.jar

           

          posted @ 2009-08-10 09:19 沉聲 閱讀(2190) | 評論 (0)編輯 收藏
           
          層滑動效果 (jquery)
          slideToggle(speed,[callback])
          通過高度變化來切換所有匹配元素的可見性,并在切換完成后可選地觸發(fā)一個回調(diào)函數(shù)。
          這個動畫效果只調(diào)整元素的高度,可以使匹配的元素以“滑動”的方式隱藏或顯示。

          --------------------------------------------------------------------------------

          Toggle the visibility of all matched elements by adjusting their height and firing an optional callback after completion.
          Only the height is adjusted for this animation, causing all matched elements to be hidden or shown in a "sliding" manner.
          返回值
          jQuery

          參數(shù)
          speed (String,Number) : 三種預(yù)定速度之一的字符串("slow", "normal", or "fast")或表示動畫時長的毫秒數(shù)值(如:1000)

          callback (Function) : (可選) 在動畫完成時執(zhí)行的函數(shù)

          示例
          用600毫秒緩慢的將段落滑上或滑下 

          jQuery 代碼:

          $("p").slideToggle("slow"); 
          --------------------------------------------------------------------------------

          用200毫秒快速將段落滑上或滑下,之后彈出一個對話框 

          jQuery 代碼:

          $("p").slideToggle("fast",function(){
             alert("Animation Done.");
           }); 

          ------------------------------------------------------------------------------------------------------------------------------------
          獲取節(jié)點元素
          document.getElementById("p1").firstChild.firstChild.data;
          注:p1為層ID  層結(jié)構(gòu)為 <div><p> xxoo</p></div> 以上表達式值即為 XXOO
          ---------------------------------------------------------------------
          取得頁面元素絕對位置
           1 function getLTWH(o)
           2 {
           3     var oLTWH={"left":0,"top":0,"width":0,"height":0};
           4     if(document.all)
           5     {
           6         var   oRect=o.getBoundingClientRect();
           7         oLTWH.left=oRect.left-2;
           8         oLTWH.top=oRect.top-2;
           9     }else
          10     {
          11         oLTWH.left=o.offsetLeft;
          12         oLTWH.top=o.offsetTop;
          13     }
          14     oLTWH.width=o.offsetWidth;
          15     oLTWH.height=o.offsetHeight;
          16     return oLTWH;
          17 }
          alert(o.left);
          alert(o.top);
          alert(o.width);
          alert(o.height); 這樣就出來了。

          -------------------------------------------------------------------------------------------------------------------------
          路徑問題 直接<%=request.getContextPath()%>/*就OK~
          posted @ 2009-04-13 16:13 沉聲 閱讀(106) | 評論 (0)編輯 收藏
           
          一.常用表單基本取值方法(form1為表單名稱,TextBox1為控件ID,以文本框為例,html控件與web服務(wù)器控件是一樣的)
                  1.form1.TextBox1.value 
                  2.var txt = document.all.TextBox1; 
                    txt.value
                  3.var txt = document.all["TextBox1"];
                    txt.value
                  4.document.getElementById("TextBox1");

          二.
          1.html復(fù)選框(name相同)
          表單: <input id="Checkbox1" type="checkbox" name="chk" value="123" />sss
                 <input id="Checkbox2" type="checkbox" name="chk" value="456"/>aaa
                 <input id="Checkbox3" type="checkbox" name="chk" value="789"/>bbb

          實現(xiàn)功能:遍歷html復(fù)選框,得到所選中項
             var oChks = document.all.chk; 
             for(var i=0; i<oChks.length; i++)   
             {   
                  if(oChks[i].checked)   
              alert(oChks[i].value);   
             } 

          2.html單選框(name相同)
          表單: <input id="Radio1" type="radio" name="rad" value="123"/>123
                 <input id="Radio2" type="radio" name="rad" value="456"/>456
          實現(xiàn)功能:遍歷html復(fù)選框,得到所選中項
          代碼同html復(fù)選框

          3.html下拉列表框
          表單:<select id="Select1" multiple>
              <option value=1>1</option>
              <option value=2>2</option>
                </select>
          實現(xiàn)功能:
             3.1得到所選中項的text和value值(選擇一項)
              var selDrp = document.all.Select1;
              alert(selDrp.options[selDrp.selectedIndex].text);
              alert(selDrp.options[selDrp.selectedIndex].value);
             3.2得到所選中項的text和value值(選擇多項)
              for(var j=0;j<selDrp.options.length;j++)
              {
                    if(selDrp.options[j].selected)
                    {
               alert(selDrp.options[j].value);
                    }
              }
          4.DropDownList控件與ListBox控件
          實現(xiàn)功能:得到所選中項的text和value值
          代碼同html下拉列表框

          5.CheckBoxList控件
          實現(xiàn)功能:得到所選中項的text
          代碼:
                  var chklist = document.all("CheckBoxList1"); 
                  var i = 0;   
                  for(i=0;i<chklist.rows.length;i++)   
                  {   
             var name = "CheckBoxList1_" + i;   
             var tmpChecked = document.all[name].checked; 
                          if(tmpChecked)   
                          {   
              alert(document.all[name].parentElement.innerText);   
                            
                           }   
                  }
          posted @ 2009-03-26 15:11 沉聲 閱讀(658) | 評論 (0)編輯 收藏
           

          個人心得
           spring的DI就是 靠JAVA反射到指定的實體類中調(diào)用該類中的SET方法注入
          會根據(jù)property 的name屬性反射的相應(yīng)的類中找SET方法


          spring對AOP的支持(采用Annotation的方式)

          1、spring依賴庫
           * SPRING_HOME/dist/spring.jar
           * SPRING_HOME/lib/jakarta-commons/commons-logging.jar
           * SPRING_HOME/lib/log4j/log4j-1.2.14.jar
           * SPRING_HOME/lib/aspectj/*.jar
           
          2、采用Aspect定義切面

          2、在Aspect定義Pointcut和Advice

          4、啟用AspectJ對Annotation的支持并且將Aspect類和目標對象配置到Ioc容器中

          注意:在這種方法定義中,切入點的方法是不被執(zhí)行的,它存在的目的僅僅是為了重用切入點
          即Advice中通過方法名引用這個切人點

          AOP:
           * Cross cutting concern
           * Aspect
           * Advice
           * Pointcut
           * Joinpoint
           * Weave
           * Target Object
           * Proxy
           * Introduction

          spring的普通屬性注入 
           參見:spring文檔3.3章節(jié)
           
          什么是屬性編輯器,作用?
           * 自定義屬性編輯器,spring配置文件中的字符串轉(zhuǎn)換成相應(yīng)的對象進行注入
           spring已經(jīng)有內(nèi)置的屬性編輯器,我們可以根據(jù)需求自己定義屬性編輯器
           
           * 如何定義屬性編輯器?
            * 繼承PropertyEditorSupport類,覆寫setAsText()方法,參見:UtilDatePropertyEditor.java
            * 將屬性編輯器注冊到spring中,參見:applicationContext-editor.xml
            
          依賴對象的注入方式,可以采用:
           * ref屬性
           * <ref>標簽
           * 內(nèi)部<bean>來定義
           
          如何將公共的注入定義描述出來?
           * 通過<bean>標簽定義公共的屬性,指定abstract=true
           * 具有相同屬性的類在<bean>標簽中指定其parent屬性
           
           參見:applicationContext-other.xml
              
            
             

          posted @ 2009-03-24 16:00 沉聲 閱讀(163) | 評論 (0)編輯 收藏
           

          雜文
          Session 是非線程安全的
          所以一個業(yè)務(wù)請求來就打開一個session 用完就立即關(guān)閉

          采用get加載數(shù)據(jù),如果數(shù)據(jù)庫中不存在相應(yīng)的數(shù)據(jù),返回null

          在刪除和修改時,一般都先將要操作的數(shù)據(jù)加載上之后再進行刪除和修改。

          get和load只能根據(jù)主鍵加載,如要使用別的方式 則需借助HQL查詢


          查詢時 from后面區(qū)分大小寫(對應(yīng)的是實體類 而不是表名)

          hibernate基本映射

          實體類---表
          實體類中的普通屬性---表字段

          采用<class>標簽映射成數(shù)據(jù)庫表,通過<property>標簽將普通屬性映射成表字段
          所謂普通屬性指不包括自定義類、集合和數(shù)組等

          注意:如果實體類和實體類中的屬性和sql中的關(guān)鍵字重復(fù),必須采用table或column重新命名

          實體類的設(shè)計原則:
           * 實現(xiàn)一個默認的(即無參數(shù)的)構(gòu)造方法(constructor)
           * 提供一個標識屬性(identifier property)(可選)
           * 使用非final的類 (可選)
           * 為持久化字段聲明訪問器(accessors) 

          主鍵生成策略:
           uuid、native和assigned


          hibernate一級緩存
           
          一級緩存很短和session的生命周期一致,一級緩存也叫session級的緩存或事務(wù)級緩存

          那些方法支持一級緩存:
           * get()
           * load()
           * iterate(查詢實體對象)
           
          如何管理一級緩存:
           * session.clear(),session.evict()
           
          如何避免一次性大量的實體數(shù)據(jù)入庫導(dǎo)致內(nèi)存溢出
           * 先flush,再clear
           
          如果數(shù)據(jù)量特別大,考慮采用jdbc實現(xiàn),如果jdbc也不能滿足要求可以考慮采用數(shù)據(jù)本身的特定導(dǎo)入工具     


          hibernate二級緩存

          二級緩存也稱進程級的緩存或SessionFactory級的緩存,二級緩存可以被所有的session共享
          二級緩存的生命周期和SessionFactory的生命周期一致,SessionFactory可以管理二級緩存

          二級緩存的配置和使用:
           * 將echcache.xml文件拷貝到src下
           * 開啟二級緩存,修改hibernate.cfg.xml文件
            <property name="hibernate.cache.use_second_level_cache">true</property>
           * 指定緩存產(chǎn)品提供商,修改hibernate.cfg.xml文件
            <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
           * 指定那些實體類使用二級緩存(兩種方法)
            * 在映射文件中采用<cache>標簽
            * 在hibernate.cfg.xml文件中,采用<class-cache>標簽
            
          二級緩存是緩存實體對象的

          了解一級緩存和二級緩存的交互  
            

          采用編程式事務(wù)

          1、getCurrentSession()與openSession()的區(qū)別?
           * 采用getCurrentSession()創(chuàng)建的session會綁定到當(dāng)前線程中,而采用openSession()
             創(chuàng)建的session則不會
           * 采用getCurrentSession()創(chuàng)建的session在commit或rollback時會自動關(guān)閉,而采用openSession()
             創(chuàng)建的session必須手動關(guān)閉
            
          2、使用getCurrentSession()需要在hibernate.cfg.xml文件中加入如下配置:
           * 如果使用的是本地事務(wù)(jdbc事務(wù))
           <property name="hibernate.current_session_context_class">thread</property>
           * 如果使用的是全局事務(wù)(jta事務(wù))
           <property name="hibernate.current_session_context_class">jta</property>  


               
               

          posted @ 2009-03-19 11:11 沉聲 閱讀(171) | 評論 (0)編輯 收藏
           
          主站蜘蛛池模板: 苍山县| 丽江市| 滨海县| 左贡县| SHOW| 勐海县| 舟山市| 宜君县| 巴楚县| 邳州市| 溆浦县| 甘孜| 都安| 荃湾区| 乐亭县| 太湖县| 扎赉特旗| 洮南市| 穆棱市| 彭水| 贞丰县| 弥勒县| 旌德县| 长子县| 永善县| 工布江达县| 洪洞县| 庆阳市| 信宜市| 天镇县| 彭州市| 长治市| 广东省| 琼中| 绩溪县| 利津县| 宁陵县| 从江县| 定边县| 改则县| 甘谷县|