<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    千山鳥飛絕 萬徑人蹤滅
    勤練內功,不斷實踐招數。爭取早日成為武林高手

    2009年9月3日

    在實現程序的修改模塊時,要在頁面端檢查用戶是否修改過數據,以便提醒用戶及時保存修改后的數據。
    實現要求:
      判斷用戶是否修改了輸入的內容,要能判斷input中的checkbox,text,radio等,不知道會多少個input,也不知道input的ID和name,要在客戶端判斷是否修改,不能產

    生提交。還要同時滿足IE和firefox兩種環境。也要支持master和content頁的使用。
    解決方案;
      處理思路:在頁面加載時記錄所有的input的值或狀態,如果要求在用戶進行修改操作時立即調整控件狀態,則在數據區div上的onclick和onkeypress事件里調用檢查數據

    是否改變的函數,并設置相應控件的狀態(用ha_setch())。如果是在提交或用戶手動控制檢查過程時,則在相應的操作事件中調用檢查數據是否改變(例在button的onclick

    ()中使用ha_checkin()控制提交)。
       以下是實現代碼
    var ha_last=new Array;//定義一個全局的空對象,存放所有的初始值。
    function ha_get()//讀取初始值
    { var ha_input = document.getElementsByTagName("input");
    for (var i=0;i<ha_input.length;i++)
    {
    if (ha_input[i].type=="password"){ ha_last.push(ha_input[i].value);}//根本頁面需要設置type的值和對象屬性
    if (ha_input[i].type=="radio") {ha_last.push(ha_input[i].checked);}//要保證檢查的范圍是否準確
    }
    }
    window.onload=ha_get;//綁定讀取初始值的函數
    function ha_checkin()//檢查新的輸入值和初始值是否相等。返回判斷結果。true為沒有發生修改,false為有修改。
    { var ha_now=new Array;
    var ha_input = document.getElementsByTagName("input");
    for (var i=0;i<ha_input.length;i++)
    {
    if (ha_input[i].type=="password"){ ha_now.push(ha_input[i].value);}//根本頁面需要設置type的值和對象屬性。
    if (ha_input[i].type=="radio") {ha_now.push(ha_input[i].checked);}//也要保證和ha_get()中檢查的標簽相一致
    }
    if (ha_now.toString()==ha_last.toString())//沒修改
    {return true;}
    else//有修改
    {return false;}
    }
    function ha_setch(){//設置相應的控件狀態
    if (ha_checkin())//沒有變化
       //改變控件的顯示和功能狀態
    else//有變化
       //改變控件的顯示和功能狀態
    }


    做了適當的修改。最后在button里面onclick直接調用

     

         var ha_last=new Array;//定義一個全局的空對象,存放所有的初始值。
                function ha_get()//讀取初始值
                {
                    var ha_input = document.getElementsByTagName("input");
                    ha_last.push($("#select").val());//采用jquery獲取select 選擇的值
                    for (var i=0;i<ha_input.length;i++)
                    {
                        if (ha_input[i].type=="text"){ ha_last.push(ha_input[i].value);}//根本頁面需要設置type的值和對象屬性
                    }
                }
                window.onload=ha_get;//綁定讀取初始值的函數
                function ha_checkin(action)//檢查新的輸入值和初始值是否相等。返回判斷結果。true為沒有發生修改,false為有修改。
                {
                         if(action=="update"){
                        var ha_now=new Array;
                        var ha_input = document.getElementsByTagName("input");
                        ha_now.push($("#select").val());
                       
                        for (var i=0;i<ha_input.length;i++)
                        {
                            if (ha_input[i].type=="text"){ ha_now.push(ha_input[i].value);}//根本頁面需要設置type的值和對象屬性。
                        }
                        if (ha_now.toString()==ha_last.toString())//沒修改
                        {
                            alert("沒有修改");
                            return false;
                        }
                        else//有修改
                        {
                            //  return true;
                        }
                    }
                }

     


     
            

     

     

    posted @ 2009-11-23 17:36 笑口常開、財源滾滾來! 閱讀(559) | 評論 (0)編輯 收藏
     

    來自:http://www.javaeye.com/topic/304818

    jQuery 是我最喜歡的一個Javascript框架,下表中包含了240+可以為jQuery愛好者們使用的插件。我斷定一定還有下表沒有包括的,如果你還知道其他的好東西,歡迎與大家分享。

    文件上傳

    Ajax File Upload
    jQUploader
    Multiple File Upload plugin
    jQuery File Style
    Styling an input type file
    Progress Bar Plugin

    表單驗證

    jQuery Validation
    Auto Help
    Simple jQuery form validation
    jQuery XAV - form validations
    jQuery AlphaNumeric
    Masked Input
    TypeWatch Plugin
    Text limiter for form fields
    Ajax Username Check with jQuery

    Form - Select Box stuff

    jQuery Combobox
    jQuery controlled dependent (or Cascadign) Select List
    Multiple Selects
    Select box manipulation
    Select Combo Plugin
    jQuery - LinkedSelect
    Auto-populate multiple select boxes
    Choose Plugin (Select Replacement)

    表單基本、輸入與、復選框等

    jQuery Form Plugin
    jQuery-Form
    jLook Nice Forms
    jNice
    Ping Plugin
    Toggle Form Text
    ToggleVal
    jQuery Field Plugin
    jQuery Form’n Field plugin
    jQuery Checkbox manipulation
    jTagging
    jQuery labelcheck
    Overlabel
    3 state radio buttons
    ShiftCheckbox jQuery Plugin
    Watermark Input
    jQuery Checkbox (checkboxes with imags)
    jQuery SpinButton Control
    jQuery Ajax Form Builder
    jQuery Focus Fields
    jQuery Time Entry

    時間,日期和顏色選取器

    jQuery UI Datepicker
    jQuery date picker plugin
    jQuery Time Picker
    Time Picker
    ClickPick
    TimePicker
    Farbtastic jQuery Color Picker Plugin
    Color Picker by intelliance.fr

    投票插件

    jQuery Star Rating Plugin
    jQuery Star Rater
    Content rater with asp.net, ajax and jQuery
    Half-Star Rating Plugin

    搜索插件

    Autocomplete Box
    jQuery Suggest
    jQuery Autocomplete
    jQuery Autocomplete Mod
    jQuery Autocomplete by AjaxDaddy
    jQuery Autocomplete Plugin with HTML formatting
    jQuery Autocompleter
    AutoCompleter (Tutorial with PHP&MySQL)
    quick Search jQuery Plugin

    編輯器

    jTagEditor
    WYMeditor
    jQuery jFrame
    Jeditable - edit in place plugin for jQuery
    jQuery editable
    jQuery Disable Text Select Plugin
    Edit in Place with Ajax using jQuery
    jQuery Plugin - Another In-Place Editor
    TableEditor
    tEditable - in place table editing for jQuery

    聲音,視頻,Flash, SVG等

    jMedia - accessible multi-media embedding
    JBEdit - Ajax online Video Editor
    jQuery MP3 Plugin
    jQuery Media Plugin
    jQuery Flash Plugin
    Embed QuickTime
    SVG Integration
    jQuery Multimedia Portfolio
    jQuery YouTube Plugin

    圖片

    ThickBox
    jQuery lightBox plugin
    jQuery FancyBox
    jQuery Multimedia Portfolio
    jQuery Image Strip
    jQuery slideViewer
    jQuery jqGalScroll 2.0
    jQuery - jqGalViewII
    jQuery - jqGalViewIII
    jQuery Photo Slider
    jQuery Thumbs - easily create thumbnails
    jQuery jQIR Image Replacement
    jCarousel Lite
    jQPanView
    jCarousel
    Interface Imagebox
    Image Gallery using jQuery, Interface & Reflactions
    simple jQuery Gallery
    jQuery Gallery Module
    EO Gallery
    jQuery ScrollShow
    jQuery Cycle Plugin
    jQuery Flickr
    jQuery Lazy Load Images Plugin
    Zoomi - Zoomable Thumbnails
    jQuery Crop - crop any image on the fly
    Image Reflection

    Google Map

    jQuery Plugin googlemaps
    jMaps jQuery Maps Framework
    jQmaps
    jQuery & Google Maps
    jQuery Maps Interface forr Google and Yahoo maps
    jQuery J Maps - by Tane Piper

    游戲

    Tetris with jQuery
    jQuery Chess
    Mad Libs Word Game
    jQuery Puzzle
    jQuery Solar System (not a game but awesome jQuery Stuff)
    jQuery Memory

    表格

    UI/Tablesorter
    jQuery ingrid
    jQuery Grid Plugin
    Table Filter - awesome!
    TableEditor
    jQuery Tree Tables
    Expandable “Detail” Table Rows
    Sortable Table ColdFusion Costum Tag with jQuery UI
    jQuery Bubble
    TableSorter
    Scrollable HTML Table
    jQuery column Manager Plugin
    jQuery tableHover Plugin
    jQuery columnHover Plugin
    jQuery Grid
    TableSorter plugin for jQuery
    tEditable - in place table editing for jQuery
    jQuery charToTable Plugin
    jQuery Grid Column Sizing
    jQuery Grid Row Sizing

    圖表

    Flot
    jQuery Wizard Plugin
    jQuery Chart Plugin
    Bar Chart
    Accessible Charts using Canvas and jQuery

    邊框,圓角,背景

    jQuery Corner
    jQuery Curvy Corner
    Nifty jQuery Corner
    Transparent Corners
    jQuery Corner Gallery
    Gradient Plugin

    文本和鏈接

    jQuery Spoiler plugin
    Text Highlighting
    Disable Text Select Plugin
    jQuery Newsticker
    Auto line-height Plugin
    Textgrad - a text gradient plugin
    LinkLook - a link thumbnail preview
    pager jQuery Plugin
    shortKeys jQuery Plugin
    jQuery Biggerlink
    jQuery Ajax Link Checker
    Chili jQuery code highlighter plugin
    jScroller

    鼠標提示

    jQuery Plugin - Tooltip
    jTip - The jQuery Tool Tip
    clueTip
    BetterTip
    Flash Tooltips using jQuery
    ToolTip

    菜單,導航欄

    jQuery Tabs Plugin - awesome! [demo nested tabs ]
    another jQuery nested Tab Set example (based on jQuery Tabs Plugin)
    jQuery idTabs
    jdMenu - Hierarchical Menu Plugin for jQuery
    jQuery SuckerFish Style
    jQuery Plugin Treeview
    treeView Basic
    FastFind Menu
    Sliding Menu
    Lava Lamp jQuery Menu
    jQuery iconDock
    jVariations Control Panel
    ContextMenu plugin
    clickMenu
    CSS Dock Menu
    jQuery Pop-up Menu Tutorial
    Sliding Menu

    手風琴,幻燈片等效果

    jQuery Plugin Accordion
    jQuery Accordion Plugin Horizontal Way
    haccordion - a simple horizontal accordion plugin for jQuery
    Horizontal Accordion by portalzine.de
    HoverAccordion
    Accordion Example from fmarcia.info
    jQuery Accordion Example
    jQuery Demo - Expandable Sidebar Menu
    Sliding Panels for jQuery
    jQuery ToggleElements
    Coda Slider
    jCarousel
    Accesible News Slider Plugin
    Showing and Hiding code Examples
    jQuery Easing Plugin
    jQuery Portlets
    AutoScroll
    Innerfade
    CodaSlider

    拖拽

    UI/Draggables
    EasyDrag jQuery Plugin
    jQuery Portlets
    jqDnR - drag, drop resize
    Drag Demos

    XML XSL JSON Feeds

    XSLT Plugin
    jQuery Ajax call and result XML parsing
    xmlObjectifier - Converts XML DOM to JSON
    jQuery XSL Transform
    jQuery Taconite - multiple Dom updates
    RSS/ATOM Feed Parser Plugin
    jQuery Google Feed Plugin

    瀏覽器

    Wresize - IE Resize event Fix Plugin
    jQuery ifixpng
    jQuery pngFix
    Link Scrubber - removes the dotted line onfocus from links
    jQuery Perciformes - the entire suckerfish familly under one roof
    Background Iframe
    QinIE - for proper display of Q tags in IE
    jQuery Accessibility Plugin
    jQuery MouseWheel Plugin

    對話框,確認窗口

    jQuery Impromptu
    jQuery Confirm Plugin
    jqModal
    SimpleModal

    CSS

    jQuery Style Switcher
    JSS - Javascript StyleSheets
    jQuery Rule - creation/manipulation of CSS Rules
    jPrintArea

    DOM, Ajax 和其他插件

    FlyDOM
    jQuery Dimenion Plugin
    jQuery Loggin
    Metadata - extract metadata from classes, attributes, elements
    Super-tiny Client-Side Include Javascript jQuery Plugin
    Undo Made Easy with Ajax
    JHeartbeat - periodically poll the server
    Lazy Load Plugin
    Live Query
    jQuery Timers
    jQuery Share it - display social bookmarking icons
    jQuery serverCookieJar
    jQuery autoSave
    jQuery Puffer
    jQuery iFrame Plugin
    Cookie Plugin for jQuery
    jQuery Spy - awesome plugin
    Effect Delay Trick
    jQuick - a quick tag creator for jQuery
    Metaobjects

    elementReady

    posted @ 2009-11-15 15:21 笑口常開、財源滾滾來! 閱讀(446) | 評論 (0)編輯 收藏
     

    starterkit.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>jQuery Starterkit</title>

    <link rel="stylesheet" type="text/css" media="screen" href="style.css" />
    <script type="text/javascript" src="http://www.css88.com/jquery-1.3.2/jquery-1.3.2.min.js"></script>
    <script src="jquery.js" type="text/javascript"></script>
    <script src="custom.js" type="text/javascript"></script>
    <script src="jquery.tablesorter.js" type="text/javascript"></script>
    <script src="jquery-latest.js" type="text/javascript"></script>
    <script src="jquery.tablesorter.min.js" type="text/javascript"></script>
    <script src="jquery.metadata.js" type="text/javascript"></script>
    </head>
    <body>

    <!-- tablecode taken from tablesorter examples -->

    <table class="tablesorter " cellspacing=1>
    <thead>

     <tr>
      <th class="{sorter:'text'}">Email</th>
      <th>Id</th>
      <th>Phone</th>
      <th>Total</th>
      <th>Ip</th>

      <th class="{sorter:'procent'}">Url</th>
      <th>Time</th>
      <th>ISO Date</th>
      <th>UK Date</th>
     </tr>
    </thead> 
    <tbody>
     <tr>

      
     </tr>
      
     <tr>
      <td>henry@mountdev.net</td>

      <td>35889</td>
      <td>941-964-9543</td>
      <td>$2776.09</td>
      <td>119.232.182.142</td>
      <td>http://www.gmail.com</td>
      <td>3:54</td>

      <td>1974/1/19</td>
      <td>19/1/1974</td>
     </tr>
      
     <tr>
      <td>christian@reno.gov</td>
      <td>60021</td>

      <td>941-964-5617</td>

      <td>$2743.41</td>
      <td>167.209.64.181</td>
      <td>http://www.dotnet.ca</td>
      <td>10:58</td>
      <td>2000/3/25</td>

      <td>25/3/2000</td>

     </tr>
      
     <tr>
      <td>muffins@donuts.com</td>
      <td>17927</td>
      <td>941-964-9511</td>

      <td>$2998.18</td>
      <td>210.214.231.182</td>

      <td>http://google.se</td>
      <td>21:22</td>
      <td>1993/1/24</td>
      <td>24/1/1993</td>

     </tr>
      
     <tr>
      <td>muffins@reno.gov</td>

      <td>76375</td>
      <td>941-964-2757</td>
      <td>$1836.09</td>

      <td>220.222.93.171</td>
      <td>http://www.samba.org</td>
      <td>15:22</td>

      <td>1988/4/4</td>
      <td>4/4/1988</td>
     </tr>   
      <tr>
      <td>found@flexomat.com</td>

      <td>20953</td>
      <td>941-964-5544</td>
      <td>$575.42</td>
      <td>247.246.235.138</td>
      <td>http://gmail.com</td>
      <td>3:12</td>

      <td>1978/6/10</td>
      <td>10/6/1978</td>
     </tr>   

       
     <tr>
      <td>foo@reno.gov</td>
      <td>03603</td>
      <td>941-964-8942</td>

      <td>$1677.07</td>
      <td>176.96.162.192</td>

      <td>http://www.flexomat.com</td>
      <td>19:11</td>
      <td>1980/7/31</td>
      <td>31/7/1980</td>

     </tr>
      
     <tr>
      <td>found@flexomat.com</td>

      <td>84939</td>
      <td>941-964-7004</td>
      <td>$3916.83</td>

      <td>240.145.198.78</td>
      <td>http://www.fish.org</td>
      <td>1:29</td>

      <td>1980/8/26</td>
      <td>26/8/1980</td>
     </tr>
     
     <tr>
      <td>muffins@reno.gov</td>
      <td>95926</td>
      <td>941-964-147</td>

      <td>$3897.91</td>
      <td>105.85.121.209</td>

      <td>http://www.flexomat.com</td>
      <td>9:50</td>
      <td>2003/4/1</td>
      <td>1/4/2003</td>

     </tr>
       
        </tbody>
    </table>

     

    </body>
    </html>


    custom.js


    jQuery(document).ready(function() {
     $.tablesorter.defaults.widgets=['zebra'];
     $.tablesorter.defaults.sortList=[[0,0]];
     $("table").tablesorter();
    });

    posted @ 2009-10-10 17:07 笑口常開、財源滾滾來! 閱讀(820) | 評論 (0)編輯 收藏
     
    starterkit.html

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>jQuery Starterkit</title>

    <link rel="stylesheet" type="text/css" media="screen" href="screen.css" />
    <script type="text/javascript" src="http://www.css88.com/jquery-1.3.2/jquery-1.3.2.min.js"></script>
    <script src="jquery.js" type="text/javascript"></script>
    <script src="custom.js" type="text/javascript"></script>
    <script src="jquery.tablesorter.js" type="text/javascript"></script>
    <script src="jquery-latest.js" type="text/javascript"></script>
    <script src="jquery.tablesorter.min.js" type="text/javascript"></script>
    <script src="jquery.metadata.js" type="text/javascript"></script>
    </head>


    <body>

    <table id="large" cellspacing="0">
    <thead>

     <tr>
      <th>Email</th>
      <th>Id</th>
      <th>Phone</th>
      <th>Total</th>
      <th>Ip</th>

      <th>Url</th>
      <th>Time</th>
      <th>ISO Date</th>
      <th>UK Date</th>
     </tr>
    </thead> 
    <tbody>
     <tr>

      <td>devo@flexomat.com</td>
      <td>66672</td>
      <td>941-964-8535</td>
      <td>$2482.79</td>
      <td>172.78.200.124</td>

      <td>http://gmail.com</td>

      <td>15:10</td>
      <td>1988/12/14</td>
      <td>14/12/1988</td>
     </tr>
      
     <tr>
      <td>henry@mountdev.net</td>

      <td>35889</td>
      <td>941-964-9543</td>
      <td>$2776.09</td>
      <td>119.232.182.142</td>
      <td>http://www.gmail.com</td>
      <td>3:54</td>

      <td>1974/1/19</td>
      <td>19/1/1974</td>
     </tr>
      
     <tr>
      <td>christian@reno.gov</td>
      <td>60021</td>

      <td>941-964-5617</td>

      <td>$2743.41</td>
      <td>167.209.64.181</td>
      <td>http://www.dotnet.ca</td>
      <td>10:58</td>
      <td>2000/3/25</td>

      <td>25/3/2000</td>

     </tr>
      
     <tr>
      <td>muffins@donuts.com</td>
      <td>17927</td>
      <td>941-964-9511</td>

      <td>$2998.18</td>
      <td>210.214.231.182</td>

      <td>http://google.se</td>
      <td>21:22</td>
      <td>1993/1/24</td>
      <td>24/1/1993</td>

     </tr>
      
     <tr>
      <td>muffins@reno.gov</td>

      <td>76375</td>
      <td>941-964-2757</td>
      <td>$1836.09</td>

      <td>220.222.93.171</td>
      <td>http://www.samba.org</td>
      <td>15:22</td>

      <td>1988/4/4</td>
      <td>4/4/1988</td>
     </tr>

      
     <tr>
      <td>mendez@gmail.com</td>
      <td>45834</td>
      <td>941-964-2575</td>

      <td>$2805.46</td>
      <td>228.170.245.253</td>

      <td>http://flexomat.com</td>
      <td>11:31</td>
      <td>1975/12/12</td>
      <td>12/12/1975</td>

     </tr>
      
     <tr>

      <td>dev@gmail.com</td>
      <td>20022</td>
      <td>941-964-4967</td>
      <td>$3296.54</td>
      <td>175.248.70.240</td>

      <td>http://www.flexomat.com</td>

      <td>4:27</td>
      <td>2002/7/3</td>
      <td>3/7/2002</td>
     </tr>
      
     <tr>
      <td>foo@polyester.se</td>

      <td>55977</td>
      <td>941-964-745</td>
      <td>$2953.73</td>
      <td>222.114.227.156</td>
      <td>http://www.donuts.com</td>
      <td>23:49</td>

      <td>1977/8/4</td>
      <td>4/8/1977</td>
     </tr>
      
     <tr>
      <td>adam@aftonbladet.se</td>
      <td>38867</td>

      <td>941-964-6302</td>

      <td>$1949.27</td>
      <td>116.241.143.196</td>
      <td>http://flexomat.com</td>
      <td>23:35</td>
      <td>1995/7/27</td>

      <td>27/7/1995</td>

     </tr>
      
     <tr>
      <td>devo@donuts.com</td>
      <td>51426</td>
      <td>941-964-1234</td>

      <td>$1067.00</td>
      <td>88.96.149.82</td>

      <td>http://www.polyester.se</td>
      <td>15:17</td>
      <td>1986/1/5</td>
      <td>5/1/1986</td>

     </tr>
      
     <tr>
      <td>henry@samba.org</td>

      <td>40859</td>
      <td>941-964-4856</td>
      <td>$3401.19</td>

      <td>68.152.250.74</td>
      <td>http://www.flexomat.com</td>
      <td>4:36</td>

      <td>1990/3/7</td>
      <td>7/3/1990</td>
     </tr>

      
     <tr>
      <td>found@dotnet.ca</td>
      <td>23986</td>
      <td>941-964-2686</td>

      <td>$1393.52</td>
      <td>98.102.181.138</td>

      <td>http://lostnfound.org</td>
      <td>5:51</td>
      <td>1993/7/22</td>
      <td>22/7/1993</td>

     </tr>
      
     <tr>

      <td>carl@fish.org</td>
      <td>73392</td>
      <td>941-964-5792</td>
      <td>$3876.04</td>
      <td>246.234.182.243</td>

      <td>http://www.google.se</td>

      <td>6:52</td>
      <td>1984/7/14</td>
      <td>14/7/1984</td>
     </tr>
      
     <tr>
      <td>found@mountdev.net</td>

      <td>03519</td>
      <td>941-964-1599</td>
      <td>$1176.48</td>
      <td>104.212.122.177</td>
      <td>http://donuts.com</td>
      <td>18:52</td>

      <td>2000/8/6</td>
      <td>6/8/2000</td>
     </tr>
      
     <tr>
      <td>lost@fish.org</td>
      <td>36628</td>

      <td>941-964-5975</td>

      <td>$822.23</td>
      <td>153.63.68.208</td>
      <td>http://www.gmail.com</td>
      <td>7:53</td>
      <td>1994/7/14</td>

      <td>14/7/1994</td>

     </tr>
      
     <tr>
      <td>mendez@dotnet.ca</td>
      <td>90442</td>
      <td>941-964-1649</td>

      <td>$1975.72</td>
      <td>128.161.95.170</td>

      <td>http://reno.gov</td>
      <td>8:35</td>
      <td>1997/10/20</td>
      <td>20/10/1997</td>

     </tr>
      
     <tr>
      <td>carl@donuts.com</td>

      <td>00412</td>
      <td>941-964-6432</td>
      <td>$1834.77</td>

      <td>141.231.126.192</td>
      <td>http://gmail.com</td>
      <td>16:15</td>

      <td>1997/8/23</td>
      <td>23/8/1997</td>
     </tr>

      
     <tr>
      <td>foo@fish.org</td>
      <td>80653</td>
      <td>941-964-1022</td>

      <td>$260.26</td>
      <td>98.102.97.81</td>

      <td>http://samba.org</td>
      <td>8:27</td>
      <td>1991/11/24</td>
      <td>24/11/1991</td>

     </tr>
      
     <tr>

      <td>found@fish.org</td>
      <td>54635</td>
      <td>941-964-6439</td>
      <td>$1442.80</td>
      <td>108.133.231.154</td>

      <td>http://dotnet.ca</td>

      <td>6:47</td>
      <td>1977/7/12</td>
      <td>12/7/1977</td>
     </tr>
      
     <tr>
      <td>found@flexomat.com</td>

      <td>20953</td>
      <td>941-964-5544</td>
      <td>$575.42</td>
      <td>247.246.235.138</td>
      <td>http://gmail.com</td>
      <td>3:12</td>

      <td>1978/6/10</td>
      <td>10/6/1978</td>
     </tr>
      
     <tr>
      <td>lost@aftonbladet.se</td>
      <td>60810</td>

      <td>941-964-8406</td>

      <td>$1054.39</td>
      <td>130.80.125.154</td>
      <td>http://www.samba.org</td>
      <td>15:50</td>
      <td>1978/5/18</td>

      <td>18/5/1978</td>

     </tr>
      
     <tr>
      <td>carl@reno.gov</td>
      <td>22666</td>
      <td>941-964-104</td>

      <td>$373.59</td>
      <td>185.150.127.115</td>

      <td>http://www.lostnfound.org</td>
      <td>10:11</td>
      <td>1971/11/5</td>
      <td>5/11/1971</td>

     </tr>
      
     <tr>
      <td>carl@donuts.com</td>

      <td>82867</td>
      <td>941-964-1031</td>
      <td>$631.03</td>

      <td>62.244.222.152</td>
      <td>http://www.reno.gov</td>
      <td>11:24</td>

      <td>1985/1/22</td>
      <td>22/1/1985</td>
     </tr>

      
     <tr>
      <td>foo@donuts.com</td>
      <td>11268</td>
      <td>941-964-208</td>

      <td>$3730.64</td>
      <td>234.192.138.252</td>

      <td>http://aftonbladet.se</td>
      <td>22:45</td>
      <td>1979/8/4</td>
      <td>4/8/1979</td>

     </tr>
      
     <tr>

      <td>devo@google.se</td>
      <td>17059</td>
      <td>941-964-2903</td>
      <td>$1404.67</td>
      <td>73.189.246.202</td>

      <td>http://www.gmail.com</td>

      <td>22:28</td>
      <td>1983/4/28</td>
      <td>28/4/1983</td>
     </tr>
      
     <tr>
      <td>muffins@flexomat.com</td>

      <td>90584</td>
      <td>941-964-4640</td>
      <td>$3706.01</td>
      <td>243.162.73.115</td>
      <td>http://www.fish.org</td>
      <td>11:12</td>

      <td>1997/4/8</td>
      <td>8/4/1997</td>
     </tr>
      
     <tr>
      <td>foo@samba.org</td>
      <td>82966</td>

      <td>941-964-7245</td>

      <td>$1001.38</td>
      <td>255.182.148.252</td>
      <td>http://www.reno.gov</td>
      <td>8:42</td>
      <td>1995/11/1</td>

      <td>1/11/1995</td>

     </tr>
      
     <tr>
      <td>foo@reno.gov</td>
      <td>03603</td>
      <td>941-964-8942</td>

      <td>$1677.07</td>
      <td>176.96.162.192</td>

      <td>http://www.flexomat.com</td>
      <td>19:11</td>
      <td>1980/7/31</td>
      <td>31/7/1980</td>

     </tr>
      
     <tr>
      <td>found@flexomat.com</td>

      <td>84939</td>
      <td>941-964-7004</td>
      <td>$3916.83</td>

      <td>240.145.198.78</td>
      <td>http://www.fish.org</td>
      <td>1:29</td>

      <td>1980/8/26</td>
      <td>26/8/1980</td>
     </tr>

      
     <tr>
      <td>henry@lostnfound.org</td>
      <td>76453</td>
      <td>941-964-3084</td>

      <td>$3875.88</td>
      <td>235.225.168.168</td>

      <td>http://www.fish.org</td>
      <td>15:31</td>
      <td>2000/10/22</td>
      <td>22/10/2000</td>

     </tr>
      
     <tr>

      <td>sam@aftonbladet.se</td>
      <td>36274</td>
      <td>941-964-7784</td>
      <td>$73.43</td>
      <td>114.190.194.148</td>

      <td>http://www.dn.se</td>

      <td>18:24</td>
      <td>1994/11/11</td>
      <td>11/11/1994</td>
     </tr>
      
     <tr>
      <td>dev@polyester.se</td>

      <td>15971</td>
      <td>941-964-7527</td>
      <td>$1855.18</td>
      <td>179.121.143.189</td>
      <td>http://www.flexomat.com</td>
      <td>10:25</td>

      <td>1984/8/16</td>
      <td>16/8/1984</td>
     </tr>
      
     <tr>
      <td>devo@fish.org</td>
      <td>31734</td>

      <td>941-964-9760</td>

      <td>$3201.35</td>
      <td>213.186.220.205</td>
      <td>http://www.samba.org</td>
      <td>19:37</td>
      <td>1979/3/4</td>

      <td>4/3/1979</td>

     </tr>
      
     <tr>
      <td>devo@reno.gov</td>
      <td>52074</td>
      <td>941-964-2068</td>

      <td>$3035.24</td>
      <td>189.62.225.163</td>

      <td>http://www.dn.se</td>
      <td>21:18</td>
      <td>1998/2/24</td>
      <td>24/2/1998</td>

     </tr>
      
     <tr>
      <td>mendez@fish.org</td>

      <td>87800</td>
      <td>941-964-7933</td>
      <td>$618.59</td>

      <td>254.119.153.91</td>
      <td>http://www.dn.se</td>
      <td>22:34</td>

      <td>1979/5/28</td>
      <td>28/5/1979</td>
     </tr>

      
     <tr>
      <td>muffins@reno.gov</td>
      <td>95926</td>
      <td>941-964-147</td>

      <td>$3897.91</td>
      <td>105.85.121.209</td>

      <td>http://www.flexomat.com</td>
      <td>9:50</td>
      <td>2003/4/1</td>
      <td>1/4/2003</td>

     </tr>
      
     <tr>

      <td>carl@donuts.com</td>
      <td>74513</td>
      <td>941-964-4507</td>
      <td>$2150.68</td>
      <td>106.175.123.125</td>

      <td>http://www.fish.org</td>

      <td>21:42</td>
      <td>1977/4/8</td>
      <td>8/4/1977</td>
     </tr>
      
     <tr>
      <td>sam@fish.org</td>

      <td>82420</td>
      <td>941-964-2134</td>
      <td>$3947.54</td>
      <td>129.78.102.122</td>
      <td>http://mountdev.net</td>
      <td>11:33</td>

      <td>1990/11/26</td>
      <td>26/11/1990</td>
     </tr>
      
     <tr>
      <td>devo@mountdev.net</td>
      <td>81905</td>

      <td>941-964-3535</td>

      <td>$722.17</td>
      <td>229.101.84.111</td>
      <td>http://fish.org</td>
      <td>7:29</td>
      <td>1975/12/28</td>

      <td>28/12/1975</td>

     </tr>
      
     <tr>
      <td>john@lostnfound.org</td>
      <td>93124</td>
      <td>941-964-1508</td>

      <td>$394.82</td>
      <td>61.184.235.77</td>

      <td>http://www.mountdev.net</td>
      <td>14:38</td>
      <td>1979/12/10</td>
      <td>10/12/1979</td>

     </tr>
       </tbody>
    </table>


    </body>


    custom.js

    jQuery(document).ready(function() {
      $("#large").tablesorter( {sortList: [[0,0], [1,0]]} );
    });


    posted @ 2009-10-10 16:02 笑口常開、財源滾滾來! 閱讀(2029) | 評論 (0)編輯 收藏
     
    1.在當前類路徑下新建一個properties文件;
    編寫DBconfig.properties

    driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
    url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=school   
    user=sa   
    password=sa


    2.新建工具類

    package com.itcast.db;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.util.Properties;

    public class ConnectionUtil {

     public Connection openConnection() {
      String driver = "";
      String url = "";
      String user = "";
      String password = "";
      Properties prop = new Properties();
      Connection conn = null;
      try {
       //加載屬性文件   
       prop.load(this.getClass().getClassLoader().getResourceAsStream(
         "DBConfig.properties"));
       driver = prop.getProperty("driver");
       url = prop.getProperty("url");
       user = prop.getProperty("user");
       password = prop.getProperty("password");
       //Class.forName加載驅動   
       Class.forName(driver);
       //DriverManager獲得連接   
       conn = DriverManager.getConnection(url, user, password);
       return conn;
      } catch (Exception e) {
       e.printStackTrace();
      }
      return null;
     }

    }


    3.業務實現類


    package com.itcast.service.impl;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;

    import com.itcast.db.ConnectionUtil;
    import com.itcast.db.DBConnection;
    import com.itcast.model.User;
    import com.itcast.service.IUser;

    /**
     * 業務邏輯處理
     *
     * @author Administrator
     *
     */
    public class UserImpl implements IUser {

    // DBConnection db = new DBConnection();

     private PreparedStatement pstm;
     
     /**
      * 添加用戶
      */
     public void  add_User(User user) {
      try{
    //  Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    //  conn= DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=school", "sa", "sa");
       Connection conn = new ConnectionUtil().openConnection();
      pstm=conn.prepareStatement("insert into userTable(user_name , user_password ,user_age,user_sex,user_address,user_telephone) values(?,?,?,?,?,?)");
      pstm.setString(1, user.getUsername());
      pstm.setString(2, user.getPassword());
      pstm.setInt(3, user.getAge());
      pstm.setString(4, user.getSex());
      pstm.setString(5, user.getAddress());
      pstm.setString(6, user.getTelephone());
      pstm.executeUpdate();
      }catch(SQLException e){
       e.printStackTrace();
      }catch(Exception e){
       e.printStackTrace();
      }
    //  String sql="insert into userTable(user_name , user_password ,user_age,user_sex,user_address,user_telephone) values(?,?,?,?,?,?)";
    //  
    //  db.GetConnection();
      

     }

     /**
      * 刪除用戶
      */
     public boolean del_User(int id) {
      boolean result=false;
      try{
       Connection conn = new ConnectionUtil().openConnection();
       pstm=conn.prepareStatement("delete from  userTable where user_id="+id);
       
       pstm.executeUpdate();
       result=true;
       }catch(SQLException e){
        e.printStackTrace();
       }catch(Exception e){
        e.printStackTrace();
       }
       return result;
     }

     /**
      * 查找用戶
      */
     public List<User> find_User() {
     
      Connection conn = new ConnectionUtil().openConnection();
      List<User> list = new ArrayList();
      User user = new User();
      
      String sql = "select * from userTable ";
      try {
       pstm=conn.prepareStatement(sql);
    //   pstm.setInt(1, id);
       ResultSet rs=pstm.executeQuery();
       while (rs.next()) {
        user.setId(rs.getInt(1));
        user.setUsername(rs.getString(2));
        user.setPassword(rs.getString(3));
        user.setAge(rs.getInt(4));
        user.setSex(rs.getString(5));
        user.setAddress(rs.getString(6));
        user.setTelephone(rs.getString(7));
        user.setTime(rs.getDate(8));
    //    System.out.println(rs.getString(7));
        list.add(user);
       }
      } catch (SQLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      return list;
      
      
     }

     /**
      * 按照id查詢用戶信息
      */
     public List find_Users(int id) {
      Connection conn = new ConnectionUtil().openConnection();
      List list = new ArrayList();
      User user = new User();
      
      String sql = "select * from userTable where user_id=?";
      try {
       pstm=conn.prepareStatement(sql);
       pstm.setInt(1, id);
       ResultSet rs=pstm.executeQuery();
       while (rs.next()) {
        user.setId(rs.getInt(1));
        user.setUsername(rs.getString(2));
        user.setPassword(rs.getString(3));
        user.setAge(rs.getInt(4));
        user.setSex(rs.getString(5));
        user.setAddress(rs.getString(6));
        user.setTelephone(rs.getString(7));
        user.setTime(rs.getDate(8));
    //    System.out.println(rs.getString(7));
        list.add(user);
       }
      } catch (SQLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      return list;
     }

     /**
      * 修改用戶信息
      */
     public IUser modify_User() {
      // TODO Auto-generated method stub
      return null;
     }

    }

    posted @ 2009-09-26 14:09 笑口常開、財源滾滾來! 閱讀(738) | 評論 (0)編輯 收藏
     
         摘要: JSTL 入門: 探討 core JSTL 入門: 探討 core 使用定制標記進行流控制和 URL 管理 ...  閱讀全文
    posted @ 2009-09-22 10:50 笑口常開、財源滾滾來! 閱讀(398) | 評論 (0)編輯 收藏
     
    由于采用sql server2000作為數據庫。用java進行jdbc連接時

    出現Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.

    發現原來是少了sp4補丁。

    先下載補丁文件

    SQL2000-KB884525-SP4-x86-CHS.EXE

    之后安裝該文件,默認安裝在c:/下

    進入該文件夾,點擊set up.bat 進行更新。

    最后重新開啟服務。就ok啦!


    posted @ 2009-09-21 16:35 笑口常開、財源滾滾來! 閱讀(220) | 評論 (0)編輯 收藏
     
                以前用myeclipse連接sql server 2005時,直接用的一個jdbcdriver.jar就ok了。但是目前為了需要
    必須用sql server 2000,所以我才在網上找了找連接驅動。
               
             
    SQLServer2000的JDBC驅動
    轉自  
    http://blog.csdn.net/javalf00/archive/2009/06/09/4254478.aspx



    一、下載SQL SERVER2000的jdbc驅動程序。在微軟站點就有這個驅動程序: Window操作系統

    http://download.microsoft.com/download/3/0/f/30ff65d3-a84b-4b8a-a570-27366b2271d8/setup.exe Unix操作系統

    Mssqlserver.tar http://download.microsoft.com/download/3/0/f/30ff65d3-a84b-4b8a-a570-27366b2271d8/mssqlserver.tar

     二、安裝JDBC 執行ms_jdbc_setup.exe可執行文件,一切只需要點擊下一

    步,至到出現finish按鈕,完成安裝。注: (1) ms_JDBC_setup默認安裝路

    徑為:c:\Program Files\Microsoft SQL Server 2000 Driver for JDBC (2)此版

    (Version 2.2.0022)本僅支持Microsoft SQL Server 2000 Driver for JDBC (3)安

    裝目錄\lib\下的三個jar文件即是我們要的JDBC驅動核心 msbase.jar

    mssqlserver.jar msutil.jar

     三、將以上(3)中指的三個jar文件加入到環境變量中去 classpath:
     
    d:\webserver\lib\msbase.jar;d:\webserver\lib\mssqlserver.jar;d:\webserver\lib\msutil.jar
     
    注:也可以省事的將以上三個文件拷貝至你的jvm機所在的

    JAVA_HOME\jre\lib\ext目錄下,不過不建議這么做。 對于web項目,可

    直接將以上三個jar包拷貝到WEB-INF下的lib文件夾下即可。

    四、測試 jsp文件:

    您的第一個字段內容為:

    您的第二個字段內容為:

    五、注意事項 1. 要保證你的Sql服務是啟動狀態 2. 在Sql 的管理器中能夠

    使用sa或其它用戶正常登錄;(有些人在安裝sql時用了nt用戶管理模式,

    這里可能會有一定問題) 3. 第一次配置好環境變量最好能重啟一下電腦

    4. 注意JVM和DataBase的啟動順序:先啟動DataBase,再啟動JVM機。

    注:在停止Web服務器后,再重啟動,中間最好能有10秒以上的間隔。
     
    5. 注意操作系統的網絡連通性 A.啟動了Tcp/IP服務 B.配置了相關IP地址,

    有些人機器可能用的是自動分配IP或有配置IP時,但網絡不通可能也找不

    到IP 6. 有些機器在調試明最好能將(四)中的連接地址localhost改成數據

    庫服務器的IP,這也是要注意5的原因。

     package zmsjdbc;
    import java.sql.*;
    public class sqlserver1 {
    private String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=catv"; //catv是數據庫!loacalhost可以用IP和主機
    private String user="sa";
    private String pwd="";
    public Connection getcon() {
    Connection con;
    try { //加載驅動程序
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); //創建連接 con=DriverManager.getConnection(url,user,pwd);
    return con;
    } catch(ClassNotFoundException e) {
    System.out.println("加載驅動程序出錯");
    } catch(SQLException e) {
    System.out.println(e.getMessage());
    } catch(Exception e) {
     System.out.println("出現了好大的錯誤");
    }
     return null;
     }
    public ResultSet executeSql(String sqlstr) {
    Connection conn; Statement stmt;
     try { conn=getcon();
    stmt=conn.createStatement();
    ResultSet rs=stmt.executeQuery(sqlstr);
    return rs;
    } catch(SQLException e) {
    System.out.print("獲取數據集時出現錯誤");
     }
    return null;
    }
     public static void main(String[] args) {
    ResultSet rs1;
    sqlserver1 sql1=new sqlserver1();
     rs1=sql1.executeSql("select ui_id,ui_name from userinfo");
     try {
    while(rs1.next()) {
    System.out.println(rs1.getString("ui_id")+" 姓名:"+rs1.getString("ui_name"));
     
         }
    } catch(Exception e)
    {
    System.out.println(e.getMessage());
    }
    } } /*

    1、對于SQLSERVER 必須下載 SQLSERVER驅動 http://download.microsoft.com/download/3/0/f/30ff65d3-a84b-4b8a-a570-27366b2271d8/setup.exe 然后把 msbase.jar mssqlserver.jar msutil.jar 復制到 D:\JBuilder9\jdk1.4\jre\lib\ext,或者放在web項目的WEB-INF/lib下。

    2:如果出現錯誤: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 說明 SQLERVER 端口號 不對 》》》更改端口號:SQLSERVER->屬性-常規-網絡配置-常規-TCP/IP-屬性--更改端口號有個命令可以用: cmd-> netstat -a 例如:String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=zmstv"; 說明你使用的是1433 在CMD 下 輸入 netstat -a -n 應該看不到:TCP 127.0.0.1:1433 0.0.0.0:0 LISTENING 如果安裝 sqlserver 2000 出現 報錯 "以前的某個程序安裝已在安裝計算機上創建掛起的文件操作。。。。" 打開注冊表編輯器,在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations項目,并刪除它。這樣就可以清除安裝暫掛項目。

     

     


    posted @ 2009-09-21 12:08 笑口常開、財源滾滾來! 閱讀(11420) | 評論 (0)編輯 收藏
     

    在J2ME程序開發過程中,為了一定的需要,經常需要來獲得用戶的手機號碼,但是這個功能卻在標準的J2ME類庫中沒有提供。

    在使用中國移動的CMWAP方式連接網絡時,中國移動會將用戶的手機號碼放在一個名稱為x-up-calling-line-id的頭信息中,可以通過讀取該頭信息,獲得用戶的手機號碼,具體代碼如下:

    String usermphone = http.getHeader("x-up-calling-line-id");

    偽手機號,用戶在移動夢網的ID:

    String usermphone = http.getHeader("MISC_MID");

    其中http是HttpConnction類型的對象。 

    [color=Green]注意:必須要是CNWAP聯網才行。 [/color]

    posted @ 2009-09-17 20:42 笑口常開、財源滾滾來! 閱讀(786) | 評論 (2)編輯 收藏
     

    原來獲取用戶手機號碼很簡單,關鍵是通信營運商給不給你送。如果給你送的話,手機號碼是在Http請求頭里獲取,通常在x-up-calling-line-id項里,如果通過此項得不到的話。可采用循環讀出所有的Http頭里的信息,號碼在哪一個頭里就一目了然了。
    String userPhone = request.getHeader("x-up-calling-line-id");一般通過這句就能獲取到手機號碼。
    如果號碼不在上面這條請求頭里,采用下面方法讀取看號碼在哪一條請求頭里。

    Enumeration headers = request.getHeaderNames() ;
    while(headers.hasMoreElements())
    {
         String head = (String)headers.nextElement();
         out.println(head+":"+request.getHeader(head));
    }
    這樣就可以將所有的信息打印出來,看到號碼的位置了。注意獲取號碼的前提是跟營運商有合作或者跟他們申請。同意給你送,否則程序實現了也沒有用。

     

    本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jhjinhua/archive/2008/12/12/3505675.aspx

    posted @ 2009-09-17 20:19 笑口常開、財源滾滾來! 閱讀(5862) | 評論 (6)編輯 收藏
     
    轉載:http://www.host01.com/article/Wap/wap001/05922162843330.htm

    JSP下獲取手機號碼

    //取手機號
    String mobile = "" ;
    String MO="";
    String temvit = "";
    String version = "";

    Enumeration headerNames = request.getHeaderNames();
    while(headerNames.hasMoreElements()) {
    String headerName = (String)headerNames.nextElement();
    if (headerName.equals("x-up-calling-line-id")) {
    temvit=request.getHeader(headerName);
    if (temvit.substring(0,3).trim().equals("861")) {
    mobile=temvit.substring(2,13);
    }
    if (temvit.substring(0,2).trim().equals("13")) {
    mobile=temvit;
    }
    }

    if (headerName.equals("user-agent")) {
    <--ubbcodetab--> <--/ubbcodetab-->MO=request.getHeader(headerName);
    }

    if (headerName.equals("x-up-calling-line-id")) {
    temvit=request.getHeader(headerName);
    if (temvit.substring(0,2).trim().equals("13")) {
    mobile=temvit;
    }
    }
    }
    posted @ 2009-09-17 20:15 笑口常開、財源滾滾來! 閱讀(1310) | 評論 (2)編輯 收藏
     
    轉載:
    http://hi.baidu.com/yashengwh/blog/item/27130edf7ec447156327980b.html


    手機號碼:Request.ServerVariables("HTTP_X_UP_CALLING_LINE_ID")
    手機型號:request.ServerVariables("HTTP_User-Agent")

    補充:
    手機號碼,要看當地的運營商了
    有三種方法獲得(聯通的)
    1.加密的手機號碼:被加密的手機號碼,與手機號碼一一對應。
    中國聯通WAP平臺向CP Server(主域或IP地址)傳送加密手機號碼,CP Server獲取該加密手機號碼的方法為:在每次用戶發送的請求http header中取“deviceid”。
    2.公開的手機號碼:中國聯通WAP平臺向CP Server(主域或IP地址)傳送公開的手機號碼,CP Server獲取該公開手機號碼的方法為:在每次用戶發送的請求http header中取“x-up-calling-line-id”。
    以上要和聯通進行申請

    3、你可以試這樣的方法獲得手機號碼: Mobile = request.ServerVariables("HTTP_X_UP_subno")
    Mobile =mid(FromMobile,3,11) ??
    asp?lp=27&id=1782582>http://www.blueidea.com/bbs/NewsDetail.asp?lp=27&id=1782582
    聲明:第三種方法不保險

    頭文件參考:
    答7:
    POST /default.asp HTTP/1.0
    Host: 211.94.121.3:81
    content-type: text/plain
    accept-language: zh
    accept-charset: ISO-8859-1, UTF-8; Q=0.8, ISO-10646-UCS-2; Q=0.6
    profile:
    http://nds.nokia.com/uaprof/N7210r100.xml
    user-agent: Nokia7210/1.0 (3.09) Profile/MIDP-1.0 Configuration/CLDC-1.0
    x-wap.tod-coded: Thu, 01 Jan 1970 00:00:00 GMT
    accept: */*
    content-length: 1
    Cookie: ASPSESSIONIDGGGQGAPU=KFHHMHPCHJFPKPEPBEDFHCJL
    via: WTP/1.1 wapgw2 (Nokia WAP Gateway 3.1/CD1/3.1.43), HTTP/1.1 httpproxy2[0A0000C3] (Traffic-Server/4.0.9 [uSc ])
    X-Network-info: GPRS,10.15.96.127,13810027XXX,211.139.172.70,unsecured
    X-Forwarded-For: 10.15.96.127
    X-Up-Calling-Line-ID: 13810027XXX
    X-Source-ID: 211.139.172.70
    X-Nokia-CONNECTION_MODE: CLESS
    X-Nokia-BEARER: GPRS
    X-Nokia-gateway-id: NAWG/3.1/Build43
    Client-ip: 192.168.0.6
    Connection: keep-alive

    posted @ 2009-09-17 19:51 笑口常開、財源滾滾來! 閱讀(1625) | 評論 (0)編輯 收藏
     

    package cn.itcast.bean;

    public class Person {

     private Integer id;
     private String name;
     
     public Person(){
      
     }
     
     public Person(String name) {
      this.name=name;
     }
     
       getter&&setter方法 
    }


    Person.hbm.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="cn.itcast.bean">
     <class name="Person" table="person">
     
      <id name="id" type="integer">
       <generator class="native"></generator>
      </id>
      <property name="name" length="10" not-null="true">
      </property>
     </class>

    </hibernate-mapping>

    定義業務接口

    package cn.itcast.service;

    import java.util.List;

    import cn.itcast.bean.Person;

    public interface IPersonService {

     /**
      * 保存人員信息
      * @param person
      */
     public abstract void save(Person person);

     /**
      * 更新信息
      * @param person
      */
     public abstract void update(Person person);

     /**
      * 獲取人員
      * @param personId
      * @return
      */
     public abstract Person getPerson(Integer personId);

     /**
      * 刪除人員信息
      * @param personId
      */
     public abstract void delete(Integer personId);

     /**
      * 獲取人員列表
      * @return
      */
     public abstract List<Person> getPersons();

    }


    業務實現類

    package cn.itcast.service.impl;

    import java.util.List;

    import javax.annotation.Resource;

    import org.hibernate.SessionFactory;
    import org.springframework.transaction.annotation.Propagation;
    import org.springframework.transaction.annotation.Transactional;

    import cn.itcast.bean.Person;
    import cn.itcast.service.IPersonService;

    /**
     * 業務層,采用注解聲明事務
     *
     * @author Administrator
     *
     */
    @Transactional
    public class PersonServiceBean implements IPersonService {

     @Resource
     private SessionFactory sessionFactory;

     public void save(Person person) {

      // 從spring 容器中得到正在管理的sessionFactory,persist方法用于保存實體

      sessionFactory.getCurrentSession().persist(person);

     }

     public void update(Person person) {
      sessionFactory.getCurrentSession().merge(person);
     }
    @Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)
     public Person getPerson(Integer personId) {
      return (Person) sessionFactory.getCurrentSession().get(Person.class,
        personId);
     }

     public void delete(Integer personId) {
      sessionFactory.getCurrentSession()
        .delete(
          sessionFactory.getCurrentSession().load(Person.class,
            personId));
     }
     @Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)
     @SuppressWarnings("unchecked")
     public List<Person> getPersons() {
      return sessionFactory.getCurrentSession().createQuery("from Person")
        .list();
     }

    }


    hibernate && spring的配置文件
    beans.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <!--
     - Application context definition for JPetStore's business layer.
     - Contains bean references to the transaction manager and to the DAOs in
     - dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").
    -->
    <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:context="http://www.springframework.org/schema/context"
     xmlns:aop="http://www.springframework.org/schema/aop"
     xmlns:tx="http://www.springframework.org/schema/tx"
     xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

     <context:annotation-config />
     <!-- 配置數據源 -->
     <bean id="dataSource"
      class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
      <property name="driverClassName"
       value="org.gjt.mm.mysql.Driver" />
      <property name="url"
       value="jdbc:mysql://localhost:3306/itcast?useUnicode=true&amp;characterEncoding=UTF-8" />
      <property name="username" value="root" />
      <property name="password" value="" />
      <!-- 連接池啟動時的初始值 -->
      <property name="initialSize" value="1" />
      <!-- 連接池的最大值 -->
      <property name="maxActive" value="500" />
      <!-- 最大空閑值.當經過一個高峰時間后,連接池可以慢慢將已經用不到的連接慢慢釋放一部分,一直減少到maxIdle為止 -->
      <property name="maxIdle" value="2" />
      <!--  最小空閑值.當空閑的連接數少于閥值時,連接池就會預申請去一些連接,以免洪峰來時來不及申請 -->
      <property name="minIdle" value="1" />
     </bean>

     <bean id="sessionFactory"
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      <property name="dataSource" ref="dataSource" /><!-- 將datasource注入到sessionFactory -->
      <property name="mappingResources">
       <list>
        <value>cn/itcast/bean/Person.hbm.xml</value>
       </list>
      </property>
      <property name="hibernateProperties">
       <value>
        hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
        hibernate.hbm2ddl.auto=update hibernate.show_sql=false
        hibernate.format_sql=false
       </value>
      </property>
     </bean>

     <!--  通過事務管理 管理sessionFactory -->
     <bean id="txManager"
      class="org.springframework.orm.hibernate3.HibernateTransactionManager">

      <property name="sessionFactory" ref="sessionFactory" />
     </bean>

     <tx:annotation-driven transaction-manager="txManager" />
     <bean id="personServiceBean"
      class="cn.itcast.service.impl.PersonServiceBean">
     </bean>
    </beans>



    /**
    測試類**/

    package junit;


    import java.util.List;

    import org.junit.BeforeClass;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;

    import cn.itcast.bean.Person;
    import cn.itcast.service.IPersonService;

    public class IPersonServiceTest {

     private static IPersonService ipersonservice;
     @BeforeClass
     public static void setUpBeforeClass() throws Exception {
      try {
       ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
       ipersonservice=(IPersonService)ctx.getBean("personServiceBean");
      } catch (RuntimeException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
     }
     
     @Test
     public void TestSave(){
      
      ipersonservice.save(new Person("小張"));
      System.out.println("保存成功");
     }

     @Test public void testGetPerson(){
      Person person=ipersonservice.getPerson(1);
      System.out.println(person.getName());
     }
     
     @Test public void testUpdate(){
      Person person=ipersonservice.getPerson(1);
      person.setName("小麗");
      ipersonservice.update(person);
     }
     
     @Test public void testGetPersons(){
      List<Person> persons=ipersonservice.getPersons();
      for(Person person : persons){
       System.out.println(person.getId()+"  :" +person.getName());
      }
     }
     
     @Test public void testDelete(){
      ipersonservice.delete(1);
     }
    }

    table :person
    id  int
    name varchar

    posted @ 2009-09-13 16:38 笑口常開、財源滾滾來! 閱讀(440) | 評論 (0)編輯 收藏
     
    接口

    package cn.itcast.service;

    import java.util.List;

    import cn.itcast.bean.Person;

    public interface IPersonService {

     public void save(Person person);
     
     public void update(Person person);
     
     public void delete(int personId);
     
     public Person getPerson(int personId);
     
     public List<Person> getPersons();
    }

    實現類:

    package cn.itcast.service.impl;

    import java.util.List;

    import javax.annotation.Resource;
    import javax.sql.DataSource;

    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;

    import cn.itcast.bean.Person;
    import cn.itcast.service.IPersonService;


    @Transactional
    public class PersonServiceImpl implements IPersonService {

     private JdbcTemplate jdbcTemplete;

     // private DataSource datasource;
    @Resource
     public void setDatasource(DataSource datasource) {
      this.jdbcTemplete = new JdbcTemplate(datasource);
     }

     public void delete(int personId) {
      this.jdbcTemplete
        .update("delete from  person where id=?",
          new Object[] { personId },
          new int[] { java.sql.Types.INTEGER });

     }

     public Person getPerson(int personId) {
      return (Person) this.jdbcTemplete.queryForObject(
        "select * from person where id=?", new Object[] { personId },
        new int[] { java.sql.Types.INTEGER }, new PersonRowMapper());

     }

     @SuppressWarnings("unchecked")
     public List<Person> getPersons() {

      return (List<Person>) this.jdbcTemplete.query("select * from person",
        new PersonRowMapper());

     }

     public void save(Person person) {
      System.out.println(person.getName());

      this.jdbcTemplete.update("insert into person(name) values(?)",
        new Object[] { person.getName() },
        new int[] { java.sql.Types.VARCHAR });

     }

     public void update(Person person) {
      this.jdbcTemplete.update("update person set name=? where id=?",
        new Object[] { person.getName(), person.getId() }, new int[] {
          java.sql.Types.VARCHAR, java.sql.Types.INTEGER });

     }

    }


    實體類:

    package cn.itcast.bean;

    public class Person {

     private int id;
     
     private String name;

     public Person() {
      
     }

     public Person(String name) {
     
      this.name = name;
     }

     public int getId() {
      return id;
     }

     public void setId(int id) {
      this.id = id;
     }

     public String getName() {
      return name;
     }

     public void setName(String name) {
      this.name = name;
     }
    }



    package cn.itcast.service.impl;

    import java.sql.ResultSet;
    import java.sql.SQLException;

    import org.springframework.jdbc.core.RowMapper;

    import cn.itcast.bean.Person;

    public class PersonRowMapper implements RowMapper {

     public Object mapRow(ResultSet rs, int index) throws SQLException {
      cn.itcast.bean.Person person=new Person(rs.getString("name"));
      person.setId(rs.getInt("id"));
      
      return person;
     }

    }


    配置文件:

    <?xml version="1.0" encoding="UTF-8"?>

    <!--
     - Application context definition for JPetStore's business layer.
     - Contains bean references to the transaction manager and to the DAOs in
     - dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").
    -->
    <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:context="http://www.springframework.org/schema/context"
     xmlns:aop="http://www.springframework.org/schema/aop"
     xmlns:tx="http://www.springframework.org/schema/tx"
     xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
     <aop:aspectj-autoproxy proxy-target-class="true"/>

     
     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
      <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/>
      <property name="url" value="jdbc:mysql://localhost:3306/itcast?useUnicode=true&amp;characterEncoding=UTF-8"/>
      <property name="username" value="root"/>
      <property name="password" value=""/>
      <!-- 連接池啟動時的初始值 -->
      <property name="initialSize" value="1"/>
      <!-- 連接池的最大值 -->
      <property name="maxActive" value="500"/>
      <!-- 最大空閑值.當經過一個高峰時間后,連接池可以慢慢將已經用不到的連接慢慢釋放一部分,一直減少到maxIdle為止 -->
      <property name="maxIdle" value="2"/>
      <!--  最小空閑值.當空閑的連接數少于閥值時,連接池就會預申請去一些連接,以免洪峰來時來不及申請 -->
      <property name="minIdle" value="1"/>
     </bean>


     <bean id="txManager"
      class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="dataSource" />
     </bean>

     <tx:annotation-driven transaction-manager="txManager" />


     <bean id="personServiceImpl"
      class="cn.itcast.service.impl.PersonServiceImpl">
      <property name="datasource" ref="dataSource" />
     </bean>

    </beans>

    測試類:

    package junit.test;


    import java.util.List;

    import org.junit.BeforeClass;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;

    import cn.itcast.bean.Person;
    import cn.itcast.service.IPersonService;

    public class TestSpringAndJdbc {

     public static IPersonService iPersonService;
     @BeforeClass
     public static void setUpBeforeClass() throws Exception {
      ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
      iPersonService=(IPersonService)ctx.getBean("personServiceImpl");
     }
     @Test
     public void TestSave(){
      for(int i=1;i<5;i++){
       iPersonService.save(new Person("傳智博客"+i));
      }
      
     }
     @Test
     public void TestFindPerson(){
      
      iPersonService.getPerson(1);
      System.out.println(iPersonService.getPerson(1).getName());
     }
     
     @Test
     public void TestUpdate(){
      Person person=iPersonService.getPerson(1);//通過id取得person對象
      person.setName("張三");//設置名字
      iPersonService.update(person);//更新
     }
     
     @Test
     public void TestDelete(){
      Person person=iPersonService.getPerson(2);
      iPersonService.delete(person.getId());
     }

     @Test
     public void testFindAllPeron(){
      List<Person> list=iPersonService.getPersons();
      for(Person person:list){
       System.out.println(person.getId()+"  "+person.getName());
      }
     }
    }







    posted @ 2009-09-03 16:03 笑口常開、財源滾滾來! 閱讀(241) | 評論 (0)編輯 收藏
     
    主站蜘蛛池模板: 亚洲国产成人久久综合一 | 四虎影视久久久免费观看| 国产亚洲精品资在线| 久久99热精品免费观看牛牛| 亚洲天堂免费在线| 亚洲成aⅴ人片久青草影院| 久久免费看少妇高潮V片特黄| 中国china体内裑精亚洲日本| 亚洲人妻av伦理| 免免费国产AAAAA片| 香蕉视频在线观看免费| 亚洲国产一区在线| 午夜毛片不卡免费观看视频| 最近免费中文字幕中文高清| 亚洲欧洲无码AV不卡在线| 亚洲精品色午夜无码专区日韩| 成人超污免费网站在线看| 国产午夜免费高清久久影院| 久久亚洲欧美国产精品| 亚洲精品无码久久毛片波多野吉衣| vvvv99日韩精品亚洲| 一个人在线观看视频免费| 国产日韩AV免费无码一区二区| 亚洲av日韩av永久无码电影 | 国产成人精品亚洲2020| 国产精品亚洲а∨无码播放| 日本不卡高清中文字幕免费| h视频在线观看免费完整版| 久久久久久毛片免费看| 亚洲av无码专区在线电影| 久久国产亚洲精品无码| 中文字幕亚洲无线码a| 日本特黄a级高清免费大片| 亚洲免费观看网站| 精品国产麻豆免费人成网站| 免费VA在线观看无码| 亚洲人成网站18禁止| 亚洲欧洲日韩在线电影| 亚洲爱情岛论坛永久| 中文字幕亚洲第一| 亚洲伊人成无码综合网|