ice world

          There is nothing too difficult if you put your heart into it.
          posts - 104, comments - 103, trackbacks - 0, articles - 0

          以前都是用SSH框架,spring借助的是Tomcat的dbcp數據源,最近做網站也沒用什么框架,直接Sservlet+JSP,依舊用的 Tomcat的dbcp做數據源,經常發現網絡不好時連接就獲取不到了,那是因為池子中的連接都已經無效了,Tomcat數據源的自動重連貌似配置較為復雜,很多人建議用proxool做數據源,下面是proxool的配置方法:

          1.下載proxool,自己到網站http://proxool.sourceforge.net/download.html隨便下載一個版本,解壓后進入目錄lib,會得到兩個jar文件,分別為proxool-0.9.1.jar(版本不同可能名稱有所不同)和proxool-cglib.jar,將這兩個jar文件拷貝到項目的WEB-INF/lib下

          2.配置web.xml,需要配置proxool的Servlet,如下:

          <servlet>
              
          <servlet-name>proxoolServletConfigurator</servlet-name>
              
          <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator
              
          </servlet-class>
              
          <init-param>
                  
          <param-name>xmlFile</param-name>
                  
          <param-value>WEB-INF/proxool.xml</param-value>
              
          </init-param>
              
          <load-on-startup>1</load-on-startup>
          </servlet>
          <servlet>
              
          <servlet-name>proxooladmin</servlet-name>
              
          <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet
              
          </servlet-class>
          </servlet>
          <servlet-mapping>
              
          <servlet-name>proxooladmin</servlet-name>
              
          <url-pattern>/proxooladmin</url-pattern>
          </servlet-mapping>


          3.創建proxool.xml文件,將此文件放在與web.xml同級目錄下,即WEB-INF下

          <?xml version="1.0" encoding="UTF-8"?>
          <something-else-entirely>
              
          <proxool>
                  
          <alias>testDB</alias>
                  
          <driver-url>jdbc:oracle:thin:@192.168.1.229:1521:orcl</driver-url>
                  
          <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
                  
          <driver-properties>
                      
          <property name="user" value="test_user" />
                      
          <property name="password" value="password" />
                  
          </driver-properties>
                  
          <maximum-connection-count>10</maximum-connection-count>
                  
          <minimum-connection-count>5</minimum-connection-count>
                  
          <prototype-count>5</prototype-count>
                  
          <test-before-use>true</test-before-use>
                  
          <house-keeping-sleep-time>180000</house-keeping-sleep-time>
                  
          <house-keeping-test-sql>select CURRENT_DATE from dual</house-keeping-test-sql>
              
          </proxool>
          </something-else-entirely>

          上面的<test-before-use>true</test-before-use>據說是用來自動重連的,也就是在網絡錯誤或數據庫重啟等等原因導致與數據庫斷開,每次獲取連接前都會檢查,如果現在池子中的連接已經無效將會重新創建


          4.在java中獲取數據庫連接的代碼

          Connection con = DriverManager.getConnection("proxool.testDB");


          posted @ 2011-04-16 14:11 IceWee 閱讀(393) | 評論 (0)編輯 收藏

          這些日子一直在使用visio畫軟件界面,今個是禮拜一,早早來到公司就開始畫,當選中某個元素/對象后,按“方向鍵”進行微調時竟然不管用,伴隨的是滾動條來回滾動,上網一查,原來是不小心按到了“scroll num lock”鍵,再按一次,果然正常了。

          posted @ 2011-04-16 14:05 IceWee 閱讀(2661) | 評論 (1)編輯 收藏

          今天遇到了一個很頭疼的問題,整整找了一個下午解決方案,原本就是一個table里有兩行,可第一行的內容就是和底邊有很大的空間,因為用到了表格控件,內容都是動態生成的,最后查看源代碼,是控件自動增加了一個form標簽,問題就出現在這個form標簽上。

          其實我有遇到過form會占空間的情況,但一直沒解決方案,今天終于找到了兩種:

          第一種,通過HTML寫死的方式,不要將form標簽方到<tr><td>的里面或者外面,應該這樣<tr><form><td>

          第二種,通過CSS的方式,在form標簽里增加樣式:<form style="margin: 0; padding: 0;">

          我是用第二種方式解決的,比較靠譜一些

          posted @ 2011-04-16 14:03 IceWee 閱讀(255) | 評論 (0)編輯 收藏

          安裝Adobe Reader的時候拋出了這個提示,導致安裝失敗!

          首先,我是在虛擬機上安裝AR,虛擬機上只有一個磁盤C,安裝的番茄花園SP3系統。

          解決方法:

          開始-運行,輸入regedit后回車,進入注冊表編輯器

          編輯-查找,輸入“D:\”,會發現有很多鍵值是指向D盤的,而當前系統只有C盤,自然找不到,將所有的D修改成C后就可以了。

          posted @ 2011-04-16 14:02 IceWee 閱讀(219) | 評論 (0)編輯 收藏

          最近項目中需要用到jfreechart,以前只是簡單的玩玩而已,一直沒有真正的應用到實際項目中,今天在畫圖的時候可把自己折磨慘了,就一個小小的tooltip死活不出來。


          我用的Spring + Struts,有很多人用jfreechart都是寫的Servlet,其實用Struts是一樣的。

          我起初在Struts的Action中使用org.jfree.chart.ChartUtilities。writeChartAsPNG(java.io.OutputStream out, JFreeChart chart, int width, int height) 方法,將生成的JFreeChart對象寫到輸出流中,return自然是null,這樣做界面可以顯示Action寫過來的圖片,但是沒有 tooltip的出現。后來我發現很多人都不是直接把圖片寫到流中的,而是在JSP頁面通過<img>標簽來顯示圖片的。于是我也使用了主流方式顯示圖片,使用chartName = ServletUtilities.saveChartAsPNG(chart, width, height, info, session);將圖片文件名設置請求屬性發給JSP頁面,頁面通過圖片標簽顯示圖片,結果圖片依舊顯示正常,但是tooltip還是沒有出來,由于剛剛用這東西,一點都不了解,于是開以往項目中是如何寫的,我發現別人的代碼中有這樣一行:ChartUtilities.writeImageMap(pw, chartName, info, false);這是將圖片地圖寫到流中,而且頁面的圖片標簽中也多了個usermap屬性,我仿佛有點清醒了,于是效仿著做了一下,tooltip果真出現了。

          JSP代碼:

          <%    
                  JFreeChart chart 
          = (JFreeChart)request.getAttribute("chart");    
                  
          String chartName = Common.generateChart(chart, session, new PrintWriter(out), 760410);
          %>


          Common的generateChart方法就是放回圖片的文件名,并且將圖片地圖寫入到當前的流中。

          Java代碼:

          public static String generateChart(JFreeChart chart, HttpSession session,
                      PrintWriter pw, 
          int width, int height) {
                  String chartName 
          = "";
                  
          try {
                      ChartRenderingInfo info 
          = new ChartRenderingInfo(
                              
          new StandardEntityCollection());
                      chartName 
          = ServletUtilities.saveChartAsPNG(chart, width, height,
                              info, session);
                      
          /** 將圖片地圖寫入PW中 */
                      ChartUtilities.writeImageMap(pw, chartName, info, 
          false);
                      pw.flush();
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }

                  
          return chartName;
              }


          起初我并沒有使用Common這個方法,而是直接將這個方法中的代碼寫在了Struts的Action中,發現無效,而且在pw.flush()一行出現了異常,流這里太爛!哎!提示刷新后就不能再return了。于是去掉這行后圖片正常顯示,但沒有tooltip。我懷疑是Struts中用 response獲取的PrintWriter并不是返回到JSP中用out封裝的PrintWriter,根本就不是,還懷疑什么,這不是廢話嘛!所以在當前流中并沒有圖片地圖,自然不顯示tooltip了。

          顯示圖片的IMG標簽

          <img src="<%=request.getContextPath()%>/<%=chartName%>" height="100%" border=0 usemap="#<%=chartName%>" >



          posted @ 2011-04-16 13:59 IceWee 閱讀(934) | 評論 (0)編輯 收藏

          最近項目中使用了window.open()函數打開新窗口,并且在新的窗口中進行一系列操作,當然要涉及到表單的提交與返回,頁面跟隨刷新,我的機器上測試通過,我用IE7。但是發布到服務器上發現,彈出的窗口中頁面不刷新,也就是表單沒有提交,不!表單已經提交了,而是頁面沒有返回,頁面只是閃了一下,頁面還是那個頁面。這肯定又是IE版本導致的問題。看似沒什么代碼與IE版本關系那么大啊?!最后發現,以前程序里連接觸發JS函數 href里寫的都是“#”,而我寫的則是“javascript:void(0)”,會不會是這里的問題呢!于是我將“#”替換了 “javascript:void(0)”,OK!萬事大吉!果然是這個小東西在搗鬼!

          IE6:<a href="#" onclick="func()">xxx</a>

          IE7:<a href="#" onclick="func()">xxx</a> 或者 <a href="javascript:void(0)" onclick="func()">xxx</a>

          posted @ 2011-04-16 13:50 IceWee 閱讀(333) | 評論 (0)編輯 收藏

               摘要: 仿照騰訊的Token寫的驗證碼生成程序Java類代碼: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->package icewee.image;import java.awt.BasicStroke;import ja...  閱讀全文

          posted @ 2011-04-16 13:49 IceWee 閱讀(317) | 評論 (0)編輯 收藏

          今天下午公司內部搞了一個小調查,每名員工都要將自己填好的文檔上傳,其中就遇到了這個方框打勾的問題,需要在復選中打勾以表示自己的選擇,這下可給廣大同志們出了個小題兒,列出方案:

          完美指數:★★★★★

          方案3,使用word的高級功能域,一般人沒用過吧!

          域代碼:eq \o\ac(□,√),使用方法:工具欄-插入-域,將代碼拷貝到“{}”中后按一下F9就可以看到效果了。

          完美指數:★★★☆☆

          方案2,用畫圖軟件將兩個符號疊加,美中不足的是變成了圖片而不再是符號。

          完美指數:★★☆☆☆

          方案1,先添加符號“√”,選中對號后點擊word工具欄上的字符邊框,就是那個A

          posted @ 2011-04-16 13:40 IceWee 閱讀(4742) | 評論 (0)編輯 收藏

          最近有個小項目中自己負責word報表的生成,開發語言是C#,我是做JAVA的,臨時用一下而已。發現微軟的在線MSDN是個好東西,很強大,基本需要的東西都在里面可以找到,比如word的創建、打開、關閉等等一系列的操作DEMO代碼。

          我主要是將現有的模板填入數據保存文檔即可。主題是TABLE填值,檢索TABLE主要是通過下標,如:

          WordDoc.Tables[6]

          其中WordDoc的類型是Word.Document,就是當前操作的word文檔,上面的代碼是獲取當前文檔中的第六個表格,這里要注意一下, 我們慣性會認為是第七個表格,但這就是微軟的不同,沒有采用數組索引的方式,如果當初數組也這么設計,下標從1開始,我們學習的時候不知道省多少事。

          開發過程中遇到了一個小難題就是合并單元格(縱向),沒有設計橫向的合并,現將合并的代碼貼出來備用:

          /// <summary>
          /// 縱向單元格合并 
          /// 說明:如合并了第一行第一列和第二行第一列兩個單元格,則單元格cell(2, 1)已經不存在,繼續操作會有異常, 
          /// 只有通過cell(1, 1)來獲取合并后的單元格 
          /// /<summary>
          /// <param name="table"></param>
          /// <param name="startRowIndex"></param>
          /// <param name="columnIndex"></param>

          private static void verticalCellMerge(Word.Table table, int startRowIndex, int columnIndex)
          {    
              
          string previousText = table.Cell(startRowIndex++, columnIndex).Range.Text;    // 保存對比文字    
              int previousRowIndex = startRowIndex - 1;    // 因剛已經+1了,所以再減回去    
              for (int i = startRowIndex; i <= table.Rows.Count; ++i) // 遍歷所有行的columnIndex列,發現相同的合并,從起始行的下一行開始對比    
              {        
                  
          string currentText = table.Cell(i, columnIndex).Range.Text;        
                  
          if (previousText.Equals(currentText))        
                  
          {            
                      table.Cell(previousRowIndex, columnIndex).Merge(table.Cell(i, columnIndex)); 
          // 合并先前單元格和當前單元格            
                      table.Cell(previousRowIndex, columnIndex).Range.Text = currentText;    // 因為合并后并沒有將單元格內容去除,需要手動修改            
                      table.Cell(previousRowIndex, columnIndex).Select();            
                      WordApp.Selection.ParagraphFormat.Alignment 
          = WdParagraphAlignment.wdAlignParagraphCenter;    // 水平居中顯示            
                      table.Cell(previousRowIndex, columnIndex).VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; // 垂直居中        
                  }
                  
                  
          else        
                  
          {            
                      previousText 
          = currentText; // 將對比文字替換為當前的內容            
                      previousRowIndex = i;   // 檢索到不同的內容,將當前行下標置為先前行下標,用于合并        
                  }
              
              }

          }


          /// <summary>
          /// 橫向單元格合并
          /// 注意:在合并單元格后必須將縱列數減去1
          /// 如第一行第一列和第一行第二列合并后,原第一行第三列將變成第一行第二列,這就是在合并后i不加1的原因
          /// </summary>
          /// <param name="WordApp"></param>
          /// <param name="table"></param>
          /// <param name="startColumnIndex"></param>
          /// <param name="rowIndex"></param>

          private static void horizontalCellMerge(Word.Application WordApp, Word.Table table, int startColumnIndex, int rowIndex)
          {    
              
          string previousText = table.Cell(rowIndex, startColumnIndex).Range.Text;    // 保存對比文字    
              int previousColumnIndex = startColumnIndex++;    // 保存先前對比列下標    
              int colCount = table.Columns.Count;    
              
          for (int i = startColumnIndex; i <= colCount;) // 遍歷所有行的columnIndex列,發現相同的合并,從起始行的下一行開始對比    
              {        
                  
          string currentText = table.Cell(rowIndex, i).Range.Text;        
                  
          if (previousText.Equals(currentText))        
                  
          {            
                      table.Cell(rowIndex, previousColumnIndex).Merge(table.Cell(rowIndex, i)); 
          // 合并先前單元格和當前單元格            
                      table.Cell(rowIndex, previousColumnIndex).Range.Text = currentText;    // 因為合并后并沒有將單元格內容去除,需要手動修改            
                      table.Cell(rowIndex, previousColumnIndex).Select();            
                      WordApp.Selection.ParagraphFormat.Alignment 
          = WdParagraphAlignment.wdAlignParagraphCenter;    // 水平居中顯示            
                      table.Cell(rowIndex, previousColumnIndex).VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; // 垂直居中            
                      --colCount;        
                  }
                  
                  
          else        
                  
          {            
                      previousText 
          = currentText; // 將對比文字替換為當前的內容            
                      previousColumnIndex = i++;   // 檢索到不同的內容,將當前行下標置為先前行下標,用于合并        
                  }
              
              }

          }

          方法注釋已經很詳細就不再贅述。

          最后遇到的問題是無格式的段落檢索,因為在生成報告的時候需要在某些段落后填寫測試的結論,這下又把我難住了,最終終于發現了bookmark這個東東,起始我對word并不熟悉,都不知道它有書簽的功能。順便就愛你個檢索書簽的方法貼出來:

          /// <summary>
          /// 在整個文檔中根據書簽名檢索書簽對象
          /// </summary>
          /// <param name="name"></param>

          private static Word.Bookmark getBookmarkByName(string name)  
          {      
              
          foreach (Word.Bookmark bm in WordDoc.Bookmarks)      
              
          {          
                  
          if (bm.Name.Equals(name))              
                      
          return bm;          
                  }
                    
                  
          return null;      
              }
            


          例:

          Word.Bookmark bm = getBookmarkByName(bookmarkName);  
          bm.Range.Text 
          = "你好"// 將檢索到書簽的內容替換為“你好”

          這就是這次用C#做word報表的全部問題,貌似都是小問題。

          最后需要看具體的word操作demo代碼請訪問MSDN,貼個網址:

          http://msdn.microsoft.com/zh-cn/library/78whx7s6(VS.80).aspx

          posted @ 2011-04-16 13:38 IceWee 閱讀(1188) | 評論 (0)編輯 收藏

          今天無聊,想起了《大鵬嘚吧嘚》,于是用我的藍牙耳機連上筆記本,戴上耳機后發現沒有聲音,但是看本地磁盤的視頻或聽歌都有聲音的,難道我的藍牙耳機不支持在線視頻?于是摘掉藍牙,用外放,竟然也沒有聲音!!!暈了!!!百度之。。。得果:

          開始->運行->鍵入 regedit 找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32 新建一個字符串值,名為"wavemapper" 值為:“msacm32.drv“.

          posted @ 2011-04-16 13:30 IceWee 閱讀(259) | 評論 (0)編輯 收藏

          僅列出標題
          共11頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 
          主站蜘蛛池模板: 吉水县| 界首市| 黔西县| 高陵县| 化州市| 兴义市| 博野县| 乌兰县| 枣强县| 前郭尔| 托克托县| 长兴县| 杨浦区| 和林格尔县| 岳阳市| 宝丰县| 板桥市| 铜梁县| 和龙市| 德格县| 马鞍山市| 扶风县| 静乐县| 平江县| 禄丰县| 峨山| 泰宁县| 那曲县| 遵化市| 赤峰市| 晋城| 大石桥市| 南召县| 平邑县| 邹平县| 林口县| 扎鲁特旗| 河津市| 卓尼县| 英德市| 上高县|