歐陽良才

          不是別人,就是我陽良才
          隨筆 - 13, 文章 - 8, 評論 - 2, 引用 - 0
          數據加載中……

          2012年3月23日

          常用樹控件 tree

           jQuery plugin: Treeview 

          這個插件能夠把無序列表轉換成可展開與收縮的Tree。
           

          jQuery plugin: Treeview

           jQuery  

           jstree 

          jsTree是一個基于jQuery的Tree控件。支持XML,JSON,Html三種數據源。提供創建,重命名,移動,刪除,拖\放節點操作。可以自己自定義創建,刪除,嵌套,重命名,選擇節點的規則。在這些操作上可以添加多種監聽事件。 

          jstree

           jQuery UI Widgets  

           FileTreePanel 

          FileTreePanel擴展至Ext.tree.TreePanel附帶基本的文件/文件夾管理功能。其它還包括文件上傳,重命名,刪除,新建與移動。
          FileTree

          FileTreePanel

           ExtJs  

           jQuery File Tree 

          jQuery File Tree是一個可配置的Ajax文件瀏覽器jQuery插件。可以通過CSS定制外觀,指定文件樹展開圖標,可以自己定義展開/收縮事件、速度,配置加載信息等。 jQuery File Tree通過Ajax來獲取文件信息。

          jQuery File Tree

           jQuery  

           dhtmlxTree  

          dhtmlxTree是一個功能豐富的Tree Menu控件。提供豐富的操作API,AJAX支持和drag-n-drop功能。

          dhtmlxTree

           

           dTree 

          dTree是一個易于使用的JavaScript樹形菜單控件。支持無限分級,可以在同一個頁面中放置多個dTree,可以為每個節點指定不同的圖標。

          dTree

           

           Yahoo! UI Library: TreeView 

          YUI TreeView Control這個樹形組件,支持通過XMLHttpRequest對象動態加載節點數據,自定義每一個節點metadata。

          Yahoo! UI Library: TreeView

           YUI  

           Fonshen JS MenuTree 

          風聲JS菜單樹,程序基于JavaScript/XHTML/CSS標準實現。支持豐富的功能/表現定制:擁有表現和數據分離,單頁面可以應用多個無限級菜單樹,多達4種展開模式,風格樣式定義結構清晰、靈活又精細等等特性。

          Fonshen JS MenuTree

           Menu  

           Control.Treeview 

          采用Mootools開發的樹形菜單控件。支持通過Ajax動態獲取節點,設置默認選中某些節點。

          Control.Treeview

           Mootools  

           Folder Tree 

          文件夾樹形控件。支持利用拖放(drag and drop)操作來重新排序節點,利用Ajax更新節點。

          Folder Tree

          posted @ 2014-06-11 08:36 歐陽良才 閱讀(385) | 評論 (0)編輯 收藏

          JavaScript 分頁

               摘要: JavaScript 分頁  閱讀全文

          posted @ 2012-08-08 14:55 歐陽良才 閱讀(338) | 評論 (0)編輯 收藏

          jQUery 常用實例

          參考:  http://kb.cnblogs.com/page/152693/

          1. 如何創建嵌套的過濾器
          //允許你減少集合中的匹配元素的過濾器,  
          //只剩下那些與給定的選擇器匹配的部分。在這種情況下,  
          //查詢刪除了任何沒(:not)有(:has)  
          //包含class為“selected”(.selected)的子節點。  
          .filter(":not(:has(.selected))") 

            2. 如何重用元素搜索

          var allItems = $("div.item");  
          var keepList = $("div#container1 div.item");  
          //現在你可以繼續使用這些jQuery對象來工作了。例如,  
          //基于復選框裁剪“keep list”,復選框的名稱  
          //符合
          <DIV>class names:x
          $(formToLookAt + " input:checked").each(function() {  
              keepList = keepList.filter("." + $(this).attr("name"));  
          });  
          </DIV> 

            3. 任何使用has()來檢查某個元素是否包含某個類或是元素

          //jQuery 1.4.*包含了對這一has方法的支持。該方法找出  
          //某個元素是否包含了其他另一個元素類或是其他任何的  
          //你正在查找并要在其之上進行操作的東東。  
          $("input").has(".email").addClass("email_icon"); 

            4. 如何使用jQuery來切換樣式表

          //找出你希望切換的媒體類型(media-type),然后把href設置成新的樣式表。  
          $('link[media='screen']').attr('href', 'Alternative.css');  

            5. 如何限制選擇范圍(基于優化目的)

          //盡可能使用標簽名來作為類名的前綴,  
          //這樣jQuery就不需要花費更多的時間來搜索  
          //你想要的元素。還要記住的一點是,  
          //針對于你的頁面上的元素的操作越具體化,  
          //就越能降低執行和搜索的時間。  
          var in_stock = $('#shopping_cart_items input.is_in_stock');
          <ul id="shopping_cart_items">
           <li><input type="radio" value="Item-X" name="item" class="is_in_stock" />Item X</li>
           <li><input type="radio" value="Item-Y" name="item" class="3-5_days" />Item Y</li>
           <li><input type="radio" value="Item-Z" name="item" class="unknown" />Item Z</li>
          </ul> 

            6. 如何正確地使用ToggleClass

          //切換(toggle)類允許你根據某個類的  
          //是否存在來添加或是刪除該類。  
          //這種情況下有些開發者使用:  
          a.hasClass('blueButton') ? a.removeClass('blueButton') : a.addClass('blueButton');
          //toggleClass允許你使用下面的語句來很容易地做到這一點  
          a.toggleClass('blueButton'); 

            7. 如何設置IE特有的功能

          if ($.browser.msie) {
           // Internet Explorer其實不那么好用  
          } 

            8. 如何使用jQuery來代替一個元素

          $('#thatdiv').replaceWith('fnuh'); 

            9. 如何驗證某個元素是否為空

          if ($('#keks').html()) {
           //什么都沒有找到;  
          } 

            10. 如何從一個未排序的集合中找出某個元素的索引號

          $("ul > li").click(function () {
           var index = $(this).prevAll().length;
          }); 

            11. 如何把函數綁定到事件上

          $('#foo').bind('click', function () {
           alert('User clicked on "foo."');
          }); 

            12. 如何追加或是添加html到元素中

          $('#lal').append('sometext'); 

            13. 在創建元素時,如何使用對象字面量(literal)來定義屬性

          var e = $("", { href: "#", class: "a-class another-class", title: "..." }); 

            14. 如何使用多個屬性來進行過濾

          //在使用許多相類似的有著不同類型的input元素時,  
          //這種基于精確度的方法很有用  
          var elements = $('#someid input[type=sometype][value=somevalue]').get(); 

            15. 如何使用jQuery來預加載圖像

          jQuery.preloadImages = function () {
           for (var i = 0; i < arguments.length; i++) {
               $("<img />").attr('src', arguments[i]);
           }
          };
          //用法  
          $.preloadImages('image1.gif', '/path/to/image2.png', 'some/image3.jpg'); 

            16. 如何為任何與選擇器相匹配的元素設置事件處理程序

          $('button.someClass').live('click', someFunction);
          //注意,在jQuery 1.4.2中,delegate和undelegate選項  
          //被引入代替live,因為它們提供了更好的上下文支持  
          //例如,就table來說,以前你會用  
          //.live()  
          $("table").each(function () {
           $("td", this).live("hover", function () {
               $(this).toggleClass("hover");
           });
          });
          //現在用  
          $("table").delegate("td", "hover", function () {
           $(this).toggleClass("hover");
          }); 

            17. 如何找到一個已經被選中的option元素

          $('#someElement').find('option:selected'); 

            18. 如何隱藏一個包含了某個值文本的元素

          $("p.value:contains('thetextvalue')").hide(); 

            19. 如果自動滾動到頁面中的某區域

          jQuery.fn.autoscroll = function(selector) {  
           $('html,body').animate(  
               {scrollTop: $(selector).offset().top},  
               500  
           };  
          }  
          //然后像這樣來滾動到你希望去到的class/area上。  
          $('.area_name').autoscroll();  

            20. 如何檢測各種瀏覽器

          if( $.browser.safari)  //檢測Safari
          if ($.browser.msie && $.browser.version > 6 )//檢測IE6及之后版本
          if ($.browser.msie && $.browser.version <= 6 )  //檢測IE6及之前版本
          if ($.browser.mozilla && $.browser.version >= '1.8' )   //檢測FireFox 2及之后版本 

            21. 如何替換串中的詞

          var el = $('#id');    el.html(el.html().replace(/word/ig, '')); 

            22. 如何禁用右鍵單擊上下文菜單

          $(document).bind('contextmenu', function (e) {
           return false;
          }); 

            23. 如何定義一個定制的選擇器

          $.expr[':'].mycustomselector = function(element, index, meta, stack){  
           // element- 一個DOM元素  
           // index – 棧中的當前循環索引  
           // meta – 有關選擇器的元數據  
           // stack – 要循環的所有元素的棧  
           // 如果包含了當前元素就返回true  
           // 如果不包含當前元素就返回false };  
           // 定制選擇器的用法:  
           $('.someClasses:test').doSomething(); 

            24. 如何檢查某個元素是否存在

          if ($('#someDiv').length) {
           //你妹,終于找到了
          } 

            25. 如何使用jQuery來檢測右鍵和左鍵的鼠標單擊兩種情況

          $("#someelement").live('click', function (e) {
           if ((!$.browser.msie && e.button == 0) || ($.browser.msie && e.button == 1)) {
               alert("Left Mouse Button Clicked");
           } else if (e.button == 2) {
               alert("Right Mouse Button Clicked");
           }
          }); 

            26. 如何顯示或是刪除input域中的默認值

          //這段代碼展示了在用戶未輸入值時,  
          //如何在文本類型的input域中保留  
          //一個默認值  
          wap_val = [];
          $(".swap").each(function (i) {
           wap_val[i] = $(this).val();
           $(this).focusin(function () {
               if ($(this).val() == swap_val[i]) {
           $(this).val("");
               }
           }).focusout(function () {
               if ($.trim($(this).val()) == "") {
           $(this).val(swap_val[i]);
               }
           });
          }); 

            27. 如何在一段時間之后自動隱藏或關閉元素(支持1.4版本)

          //這是1.3.2中我們使用setTimeout來實現的方式  
          setTimeout(function () {
           $('.mydiv').hide('blind', {}, 500)
          }, 5000);
          //而這是在1.4中可以使用delay()這一功能來實現的方式(這很像是休眠)  
          $(".mydiv").delay(5000).hide('blind', {}, 500); 

            28. 如何把已創建的元素動態地添加到DOM中

          var newDiv = $('');
          newDiv.attr('id', 'myNewDiv').appendTo('body'); 

            29. 如何限制“Text-Area”域中的字符的個數

          jQuery.fn.maxLength = function (max) {
           this.each(function () {
               var type = this.tagName.toLowerCase();
               var inputType = this.type ? this.type.toLowerCase() : null;
               if (type == "input" && inputType == "text" || inputType == "password") {
           this.maxLength = max;
               }
               else if (type == "textarea") {
           this.onkeypress = function (e) {
            var ob = e || event;
            var keyCode = ob.keyCode;
            var hasSelection = document.selection
                ? document.selection.createRange().text.length > 0
                : this.selectionStart != this.selectionEnd;
            return !(this.value.length >= max
                && (keyCode > 50 || keyCode == 32 || keyCode == 0 || keyCode == 13)
                && !ob.ctrlKey && !ob.altKey && !hasSelection);
           };
           this.onkeyup = function () {
            if (this.value.length > max) {
                this.value = this.value.substring(0, max);
            }
           };
               }
           });
          };
          //用法  
          $('#mytextarea').maxLength(500); 

            30. 如何為函數創建一個基本的測試

          //把測試單獨放在模塊中  
          module("Module B");
          test("some other test", function () {
           //指明測試內部預期有多少要運行的斷言  
           expect(2);
           //一個比較斷言,相當于JUnit的assertEquals  
           equals(true, false, "failing test");
           equals(true, true, "passing test");
          }); 

            31. 如何在jQuery中克隆一個元素

          var cloned = $('#somediv').clone(); 

            32. 在jQuery中如何測試某個元素是否可見

          if ($(element).is(':visible') == 'true') {
           //該元素是可見的  
          } 

            33. 如何把一個元素放在屏幕的中心位置

          jQuery.fn.center = function () {
           this.css('position', 'absolute');
           this.css('top', ($(window).height() - this.height()) 
                 / +$(window).scrollTop() + 'px');
           this.css('left', ($(window).width() - this.width()) 
                 / 2 + $(window).scrollLeft() + 'px');
           return this;
          }
          //這樣來使用上面的函數:  
          $(element).center(); 

            34. 如何把有著某個特定名稱的所有元素的值都放到一個數組中

          var arrInputValues = new Array();
          $("input[name='table[]']").each(function () {
           arrInputValues.push($(this).val());
          }); 

            35. 如何從元素中除去HTML

          (function ($) {
           $.fn.stripHtml = function () {
               var regexp = /<("[^"]*"|'[^']*'|[^'">])*>/gi;
               this.each(function () {
           $(this).html($(this).html().replace(regexp, ""));
               });
               return $(this);
           }
          })(jQuery);
          //用法:  
          $('p').stripHtml(); 

            36. 如何使用closest來取得父元素

          $('#searchBox').closest('div'); 

            37. 如何使用Firebug和Firefox來記錄jQuery事件日志

          // 允許鏈式日志記錄  
          // 用法:  
          $('#someDiv').hide().log('div hidden').addClass('someClass');
          jQuery.log = jQuery.fn.log = function (msg) {
           if (console) {
               console.log("%s: %o", msg, this);
           }
           return this;
          }; 

            38. 如何強制在彈出窗口中打開鏈接

          jQuery('a.popup').live('click', function () {
           newwindow = window.open($(this).attr('href'), '', 'height=200,width=150');
           if (window.focus) {
               newwindow.focus();
           }
           return false;
          }); 

            39. 如何強制在新的選項卡中打開鏈接

          jQuery('a.newTab').live('click', function () {
           newwindow = window.open($(this).href);
           jQuery(this).target = "_blank";
           return false;
          }); 

            40. 在jQuery中如何使用.siblings()來選擇同輩元素

          // 不這樣做  
          $('#nav li').click(function () {
           $('#nav li').removeClass('active');
           $(this).addClass('active');
          });
          //替代做法是  
          $('#nav li').click(function () {
           $(this).addClass('active').siblings().removeClass('active');
          }); 

            41. 如何切換頁面上的所有復選框

          var tog = false;
          // 或者為true,如果它們在加載時為被選中狀態的話  
          $('a').click(function () {
           $("input[type=checkbox]").attr("checked", !tog);
           tog = !tog;
          }); 

            42. 如何基于一些輸入文本來過濾一個元素列表

          //如果元素的值和輸入的文本相匹配的話  
          //該元素將被返回  
          $('.someClass').filter(function () {
           return $(this).attr('value') == $('input#someId').val();
          }) 

            43. 如何獲得鼠標墊光標位置x和y

          $(document).ready(function () {
           $(document).mousemove(function (e) {
               $('#XY').html("X Axis : " + e.pageX + " | Y Axis " + e.pageY);
           });
          }); 

            44. 如何把整個的列表元素(List Element,LI)變成可點擊的

          $("ul li").click(function () {
           window.location = $(this).find("a").attr("href");
           return false;
          });
          <ul>
           <li><a href="#">Link 1</a></li>
           <li><a href="#">Link 2</a></li>
           <li><a href="#">Link 3</a></li>
           <li><a href="#">Link 4</a></li>
          </ul> 

            45. 如何使用jQuery來解析XML(基本的例子)

          function parseXml(xml) {
           //找到每個Tutorial并打印出author  
           $(xml).find("Tutorial").each(function () {
               $("#output").append($(this).attr("author") + "");
           });
          } 

            46. 如何檢查圖像是否已經被完全加載進來

          $('#theImage').attr('src', 'image.jpg').load(function () {
           alert('This Image Has Been Loaded');
          }); 

            47. 如何使用jQuery來為事件指定命名空間

          //事件可以這樣綁定命名空間  
          $('input').bind('blur.validation', function (e) {
           // ...  
          });
          //data方法也接受命名空間  
          $('input').data('validation.isValid', true); 

            48. 如何檢查cookie是否啟用

          var dt = new Date();
          dt.setSeconds(dt.getSeconds() + 60);
          document.cookie = "cookietest=1; expires=" + dt.toGMTString();
          var cookiesEnabled = document.cookie.indexOf("cookietest=") != -1;
          if (!cookiesEnabled) {
           //沒有啟用cookie  
          } 

            49. 如何讓cookie過期

          var date = new Date();
          date.setTime(date.getTime() + (x * 60 * 1000));
          $.cookie('example', 'foo', { expires: date }); 

            50. 如何使用一個可點擊的鏈接來替換頁面中任何的URL

          $.fn.replaceUrl = function () {
           var regexp = 
               /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;
           this.each(function () {
               $(this).html(
           $(this).html().replace(regexp, '<a href="$1">$1</a>')
               );
           });
           return $(this);
          }
          //用法   
          $('p').replaceUrl(); 

          posted @ 2012-08-04 13:57 歐陽良才 閱讀(3139) | 評論 (0)編輯 收藏

          利用iframe實現無刷新提交表單

          <iframe id="main" name="main" width="0%" height="0%"> </iframe>
          <form target="main" id="form1" action="ajax.do">
              <input name="operate" value="oop" type="hidden">
              <input id="abc" name="abc" type="text">
              <input type="submit" value="提交" >
          </form>

          參考 :http://hi.baidu.com/kill_me/item/3cd51f368ea3acf2e6bb7a30

          posted @ 2012-08-04 09:54 歐陽良才 閱讀(685) | 評論 (1)編輯 收藏

          仿163 網盤無刷新都文件上傳系統

          無刷新文件上傳 cloudgamer博客園
          http://www.cnblogs.com/cloudgamer/archive/2008/10/20/1314766.html

          posted @ 2012-07-20 11:30 歐陽良才 閱讀(324) | 評論 (0)編輯 收藏

          web頁面訪問ftp上的圖片

          <img alt="" src="ftp://zxdit:zxdit@192.168.18.221/chuangkou/Temporary/photo/pic/pic/Bluehills.jpg" style="width: 330px;height: 400px;cursor: pointer;">

          posted @ 2012-07-03 14:30 歐陽良才 閱讀(891) | 評論 (0)編輯 收藏

          css 好看的動態菜單效果

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML>
              <HEAD>
                  <TITLE> New Document </TITLE>
                  <META NAME="Generator" CONTENT="EditPlus">
                  <META NAME="Author" CONTENT="">
                  <META NAME="Keywords" CONTENT="">
                  <META NAME="Description" CONTENT="">
                  body{
                  background-color:#c1daff;
                  }
                  #navigation{
                  width:200px;
                  font-family:Arial;
                  }
                  #navigation ul{
                  font-family:Arial;
                  font-size:13px;
                  color:#00458c;
                  list-style-type:none;/* 不顯示項目符號 */
                  margin:0px;
                  padding:0px;
                  }
                  #navigation li{
                  border-bottom:1px solid #ed9f9f;
                  }
                  #navigation li a{
                  display:block;/* 按塊顯示*/
                  padding:5px 5px 5px 0.5em;
                  text-decoration:none;
                  border-left:12px solid #711515;
                  border-right:1px solid #711515;
                  }
                  #navigation li a:link{
                  background-color:#c11136;
                  color:#ffffff;
                  }
                  #navigation li a:visited{
                  background-color:#c11136;
                  color:#ffffff;
                  }
                  #navigation li a:hover{
                  background-color:#990020;
                  color:#ffff00;
                  }
                  #navigation2{
                  font-family:Arial;
                  margin-top:20px;
                  }
                  #navigation2 ul{
                  font-family:Arial;
                  font-size:13px;
                  color:#00458c;
                  margin:0px;
                  padding:0px;
                  }
                  #navigation2 li{
                  float:left;
                  }
                  #navigation2 li a{
                  font-family:Arial;
                  font-size:13px;
                  color:#00458c;
                  display:block;/* 按塊顯示*/
                  padding:3px 6px 3px 6px;
                  text-decoration:none;
                  border:1px solid #711515;
                  margin:2px;
                  }
                  #navigation2 li a:link{
                  background-color:#039803;
                  color:#ffffff;
                  }
                  #navigation2 li a:visited{
                  background-color:#039803;
                  color:#ffffff;
                  }
                  #navigation2 li a:hover{
                  background-color:#035803;
                  color:#ffff00;
                  }
              </HEAD>
              <BODY>
                  <div id="page">
                  <div id="navigation">
                  <ul>
                      <li><a href="#">自由泳</a></li>
                      <li><a href="javascript:">仰泳</a></li>
                      <li><a href="#">蛙泳</a></li>
                      <li><a href="#">蝶泳</a></li>
                      <li><a href="#">個人混合泳</a></li>
                      <li><a href="#">自由泳接力</a></li>
                  </ul>
                  </div>
                  <div id="navigation2">
                  <ul>
                      <li><a href="#">HOME</a></li>
                      <li><a href="#">My Bolg</a></li>
                      <li><a href="#">Firends</a></li>
                      <li><a href="#">Next Staition</a></li>
                      <li><a href="#">Contact Me</a></li>
                  </ul>
                  </div>
                  </div>
              </BODY>
          </HTML>

          posted @ 2012-05-10 09:33 歐陽良才 閱讀(739) | 評論 (0)編輯 收藏

          下拉框 onchange 事件

          onchange="deptchange(this.options[this.selectedIndex])"

          posted @ 2012-04-18 13:48 歐陽良才 閱讀(396) | 評論 (0)編輯 收藏

          簡單的 jQuery 操作復選框

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML>
           <HEAD>
            <TITLE> 復選框數 </TITLE>
            <META NAME="Generator" CONTENT="EditPlus">
            <META NAME="Author" CONTENT="">
            <META NAME="Keywords" CONTENT="">
            <META NAME="Description" CONTENT="">
            <script src="js/jquery-1.4.2.js"></script>
            <script type="text/javascript">
            $(document).ready(function(){
             $(".paterBtn").click(function(){
               var bool=$(".paterBtn").attr("checked");
              $("[name='checkbox']").attr("checked",bool);
             });
             
             
             $("[name='checkbox']").click(function(){
                var i=0;
              $("[name='checkbox'][checked]").each(function(){
               i+= 1;

              });
              alert(i);
              $(".paterBtn").attr("checked","checked");
              if($(".paterBtn").attr("checked")&&i==0){
               $(".paterBtn").removeAttr("checked");
              }
             });
            });
            </script>
           </HEAD>

           <BODY>

              <div>
            <ul id="tree" class="treeview filetree">
             <li>
               <input type="checkbox" name="1" id="1" class="paterBtn" value="check1"/>
               <span>sk china</span>

               <ul>
               <li>
                 <input type="checkbox" name="checkbox" value="check2" class="1"/>
                 <span>IT研發部</span>
               </li>
               <li>
                 <input type="checkbox" name="checkbox" value="check3"  class="1"/>
                 <span>聊男部</span>
               </li>
               <li>
                 <input type="checkbox" name="checkbox" value="check4" class="1"/>
                 <span>研究部</span>
               </li>
               </ul>
             </li>
             
            </ul>
           </div>
           </BODY>
          </HTML>

          posted @ 2012-04-07 16:35 歐陽良才 閱讀(335) | 評論 (0)編輯 收藏

          SSi(spring+struts_ibatis)多數據庫連接解決方案

               摘要: 1。創建配置文件 jdbc.properties Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://192.168.99.1...  閱讀全文

          posted @ 2012-04-07 15:52 歐陽良才 閱讀(1637) | 評論 (0)編輯 收藏

          jQuery 學習

          鏈接網址  http://www.jquery001.com/how-to-write-jquery-plugin.html

          posted @ 2012-03-27 14:48 歐陽良才 閱讀(225) | 評論 (0)編輯 收藏

          關于ibatis

          1.關于ibatis

          ibatis是一種半自動化的ORM框架
          說明:此文章來自 月月鳥0820  http://www.cnblogs.com/java-pan/archive/2012/03/21/ibatis.html

           

          2.項目環境介紹

          System:WIN7 JDK:編譯1.4 開發1.5  數據庫:oracle的dept表

          image

           

          3.文件介紹

          Dept.java  一個javabean

          IDeptSV.java  一個接口,用來聲明增、刪、改、查的方法

          DeptSVImpl.java 對IDeptSV接口的實現,主要包括獲得SqlMapClient對象以及方法體的實現

          ShowDept.java 用來測試的方法.通過ECS插件把查詢的結果寫入到ibatis.html文件中

          Dept.xml 實體和數據庫表對應的映射文件,主要是寫增、刪、改、查的sql語句

          SqlMap.properties 數據庫配置文件,以鍵值對的形式聲明數據庫的driver、url、username、password

          SqlMapConfig.xml  ibatis的核心配置文件,主要是引入數據庫配置文件,配置數據庫連接相關的屬性;引入實體類和數據庫表的映射文件(本次用到的只是最簡單的配置文件)

           

          4.下載jar包

          ibatis-2.3.4.jar ibatis的jar包

          classes12.jar oracle數據庫的驅動包

          ecs-1.4.2.jar ECS插件包,為了鞏固這個插件的使用故用此插件顯示查詢結果

          三個jar包壓縮成了一個文件,下載路徑如下:http://files.cnblogs.com/java-pan/jar.rar

           

          5.關于class&method的介紹

          Reader

          java.io.Reader

           

          SqlMapClientBuilder

          com.ibatis.sqlmap.client.SqlMapClientBuilder

           

          SqlMapClient

          com.ibatis.sqlmap.client.SqlMapClient

           

          關于ECS插件相關類的介紹請見文章

          http://www.cnblogs.com/java-pan/archive/2012/01/08/ecs.html

           

           

          start

          新建web project項目Ibatis,導入jar包(數據庫驅動包,ibatis包,ECS的jar包),各個文件的代碼如下:

          1.Dept.java

          Dept.java
           1 package ibatis;
          2
          3 /**
          4 *Module: Dept.java
          5 *Description: 使用orcle自帶的部門表dept--javabean
          6 *Company:
          7 *Author: ptp
          8 *Date: Mar 19, 2012
          9 */
          10 public class Dept {
          11 // 構造方法
          12 public Dept() {
          13
          14 }
          15
          16 private int deptNo;
          17 private String dName;
          18 private String loc;
          19
          20 public int getDeptNo() {
          21 return deptNo;
          22 }
          23
          24 public void setDeptNo(int deptNo) {
          25 this.deptNo = deptNo;
          26 }
          27
          28 public String getDName() {
          29 return dName;
          30 }
          31
          32 public void setDName(String name) {
          33 dName = name;
          34 }
          35
          36 public String getLoc() {
          37 return loc;
          38 }
          39
          40 public void setLoc(String loc) {
          41 this.loc = loc;
          42 }
          43 }

           

          2.IDeptSV.java

          IDeptSV.java
           1 package ibatis;
          2
          3 import java.util.List;
          4
          5 /**
          6 *Module: IDeptSV.java
          7 *Description: CRUD的接口類
          8 *Company:
          9 *Author: ptp
          10 *Date: Mar 19, 2012
          11 */
          12 public interface IDeptSV {
          13
          14 // 添加
          15 public void addDept(Dept dept);
          16
          17 //添加數據 主鍵自動生成
          18 public void addDeptSequenct(Dept dept);
          19
          20 // 刪除
          21 public void delByDeptNo(int deptNo);
          22
          23 // 查詢 所有記錄
          24 public List queryDept();
          25
          26 // 根據條件查詢
          27 public Dept queryByDeptNo(int deptNo);
          28
          29 //模糊查詢 按照DNAME查詢
          30 public List queryByName(String dName);
          31
          32 // 修改
          33 public void updateDept(Dept dept);
          34
          35 }

           

          3.DeptSVImpl.java

          DeptSVImpl.java
            1 package ibatis;
          2
          3 import java.io.IOException;
          4 import java.io.Reader;
          5 import java.sql.SQLException;
          6 import java.util.List;
          7 import com.ibatis.common.resources.Resources;
          8 import com.ibatis.sqlmap.client.SqlMapClient;
          9 import com.ibatis.sqlmap.client.SqlMapClientBuilder;
          10 /**
          11 * Module: DeptSVImpl.java
          12 * Description: CRUD的實現類
          13 * Company:
          14 * Author: ptp
          15 * Date: Mar 19, 2012
          16 */
          17 public class DeptSVImpl implements IDeptSV {
          18 // 定義ibatis映射文件的位置
          19 private static String resource = "ibatis/SqlMapConfig.xml";
          20 private static SqlMapClient sqlMapClient = null;
          21 static {
          22 try {
          23 Reader reader = Resources.getResourceAsReader(resource);
          24 sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
          25 reader.close();
          26 // 設置為自動提交
          27 // System.out.println(sqlMapClient.getDataSource().getConnection()
          28 // .getAutoCommit());
          29 } catch (IOException e) {
          30 e.printStackTrace();
          31 }
          32 }
          33
          34 /*
          35 * (non-Javadoc) 添加記錄
          36 */
          37 public void addDept(Dept dept) {
          38 try {
          39 sqlMapClient.startTransaction();// 開啟事務
          40 sqlMapClient.insert("insertDept", dept);
          41 sqlMapClient.commitTransaction();// 提交事務
          42 System.out.println("******成功添加1條記錄******");
          43 } catch (SQLException e) {
          44 try {
          45 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          46 } catch (SQLException e1) {
          47 e1.printStackTrace();
          48 }
          49 e.printStackTrace();
          50 } finally {
          51 try {
          52 sqlMapClient.endTransaction();// 結束事務
          53 } catch (SQLException e) {
          54 e.printStackTrace();
          55 }
          56 }
          57 }
          58
          59 /*
          60 * (non-Javadoc) 刪除記錄 一次只刪除一條記錄
          61 */
          62 public void delByDeptNo(int deptNo) {
          63 try {
          64 sqlMapClient.startTransaction();// 開始事務
          65 sqlMapClient.delete("deleteDeptById", new Integer(deptNo));
          66 sqlMapClient.commitTransaction();// 提交事務
          67 System.out.println("******成功刪除1條記錄******");
          68 } catch (SQLException e) {
          69 try {
          70 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          71 } catch (SQLException e1) {
          72 e1.printStackTrace();
          73 }
          74 e.printStackTrace();
          75 } finally {
          76 try {
          77 sqlMapClient.endTransaction();// 結束事務
          78 } catch (SQLException e) {
          79 e.printStackTrace();
          80 }
          81 }
          82 }
          83
          84 /*
          85 * (non-Javadoc) 查詢 查詢所有記錄
          86 */
          87 public List queryDept() {
          88 List rows = null;
          89 try {
          90 sqlMapClient.startTransaction();// 開始事務
          91 rows = sqlMapClient.queryForList("selectAllDept");
          92 sqlMapClient.commitTransaction();// 提交事務
          93 System.out.println("******成功查詢所有記錄******");
          94 } catch (SQLException e) {
          95 try {
          96 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          97 } catch (SQLException e1) {
          98 e1.printStackTrace();
          99 }
          100 e.printStackTrace();
          101 } finally {
          102 try {
          103 sqlMapClient.endTransaction();// 結束事務
          104 } catch (SQLException e) {
          105 e.printStackTrace();
          106 }
          107 }
          108 return rows;
          109 }
          110
          111 /*
          112 * (non-Javadoc) 查詢 查詢一條記錄
          113 */
          114 public Dept queryByDeptNo(int deptNo) {
          115 Dept dept = null;
          116 try {
          117 sqlMapClient.startTransaction();// 開始事務
          118 dept = (Dept) sqlMapClient.queryForObject("selectById",
          119 new Integer(deptNo));
          120 sqlMapClient.commitTransaction();// 提交事務
          121 System.out.println("******成功查詢1條記錄******");
          122 } catch (SQLException e) {
          123 try {
          124 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          125 } catch (SQLException e1) {
          126 e1.printStackTrace();
          127 }
          128 e.printStackTrace();
          129 } finally {
          130 try {
          131 sqlMapClient.endTransaction();// 結束事務
          132 } catch (SQLException e) {
          133 e.printStackTrace();
          134 }
          135 }
          136 return dept;
          137 }
          138
          139 /*
          140 * (non-Javadoc) 更新 一次只更新一條記錄
          141 */
          142 public void updateDept(Dept dept) {
          143 try {
          144 sqlMapClient.startTransaction();// 開始事務
          145 sqlMapClient.update("updateDeptById", dept);
          146 sqlMapClient.commitTransaction();// 提交事務
          147 System.out.println("******成功更新1條記錄******");
          148 } catch (SQLException e) {
          149 try {
          150 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          151 } catch (SQLException e1) {
          152 e1.printStackTrace();
          153 }
          154 e.printStackTrace();
          155 } finally {
          156 try {
          157 sqlMapClient.endTransaction();// 結束事務
          158 } catch (SQLException e) {
          159 e.printStackTrace();
          160 }
          161 }
          162 }
          163
          164 /*
          165 * (non-Javadoc) 模糊查詢
          166 */
          167 public List queryByName(String name) {
          168 List depts = null;
          169 try {
          170 sqlMapClient.startTransaction();// 開始事務
          171 depts = sqlMapClient.queryForList("selectByName", name);
          172 sqlMapClient.commitTransaction();// 提交事務
          173 System.out.println("******模糊查詢成功******");
          174 } catch (SQLException e) {
          175 try {
          176 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          177 } catch (SQLException e1) {
          178 e1.printStackTrace();
          179 }
          180 e.printStackTrace();
          181 } finally {
          182 try {
          183 sqlMapClient.endTransaction();// 結束事務
          184 } catch (SQLException e) {
          185 e.printStackTrace();
          186 }
          187 }
          188 return depts;
          189 }
          190
          191 /*
          192 * (non-Javadoc)主鍵自動生成 添加記錄
          193 */
          194 public void addDeptSequenct(Dept dept) {
          195 try {
          196 sqlMapClient.startTransaction();// 開始事務
          197 sqlMapClient.insert("insertDeptBySequence", dept);
          198 sqlMapClient.commitTransaction();// 提交事務
          199 System.out.println("******成功添加1條記錄(主鍵自動生成)******");
          200 } catch (SQLException e) {
          201 try {
          202 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          203 } catch (SQLException e1) {
          204 e1.printStackTrace();
          205 }
          206 e.printStackTrace();
          207 } finally {
          208 try {
          209 sqlMapClient.endTransaction();// 結束事務
          210 } catch (SQLException e) {
          211 e.printStackTrace();
          212 }
          213 }
          214 }
          }

          posted @ 2012-03-23 13:45 歐陽良才 閱讀(567) | 評論 (0)編輯 收藏

          struts2 if標簽

          文章來自他人空間 我自己添加了一點



          <s:if test="deptType==\"1\"" >下屬</s:if><s:else>直屬</s:else>(如果是數字類型可以 通過)

          <s:if test="{#deptType == '1'}" >下屬</s:if><s:else>直屬</s:else>(匹配的類型是char型)



          前提:數據庫中的類型是varchar,pojo中對應的字段的類型也是string。

          如果數據庫中的數據是整數字符串,例如1、2、3等,那么使用==

          <s:if test="deptType==1" >下屬 </s:if> <s:else>直屬 </s:else>

          如果數據庫中的數據是字符串,aa、bb、cc等等

          那么就要使用 <s:if test="deptType=='aa'>下屬aa </s:if> <s:else>直屬 </s:else>  

          如果數據庫中既有數字字符串也普通的字符串,那么 <s:if test="deptType=='aa'  ¦ ¦ deptType=='1'" >下屬aa </s:if> <s:else>直屬 </s:else> 無法正常的解析,

          <s:if test="deptType eq 'aa" >下屬</s:if><s:else>直屬</s:else>(字符串用 eq  通過)




          如果sex是int類型,那么直接比較就可以了

             1.             <s:if test="sex==1">男</s:if>  
             2.             <s:else>女</s:else>

          posted @ 2012-03-23 10:02 歐陽良才 閱讀(1830) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 和田县| 旬邑县| 黎城县| 吴桥县| 肃宁县| 灵川县| 甘德县| 阳泉市| 乡宁县| 衡东县| 浠水县| 阿合奇县| 庆安县| 林芝县| 右玉县| 出国| 措勤县| 天等县| 桐庐县| 阜城县| 白河县| 濮阳县| 平乐县| 苏尼特右旗| 萨嘎县| 正阳县| 花莲市| 濮阳县| 双辽市| 沙坪坝区| 商河县| 岑溪市| 外汇| 泰州市| 洛阳市| 咸丰县| 岳池县| 湄潭县| 万宁市| 瓮安县| 灌阳县|